<?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>197243</bug_id>
          
          <creation_ts>2019-04-24 13:50:49 -0700</creation_ts>
          <short_desc>[RemoteInspector] Fix connection and target identifier types.</short_desc>
          <delta_ts>2019-04-25 11:55:35 -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>Platform</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="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>basuke</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1530131</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2019-04-24 13:50:49 -0700</bug_when>
    <thetext>The type ClientID and connection id delivered in the event body is interchangeable so that they have to be same type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530136</commentid>
    <comment_count>1</comment_count>
      <attachid>368174</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2019-04-24 14:01:12 -0700</bug_when>
    <thetext>Created attachment 368174
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530146</commentid>
    <comment_count>2</comment_count>
      <attachid>368174</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2019-04-24 14:20:40 -0700</bug_when>
    <thetext>Comment on attachment 368174
PATCH

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

&gt; Source/JavaScriptCore/inspector/remote/socket/RemoteInspectorConnectionClient.cpp:65
&gt; +    unsigned targetID;

Do you want to do the same to TargetID while you&apos;re here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530159</commentid>
    <comment_count>3</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2019-04-24 14:32:14 -0700</bug_when>
    <thetext>Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530201</commentid>
    <comment_count>4</comment_count>
      <attachid>368189</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2019-04-24 15:21:34 -0700</bug_when>
    <thetext>Created attachment 368189
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530210</commentid>
    <comment_count>5</comment_count>
      <attachid>368189</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-04-24 15:33:00 -0700</bug_when>
    <thetext>Comment on attachment 368189
PATCH

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

&gt; Source/JavaScriptCore/inspector/remote/RemoteControllableTarget.h:41
&gt; +using TargetID = unsigned;

Should this be changed to uint32_t as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530215</commentid>
    <comment_count>6</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2019-04-24 15:41:46 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #5)
&gt; Comment on attachment 368189 [details]
&gt; PATCH
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=368189&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/remote/RemoteControllableTarget.h:41
&gt; &gt; +using TargetID = unsigned;
&gt; 
&gt; Should this be changed to uint32_t as well?

I intentionally leave that as is because there&apos;s no assumption that `unsigned` is  uint32_t (of course it is correct for known compilers).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530218</commentid>
    <comment_count>7</comment_count>
      <attachid>368193</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2019-04-24 15:46:10 -0700</bug_when>
    <thetext>Created attachment 368193
Test for GTK/WPE and Mac/iOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530437</commentid>
    <comment_count>8</comment_count>
      <attachid>368249</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2019-04-25 11:03:56 -0700</bug_when>
    <thetext>Created attachment 368249
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530466</commentid>
    <comment_count>9</comment_count>
      <attachid>368249</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-25 11:54:23 -0700</bug_when>
    <thetext>Comment on attachment 368249
Patch for landing

Clearing flags on attachment: 368249

Committed r244657: &lt;https://trac.webkit.org/changeset/244657&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530467</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-25 11:54:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530468</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-25 11:55:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/50213703&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368174</attachid>
            <date>2019-04-24 14:01:12 -0700</date>
            <delta_ts>2019-04-24 14:48:21 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>197243.diff</filename>
            <type>text/plain</type>
            <size>23793</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGYxYWUyMmJkYWFmLi43MTMzYzM3ZjkyOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTktMDQtMjQgIEJhc3Vr
ZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgorCisgICAgICAgIFtQbGF5U3RhdGlv
bl1bUmVtdG90ZUluc3BlY3Rvcl0gRml4IGNvbm5lY3Rpb24gaWRlbnRpZmllciB0eXBlcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzI0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBDbGll
bnRJRCB0eXBlIHRvIENvbm5lY3Rpb25JRCBiZWNhdXNlIHRoaXMgaXMgdGhlIGlkZW50aWZpZXIg
c29ja2V0IGVuZHBvaW50IGFzc2lnbgorICAgICAgICB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb25u
ZWN0aW9uLiBUaGUgc2l6ZSB3YXMgY2hhbmdlZCB0byB1aW50MzJfdC4gRW5vdWdoIHNpemUgb2Yg
Y29ubmVjdGlvbi4KKworICAgICAgICBBbHNvIGNoYW5nZSB0eXBlIG9mIHRhcmdldElEIHRvIHVu
c2lnbmVkIHdoaWNoIGlzIG9yaWdpbmFsbHkgdXNlZCBpbiBSZW1vdGVDb250cm9sbGFibGVUYXJn
ZXQuCisgICAgICAgIEV2ZXJ5IHRhcmdldCBpZGVudGlmaWVyIGlzIHVuc2lnbmVkLgorCisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6ZGlk
UmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50Lmg6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZEFjY2VwdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2FnZVBhcnNlci5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6Ok1lc3NhZ2VQYXJzZXI6Ok1lc3NhZ2VQYXJzZXIpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpNZXNzYWdlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2FnZVBhcnNlci5oOgorICAg
ICAgICAoSW5zcGVjdG9yOjpNZXNzYWdlUGFyc2VyOjpzZXREaWRQYXJzZU1lc3NhZ2VMaXN0ZW5l
cik6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2Vy
dmVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpkaWRB
Y2NlcHQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmRpZENs
b3NlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpkaXNwYXRj
aE1hcCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2VuZFdl
Ykluc3BlY3RvckV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2Vy
dmVyOjpzZW5kQ2xvc2VFdmVudCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
clNlcnZlcjo6Y29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpkaWRDbG9zZSk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y29ubmVjdEluZXQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6aXNMaXN0ZW5p
bmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6
d29ya2VyVGhyZWFkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0
RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50OjpyZWN2SWZFbmFibGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmRJZkVuYWJsZWQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2VuZCk6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjphY2NlcHRJbmV0U29j
a2V0SWZFbmFibGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oOgorCiAyMDE5LTA0LTIyICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIHZvbGF0aWxlIGxvYWQgdG8g
cG9wdWxhdGUgYmFja2luZyBwYWdlIGluIE1hcmtlZEJsb2NrOjpGb290ZXIgaW5zdGVhZCBvZiB1
c2luZyBob2xkTG9jawpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCA1ZTViODYyZTY5My4uM2ZjNTBkMzNl
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3Rvci5oCkBAIC0yMDYsMTQgKzIwNiwxNCBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCiAgICAgSGFzaE1hcDxTdHJpbmcsIENhbGxI
YW5kbGVyPiYgZGlzcGF0Y2hNYXAoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZENsb3NlKENsaWVu
dElEKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENsb3NlKENvbm5lY3Rpb25JRCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHNlbmRXZWJJbnNwZWN0b3JFdmVudChjb25zdCBTdHJpbmcmKTsKIAotICAg
IHZvaWQgcmVjZWl2ZWRHZXRUYXJnZXRMaXN0TWVzc2FnZShjb25zdCBzdHJ1Y3QgRXZlbnQmKTsK
LSAgICB2b2lkIHJlY2VpdmVkU2V0dXBNZXNzYWdlKGNvbnN0IHN0cnVjdCBFdmVudCYpOwotICAg
IHZvaWQgcmVjZWl2ZWREYXRhTWVzc2FnZShjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKLSAgICB2b2lk
IHJlY2VpdmVkQ2xvc2VNZXNzYWdlKGNvbnN0IHN0cnVjdCBFdmVudCYpOworICAgIHZvaWQgcmVj
ZWl2ZWRHZXRUYXJnZXRMaXN0TWVzc2FnZShjb25zdCBFdmVudCYpOworICAgIHZvaWQgcmVjZWl2
ZWRTZXR1cE1lc3NhZ2UoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIHJlY2VpdmVkRGF0YU1lc3Nh
Z2UoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIHJlY2VpdmVkQ2xvc2VNZXNzYWdlKGNvbnN0IEV2
ZW50Jik7CiAjZW5kaWYKICAgICBzdGF0aWMgYm9vbCBzdGFydEVuYWJsZWQ7CiAKQEAgLTIzOCw3
ICsyMzgsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludD4gbV9zb2NrZXRDb25uZWN0
aW9uOwogICAgIHN0YXRpYyBQbGF0Zm9ybVNvY2tldFR5cGUgc19jb25uZWN0aW9uSWRlbnRpZmll
cjsKLSAgICBPcHRpb25hbDxDbGllbnRJRD4gbV9jbGllbnRJRDsKKyAgICBPcHRpb25hbDxDb25u
ZWN0aW9uSUQ+IG1fY2xpZW50SUQ7CiAjZW5kaWYKIAogICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xp
ZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xp
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcAppbmRleCA3NjVjN2I0MGEyMy4uMTlh
ZjZjNDE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
Q29ubmVjdGlvbkNsaWVudC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6ZGlkUmVjZWl2
ZVdlYkluc3BlY3RvckV2ZW50KENsaWVudElEIGNsaWVudElELCBWZWN0b3I8dWludDhfdD4mJiBk
YXRhKQordm9pZCBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpkaWRSZWNlaXZlV2Vi
SW5zcGVjdG9yRXZlbnQoQ29ubmVjdGlvbklEIGNsaWVudElELCBWZWN0b3I8dWludDhfdD4mJiBk
YXRhKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCkBAIC01NSwxNCArNTUsMTQg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpkaWRSZWNlaXZlV2ViSW5z
cGVjdG9yRXZlbnQoQ2xpZW50SUQgY2xpZW4KICAgICBpZiAoIW1lc3NhZ2VPYmplY3QtPmdldFN0
cmluZygiZXZlbnQiX3MsIG1ldGhvZE5hbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdHJ1
Y3QgRXZlbnQgZXZlbnQ7CisgICAgRXZlbnQgZXZlbnQ7CiAgICAgZXZlbnQuY2xpZW50SUQgPSBj
bGllbnRJRDsKIAotICAgIHVpbnQ2NF90IGNvbm5lY3Rpb25JRDsKKyAgICBDb25uZWN0aW9uSUQg
Y29ubmVjdGlvbklEOwogICAgIGlmIChtZXNzYWdlT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb25uZWN0
aW9uSUQiX3MsIGNvbm5lY3Rpb25JRCkpCiAgICAgICAgIGV2ZW50LmNvbm5lY3Rpb25JRCA9IGNv
bm5lY3Rpb25JRDsKIAotICAgIHVpbnQ2NF90IHRhcmdldElEOworICAgIHVuc2lnbmVkIHRhcmdl
dElEOwogICAgIGlmIChtZXNzYWdlT2JqZWN0LT5nZXRJbnRlZ2VyKCJ0YXJnZXRJRCJfcywgdGFy
Z2V0SUQpKQogICAgICAgICBldmVudC50YXJnZXRJRCA9IHRhcmdldElEOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yQ29ubmVjdGlvbkNsaWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuaAppbmRleCA3
YTZhMDJiMDBmMi4uYTc2YjIxNGVhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuaApAQCAtMzUsMTggKzM1LDE4IEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ+
IHsKIHB1YmxpYzoKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJJbnNwZWN0b3JFdmVudChDbGllbnRJ
RCwgVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRBY2NlcHQoQ2xpZW50
SUQsIFNvY2tldDo6RG9tYWluKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKENsaWVu
dElEKSA9IDA7CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViSW5zcGVjdG9yRXZlbnQoQ29ubmVjdGlv
bklELCBWZWN0b3I8dWludDhfdD4mJik7CisgICAgdmlydHVhbCB2b2lkIGRpZEFjY2VwdChDb25u
ZWN0aW9uSUQsIFNvY2tldDo6RG9tYWluKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3Nl
KENvbm5lY3Rpb25JRCkgPSAwOwogCiAgICAgc3RydWN0IEV2ZW50IHsKLSAgICAgICAgQ2xpZW50
SUQgY2xpZW50SUQ7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBjb25uZWN0aW9uSUQ7Ci0g
ICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB0YXJnZXRJRDsKKyAgICAgICAgQ29ubmVjdGlvbklE
IGNsaWVudElEIHsgfTsKKyAgICAgICAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBjb25uZWN0aW9u
SUQ7CisgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0YXJnZXRJRDsKICAgICAgICAgT3B0aW9u
YWw8U3RyaW5nPiBtZXNzYWdlOwogICAgIH07CiAKLSAgICB1c2luZyBDYWxsSGFuZGxlciA9IHZv
aWQgKFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OiopKGNvbnN0IHN0cnVjdCBFdmVu
dCYpOworICAgIHVzaW5nIENhbGxIYW5kbGVyID0gdm9pZCAoUmVtb3RlSW5zcGVjdG9yQ29ubmVj
dGlvbkNsaWVudDo6KikoY29uc3QgRXZlbnQmKTsKICAgICB2aXJ0dWFsIEhhc2hNYXA8U3RyaW5n
LCBDYWxsSGFuZGxlcj4mIGRpc3BhdGNoTWFwKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3Rv
ck1lc3NhZ2VQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3Rvck1lc3NhZ2VQYXJzZXIuY3BwCmluZGV4IDA1MDlkY2Fk
ZTliLi4xYmNjZjlkZTFhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3Rvck1lc3NhZ2VQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JNZXNzYWdlUGFyc2VyLmNwcApAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKICAgICAgICAgICAgICAgIHwgPC0tLS0tLS0tLS0tLSBzaXplIC0tLS0tLS0tLS0tLT4g
fAogKi8KIAotTWVzc2FnZVBhcnNlcjo6TWVzc2FnZVBhcnNlcihDbGllbnRJRCBjbGllbnRJRCwg
c2l6ZV90IGJ1ZmZlclNpemUpCi0gICAgOiBtX2NsaWVudElEKGNsaWVudElEKQorTWVzc2FnZVBh
cnNlcjo6TWVzc2FnZVBhcnNlcihDb25uZWN0aW9uSUQgaWQsIHNpemVfdCBidWZmZXJTaXplKQor
ICAgIDogbV9jb25uZWN0aW9uSUQoaWQpCiB7CiAgICAgbV9idWZmZXIucmVzZXJ2ZUNhcGFjaXR5
KGJ1ZmZlclNpemUpOwogfQpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgTWVzc2FnZVBhcnNlcjo6
cGFyc2UoKQogICAgICAgICBtZW1jcHkoJmRhdGFCdWZmZXJbMF0sICZtX2J1ZmZlcltzaXplb2Yo
dWludDMyX3QpXSwgZGF0YVNpemUpOwogCiAgICAgICAgIGlmIChtX2RpZFBhcnNlTWVzc2FnZUxp
c3RlbmVyKQotICAgICAgICAgICAgbV9kaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcihtX2NsaWVudElE
LCBXVEZNb3ZlKGRhdGFCdWZmZXIpKTsKKyAgICAgICAgICAgIG1fZGlkUGFyc2VNZXNzYWdlTGlz
dGVuZXIobV9jb25uZWN0aW9uSUQsIFdURk1vdmUoZGF0YUJ1ZmZlcikpOwogCiAgICAgICAgIG1f
YnVmZmVyLnJlbW92ZSgwLCBtZXNzYWdlU2l6ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3Rvck1l
c3NhZ2VQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JNZXNzYWdlUGFyc2VyLmgKaW5kZXggZDViMTk4ZTI1M2QuLmFl
MDU5ZmQ4YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2FnZVBhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JNZXNz
YWdlUGFyc2VyLmgKQEAgLTM2LDE4ICszNiwxOCBAQCBjbGFzcyBNZXNzYWdlUGFyc2VyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNyZWF0ZU1lc3NhZ2UoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7CiAKLSAgICBNZXNzYWdlUGFyc2VyKENsaWVudElELCBzaXplX3QpOwor
ICAgIE1lc3NhZ2VQYXJzZXIoQ29ubmVjdGlvbklELCBzaXplX3QpOwogICAgIHZvaWQgcHVzaFJl
Y2VpdmVkRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIHNldERpZFBhcnNl
TWVzc2FnZUxpc3RlbmVyKEZ1bmN0aW9uPHZvaWQoQ2xpZW50SUQsIFZlY3Rvcjx1aW50OF90Pik+
JiYgbGlzdGVuZXIpIHsgbV9kaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lciA9IFdURk1vdmUobGlzdGVu
ZXIpOyB9CisgICAgdm9pZCBzZXREaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcihGdW5jdGlvbjx2b2lk
KENvbm5lY3Rpb25JRCwgVmVjdG9yPHVpbnQ4X3Q+KT4mJiBsaXN0ZW5lcikgeyBtX2RpZFBhcnNl
TWVzc2FnZUxpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lcik7IH0KIAogICAgIHZvaWQgY2xlYXJS
ZWNlaXZlZERhdGEoKTsKIAogcHJpdmF0ZToKICAgICBib29sIHBhcnNlKCk7CiAKLSAgICBGdW5j
dGlvbjx2b2lkKENsaWVudElELCBWZWN0b3I8dWludDhfdD4mJik+IG1fZGlkUGFyc2VNZXNzYWdl
TGlzdGVuZXI7CisgICAgRnVuY3Rpb248dm9pZChDb25uZWN0aW9uSUQsIFZlY3Rvcjx1aW50OF90
PiYmKT4gbV9kaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcjsKICAgICBWZWN0b3I8dWludDhfdD4gbV9i
dWZmZXI7Ci0gICAgQ2xpZW50SUQgbV9jbGllbnRJRDsKKyAgICBDb25uZWN0aW9uSUQgbV9jb25u
ZWN0aW9uSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAKaW5kZXggM2E0NTA5ODNjMDguLjAxNmNiMmQx
Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcApAQCAt
NDQsNyArNDQsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6YWRkU2VydmVyQ29ubmVj
dGlvbihQbGF0Zm9ybVNvY2tldFR5cGUgaWRlbnRpZmllcikKICAgICB9CiB9CiAKLXZvaWQgUmVt
b3RlSW5zcGVjdG9yU2VydmVyOjpkaWRBY2NlcHQoQ2xpZW50SUQgY2xpZW50SUQsIFNvY2tldDo6
RG9tYWluIHR5cGUpCit2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6ZGlkQWNjZXB0KENvbm5l
Y3Rpb25JRCBpZCwgU29ja2V0OjpEb21haW4gdHlwZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKIApAQCAtNTMsMTggKzUzLDE4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU2VydmVy
OjpkaWRBY2NlcHQoQ2xpZW50SUQgY2xpZW50SUQsIFNvY2tldDo6RG9tYWluIHR5cGUpCiAgICAg
ICAgICAgICBMT0dfRVJST1IoIkluc3BlY3RvciBzZXJ2ZXIgY2FuIGFjY2VwdCBvbmx5IDEgY2xp
ZW50Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9jbGllbnRD
b25uZWN0aW9uID0gY2xpZW50SUQ7CisgICAgICAgIG1fY2xpZW50Q29ubmVjdGlvbiA9IGlkOwog
ICAgIH0gZWxzZSBpZiAodHlwZSA9PSBTb2NrZXQ6OkRvbWFpbjo6TG9jYWwpIHsKICAgICAgICAg
TG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKLSAgICAgICAgbV9pbnNwZWN0b3JD
b25uZWN0aW9ucy5hcHBlbmQoY2xpZW50SUQpOworICAgICAgICBtX2luc3BlY3RvckNvbm5lY3Rp
b25zLmFwcGVuZChpZCk7CiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6
ZGlkQ2xvc2UoQ2xpZW50SUQgY2xpZW50SUQpCit2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6
ZGlkQ2xvc2UoQ29ubmVjdGlvbklEIGlkKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgaWYgKGNsaWVudElEID09IG1fY2xpZW50Q29ubmVjdGlvbikgeworICAgIGlmIChp
ZCA9PSBtX2NsaWVudENvbm5lY3Rpb24pIHsKICAgICAgICAgLy8gQ29ubmVjdGlvbiBmcm9tIHRo
ZSByZW1vdGUgY2xpZW50IGNsb3NlZC4KICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpc10g
ewogICAgICAgICAgICAgY2xpZW50Q29ubmVjdGlvbkNsb3NlZCgpOwpAQCAtNzMsMjkgKzczLDI5
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpkaWRDbG9zZShDbGllbnRJRCBjbGllbnRJ
RCkKICAgICB9CiAKICAgICAvLyBDb25uZWN0aW9uIGZyb20gV2ViUHJvY2VzcyBjbG9zZWQuCi0g
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY2xpZW50SURdIHsKLSAgICAgICAgY29ubmVjdGlv
bkNsb3NlZChjbGllbnRJRCk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgaWRdIHsKKyAg
ICAgICAgY29ubmVjdGlvbkNsb3NlZChpZCk7CiAgICAgfSk7CiB9CiAKIEhhc2hNYXA8U3RyaW5n
LCBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpDYWxsSGFuZGxlcj4mIFJlbW90ZUlu
c3BlY3RvclNlcnZlcjo6ZGlzcGF0Y2hNYXAoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+PiBkaXNwYXRjaE1hcCA9IEhhc2hNYXA8U3Ry
aW5nLCBDYWxsSGFuZGxlcj4oewotICAgICAgICB7IlNldFRhcmdldExpc3QiX3MsIHN0YXRpY19j
YXN0PENhbGxIYW5kbGVyPigmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZXRUYXJnZXRMaXN0KX0s
Ci0gICAgICAgIHsiU2V0dXBJbnNwZWN0b3JDbGllbnQiX3MsIHN0YXRpY19jYXN0PENhbGxIYW5k
bGVyPigmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZXR1cEluc3BlY3RvckNsaWVudCl9LAotICAg
ICAgICB7IlNldHVwIl9zLCBzdGF0aWNfY2FzdDxDYWxsSGFuZGxlcj4oJlJlbW90ZUluc3BlY3Rv
clNlcnZlcjo6c2V0dXApfSwKLSAgICAgICAgeyJGcm9udGVuZERpZENsb3NlIl9zLCBzdGF0aWNf
Y2FzdDxDYWxsSGFuZGxlcj4oJlJlbW90ZUluc3BlY3RvclNlcnZlcjo6Y2xvc2UpfSwKLSAgICAg
ICAgeyJTZW5kTWVzc2FnZVRvRnJvbnRlbmQiX3MsIHN0YXRpY19jYXN0PENhbGxIYW5kbGVyPigm
UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpfSwKLSAgICAgICAg
eyJTZW5kTWVzc2FnZVRvQmFja2VuZCJfcywgc3RhdGljX2Nhc3Q8Q2FsbEhhbmRsZXI+KCZSZW1v
dGVJbnNwZWN0b3JTZXJ2ZXI6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKX0sCisgICAgICAgIHsiU2V0
VGFyZ2V0TGlzdCJfcywgJlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2V0VGFyZ2V0TGlzdH0sCisg
ICAgICAgIHsiU2V0dXBJbnNwZWN0b3JDbGllbnQiX3MsICZSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6
OnNldHVwSW5zcGVjdG9yQ2xpZW50fSwKKyAgICAgICAgeyJTZXR1cCJfcywgJlJlbW90ZUluc3Bl
Y3RvclNlcnZlcjo6c2V0dXB9LAorICAgICAgICB7IkZyb250ZW5kRGlkQ2xvc2UiX3MsICZSZW1v
dGVJbnNwZWN0b3JTZXJ2ZXI6OmNsb3NlfSwKKyAgICAgICAgeyJTZW5kTWVzc2FnZVRvRnJvbnRl
bmQiX3MsICZSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZH0sCisg
ICAgICAgIHsiU2VuZE1lc3NhZ2VUb0JhY2tlbmQiX3MsICZSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6
OnNlbmRNZXNzYWdlVG9CYWNrZW5kfSwKICAgICB9KTsKIAogICAgIHJldHVybiBkaXNwYXRjaE1h
cDsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNlbmRXZWJJbnNwZWN0b3JFdmVu
dChDbGllbnRJRCBjbGllbnRJRCwgY29uc3QgU3RyaW5nJiBldmVudCkKK3ZvaWQgUmVtb3RlSW5z
cGVjdG9yU2VydmVyOjpzZW5kV2ViSW5zcGVjdG9yRXZlbnQoQ29ubmVjdGlvbklEIGlkLCBjb25z
dCBTdHJpbmcmIGV2ZW50KQogewogICAgIGNvbnN0IENTdHJpbmcgbWVzc2FnZSA9IGV2ZW50LnV0
ZjgoKTsKLSAgICBtX3NlcnZlci0+c2VuZChjbGllbnRJRCwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4obWVzc2FnZS5kYXRhKCkpLCBtZXNzYWdlLmxlbmd0aCgpKTsKKyAgICBtX3Nl
cnZlci0+c2VuZChpZCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWVzc2FnZS5k
YXRhKCkpLCBtZXNzYWdlLmxlbmd0aCgpKTsKIH0KIAogUmVtb3RlSW5zcGVjdG9yU2VydmVyJiBS
ZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNpbmdsZXRvbigpCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNldHVwKGNvbnN0IEV2ZW50JiBldmVudCkKICAgICBz
ZW5kV2ViSW5zcGVjdG9yRXZlbnQoZXZlbnQuY29ubmVjdGlvbklELnZhbHVlKCksIHNldHVwRXZl
bnQtPnRvSlNPTlN0cmluZygpKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNl
bmRDbG9zZUV2ZW50KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQpCit2
b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2VuZENsb3NlRXZlbnQoQ29ubmVjdGlvbklEIGNv
bm5lY3Rpb25JRCwgdW5zaWduZWQgdGFyZ2V0SUQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpj
bGllbnRDb25uZWN0aW9uQ2xvc2VkKCkKICAgICBtX2NsaWVudENvbm5lY3Rpb24gPSBXVEY6Om51
bGxvcHQ7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpjb25uZWN0aW9uQ2xvc2Vk
KHVpbnQ2NF90IGNsaWVudElEKQordm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmNvbm5lY3Rp
b25DbG9zZWQoQ29ubmVjdGlvbklEIGNsaWVudElEKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaAppbmRleCBl
OTNmOGFlOTVjNS4uOWNkY2MwMjgwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yU2VydmVyLmgKQEAgLTQ2LDM0ICs0NiwzNCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBhZGRTZXJ2ZXJDb25uZWN0aW9uKFBsYXRmb3JtU29ja2V0VHlwZSk7CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCk7
CisgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKENvbm5lY3Rpb25JRCk7CiAKLSAgICB2b2lkIHNl
dFRhcmdldExpc3QoY29uc3Qgc3RydWN0IEV2ZW50Jik7Ci0gICAgdm9pZCBzZXR1cEluc3BlY3Rv
ckNsaWVudChjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKLSAgICB2b2lkIHNldHVwKGNvbnN0IHN0cnVj
dCBFdmVudCYpOwotICAgIHZvaWQgY2xvc2UoY29uc3Qgc3RydWN0IEV2ZW50Jik7Ci0gICAgdm9p
ZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3Qgc3RydWN0IEV2ZW50Jik7Ci0gICAgdm9pZCBz
ZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKKyAgICB2b2lkIHNldFRh
cmdldExpc3QoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIHNldHVwSW5zcGVjdG9yQ2xpZW50KGNv
bnN0IEV2ZW50Jik7CisgICAgdm9pZCBzZXR1cChjb25zdCBFdmVudCYpOworICAgIHZvaWQgY2xv
c2UoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBF
dmVudCYpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgRXZlbnQmKTsKIAot
ICAgIHZvaWQgc2VuZENsb3NlRXZlbnQodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0
YXJnZXRJRCk7CisgICAgdm9pZCBzZW5kQ2xvc2VFdmVudChDb25uZWN0aW9uSUQsIHVuc2lnbmVk
IHRhcmdldElEKTsKICAgICB2b2lkIGNsaWVudENvbm5lY3Rpb25DbG9zZWQoKTsKIAotICAgIHZv
aWQgZGlkQWNjZXB0KENsaWVudElELCBTb2NrZXQ6OkRvbWFpbikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRDbG9zZShDbGllbnRJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRBY2NlcHQoQ29ubmVj
dGlvbklELCBTb2NrZXQ6OkRvbWFpbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDbG9zZShDb25u
ZWN0aW9uSUQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoQ2xp
ZW50SUQsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2VuZFdlYkluc3BlY3RvckV2ZW50KENv
bm5lY3Rpb25JRCwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgQ2FsbEhh
bmRsZXI+JiBkaXNwYXRjaE1hcCgpOworICAgIEhhc2hNYXA8U3RyaW5nLCBDYWxsSGFuZGxlcj4m
IGRpc3BhdGNoTWFwKCkgb3ZlcnJpZGU7CiAKLSAgICBIYXNoU2V0PHN0ZDo6cGFpcjx1aW50NjRf
dCwgdWludDY0X3Q+PiBtX2luc3BlY3Rpb25UYXJnZXRzOworICAgIEhhc2hTZXQ8c3RkOjpwYWly
PENvbm5lY3Rpb25JRCwgdW5zaWduZWQ+PiBtX2luc3BlY3Rpb25UYXJnZXRzOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludD4gbV9zZXJ2ZXI7CiAKICAg
ICAvLyBDb25uZWN0aW9ucyB0byB0aGUgV2ViUHJvY2Vzcy4KLSAgICBWZWN0b3I8Q2xpZW50SUQ+
IG1faW5zcGVjdG9yQ29ubmVjdGlvbnM7CisgICAgVmVjdG9yPENvbm5lY3Rpb25JRD4gbV9pbnNw
ZWN0b3JDb25uZWN0aW9uczsKICAgICBMb2NrIG1fY29ubmVjdGlvbnNMb2NrOwogCiAgICAgLy8g
Q29ubmVjdGlvbnMgZnJvbSBSZW1vdGVJbnNwZWN0b3JDbGllbnQuCi0gICAgT3B0aW9uYWw8Q2xp
ZW50SUQ+IG1fY2xpZW50Q29ubmVjdGlvbjsKKyAgICBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IG1f
Y2xpZW50Q29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRleCA3NWQyNDg0Njc3YS4u
ZGZhYzkzMjcxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQu
Y3BwCkBAIC01MSw5ICs1MSw5IEBAIFJlbW90ZUluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yKCkK
ICAgICBzdGFydCgpOwogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6ZGlkQ2xvc2UoQ2xpZW50
SUQgY2xpZW50SUQpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6ZGlkQ2xvc2UoQ29ubmVjdGlvbklE
IGlkKQogewotICAgIGlmIChjbGllbnRJRCAhPSBtX2NsaWVudElELnZhbHVlKCkpCisgICAgaWYg
KGlkICE9IG1fY2xpZW50SUQudmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFs9XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yU29ja2V0LmgKaW5kZXggN2JiNzA0ZTZkMTAuLjJmMmRhZGIyNjc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yU29ja2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
c29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5oCkBAIC00MSwxNiArNDEsMTYgQEAKIAogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKK3VzaW5nIENvbm5lY3Rpb25JRCA9IHVpbnQzMl90OworCiAj
aWYgT1MoV0lORE9XUykKIAotdXNpbmcgQ2xpZW50SUQgPSB1bnNpZ25lZDsKIHVzaW5nIFBsYXRm
b3JtU29ja2V0VHlwZSA9IFNPQ0tFVDsKIHVzaW5nIFBvbGxpbmdEZXNjcmlwdG9yID0gV1NBUE9M
TEZEOwogY29uc3RleHByIFBsYXRmb3JtU29ja2V0VHlwZSBJTlZBTElEX1NPQ0tFVF9WQUxVRSA9
IElOVkFMSURfU09DS0VUOwogCiAjZWxzZQogCi11c2luZyBDbGllbnRJRCA9IHVuc2lnbmVkOwog
dXNpbmcgUGxhdGZvcm1Tb2NrZXRUeXBlID0gaW50OwogdXNpbmcgUG9sbGluZ0Rlc2NyaXB0b3Ig
PSBzdHJ1Y3QgcG9sbGZkOwogY29uc3RleHByIFBsYXRmb3JtU29ja2V0VHlwZSBJTlZBTElEX1NP
Q0tFVF9WQUxVRSA9IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXggNGQzMzllZGI4MzguLjY0N2ZmNjkzNTdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5j
cHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6
d2FrZXVwV29ya2VyVGhyZWFkKCkKICAgICAgICAgU29ja2V0Ojp3cml0ZShtX3dha2V1cFNlbmRT
b2NrZXQsICIxIiwgMSk7CiB9CiAKLU9wdGlvbmFsPENsaWVudElEPiBSZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludDo6Y29ubmVjdEluZXQoY29uc3QgY2hhciogc2VydmVyQWRkcmVzcywgdWlu
dDE2X3Qgc2VydmVyUG9ydCkKK09wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6OmNvbm5lY3RJbmV0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHJlc3MsIHVp
bnQxNl90IHNlcnZlclBvcnQpCiB7CiAgICAgaWYgKGF1dG8gc29ja2V0ID0gU29ja2V0Ojpjb25u
ZWN0KHNlcnZlckFkZHJlc3MsIHNlcnZlclBvcnQpKQogICAgICAgICByZXR1cm4gY3JlYXRlQ2xp
ZW50KCpzb2NrZXQpOwpAQCAtODYsNyArODYsNyBAQCBib29sIFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjpsaXN0ZW5JbmV0KHVpbnQxNl90IHBvcnQpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojppc0xpc3RlbmluZyhDbGll
bnRJRCBpZCkKK2Jvb2wgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmlzTGlzdGVuaW5n
KENvbm5lY3Rpb25JRCBpZCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xv
Y2spOwogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQo
aWQpKQpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6OndvcmtlclRocmVhZCgpCiAKICAgICB3aGlsZSAoIW1fc2hvdWxkQWJvcnRXb3JrZXJUaHJl
YWQpIHsKICAgICAgICAgVmVjdG9yPFBvbGxpbmdEZXNjcmlwdG9yPiBwb2xsZmRzOwotICAgICAg
ICBWZWN0b3I8Q2xpZW50SUQ+IGlkczsKKyAgICAgICAgVmVjdG9yPENvbm5lY3Rpb25JRD4gaWRz
OwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xv
Y2spOwogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb25uZWN0aW9uIDogbV9jb25uZWN0
aW9ucykgewpAQCAtMTMyLDE0ICsxMzIsMTQgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludDo6d29ya2VyVGhyZWFkKCkKICAgICB9CiB9CiAKLU9wdGlvbmFsPENsaWVudElEPiBS
ZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2V0
VHlwZSBzb2NrZXQpCitPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKIHsKICAg
ICBpZiAoIVNvY2tldDo6aXNWYWxpZChzb2NrZXQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCiAgICAgTG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKIAotICAgIENs
aWVudElEIGlkOworICAgIENvbm5lY3Rpb25JRCBpZDsKICAgICBkbyB7CiAgICAgICAgIGlkID0g
Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKICAgICB9IHdoaWxlICghaWQgfHwgbV9j
b25uZWN0aW9ucy5jb250YWlucyhpZCkpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIE9wdGlvbmFsPENs
aWVudElEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRm
b3JtU29ja2V0VHlwCiAgICAgY29ubmVjdGlvbi0+cG9sbCA9IFNvY2tldDo6cHJlcGFyZVBvbGxp
bmcoc29ja2V0KTsKICAgICBjb25uZWN0aW9uLT5zb2NrZXQgPSBzb2NrZXQ7CiAgICAgY29ubmVj
dGlvbi0+cGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29ja2V0
OjpCdWZmZXJTaXplKTsKLSAgICBjb25uZWN0aW9uLT5wYXJzZXItPnNldERpZFBhcnNlTWVzc2Fn
ZUxpc3RlbmVyKFt0aGlzXShDbGllbnRJRCBpZCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewor
ICAgIGNvbm5lY3Rpb24tPnBhcnNlci0+c2V0RGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIoW3RoaXNd
KENvbm5lY3Rpb25JRCBpZCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBpZiAo
bV9pbnNwZWN0b3JDbGllbnQpCiAgICAgICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+ZGlkUmVj
ZWl2ZVdlYkluc3BlY3RvckV2ZW50KGlkLCBXVEZNb3ZlKGRhdGEpKTsKICAgICB9KTsKQEAgLTE2
MSwxMCArMTYxLDEwIEBAIE9wdGlvbmFsPENsaWVudElEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2V0VHlwCiAgICAgcmV0dXJuIGlkOwog
fQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpyZWN2SWZFbmFibGVkKENs
aWVudElEIGNsaWVudElEKQordm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6cmVj
dklmRW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1fY29u
bmVjdGlvbnNMb2NrKTsKLSAgICBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9IG1fY29ubmVj
dGlvbnMuZ2V0KGNsaWVudElEKSkgeworICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0g
bV9jb25uZWN0aW9ucy5nZXQoaWQpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiByZWN2QnVm
ZmVyKFNvY2tldDo6QnVmZmVyU2l6ZSk7CiAgICAgICAgIGlmIChhdXRvIHJlYWRTaXplID0gU29j
a2V0OjpyZWFkKGNvbm5lY3Rpb24tPnNvY2tldCwgcmVjdkJ1ZmZlci5kYXRhKCksIHJlY3ZCdWZm
ZXIuc2l6ZSgpKSkgewogICAgICAgICAgICAgaWYgKCpyZWFkU2l6ZSA+IDApCkBAIC0xNzMsMTgg
KzE3MywxOCBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpyZWN2SWZFbmFi
bGVkKENsaWVudElEIGNsaWVudElEKQogICAgICAgICB9CiAKICAgICAgICAgU29ja2V0OjpjbG9z
ZShjb25uZWN0aW9uLT5zb2NrZXQpOwotICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShjbGll
bnRJRCk7CisgICAgICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGlkKTsKIAogICAgICAgICBsb2Nr
LnVubG9ja0Vhcmx5KCk7CiAgICAgICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKLSAgICAgICAg
ICAgIG1faW5zcGVjdG9yQ2xpZW50LT5kaWRDbG9zZShjbGllbnRJRCk7CisgICAgICAgICAgICBt
X2luc3BlY3RvckNsaWVudC0+ZGlkQ2xvc2UoaWQpOwogICAgIH0KIH0KIAotdm9pZCBSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2VuZElmRW5hYmxlZChDbGllbnRJRCBjbGllbnRJRCkK
K3ZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmRJZkVuYWJsZWQoQ29ubmVj
dGlvbklEIGlkKQogewogICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7Ci0g
ICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChjbGllbnRJ
RCkpIHsKKyAgICBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0
KGlkKSkgewogICAgICAgICBTb2NrZXQ6OmNsZWFyV2FpdGluZ1dyaXRhYmxlKGNvbm5lY3Rpb24t
PnBvbGwpOwogCiAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IGNvbm5lY3Rpb24tPnNlbmRCdWZmZXI7
CkBAIC0yMDYsMTAgKzIwNiwxMCBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
OjpzZW5kSWZFbmFibGVkKENsaWVudElEIGNsaWVudElEKQogICAgIH0KIH0KIAotdm9pZCBSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2VuZChDbGllbnRJRCBjbGllbnRJRCwgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50OjpzZW5kKENvbm5lY3Rpb25JRCBpZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKLSAgICBp
ZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KGNsaWVudElEKSkg
eworICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoaWQp
KSB7CiAgICAgICAgIGF1dG8gbWVzc2FnZSA9IE1lc3NhZ2VQYXJzZXI6OmNyZWF0ZU1lc3NhZ2Uo
ZGF0YSwgc2l6ZSk7CiAgICAgICAgIGlmIChtZXNzYWdlLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50OjpzZW5kKENsaWVudElEIGNsaWVudElELCBjb25zdCB1aW50OF90KiBkYXRhLAogICAg
IH0KIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6YWNjZXB0SW5ldFNv
Y2tldElmRW5hYmxlZChDbGllbnRJRCBpZCkKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQ6OmFjY2VwdEluZXRTb2NrZXRJZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlkKQogewogICAg
IGlmICghaXNMaXN0ZW5pbmcoaWQpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCmluZGV4IDkzM2FiOTA1N2Zj
Li42NjlhODQ4N2Y3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3Rv
clNvY2tldEVuZHBvaW50LmgKQEAgLTUyLDIzICs1MiwyMyBAQCBwdWJsaWM6CiAgICAgUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCos
IGNvbnN0IGNoYXIqKTsKICAgICB+UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQoKTsKIAot
ICAgIE9wdGlvbmFsPENsaWVudElEPiBjb25uZWN0SW5ldChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRy
LCB1aW50MTZfdCBzZXJ2ZXJQb3J0KTsKKyAgICBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IGNvbm5l
Y3RJbmV0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHIsIHVpbnQxNl90IHNlcnZlclBvcnQpOwogICAg
IGJvb2wgbGlzdGVuSW5ldCh1aW50MTZfdCBwb3J0KTsKIAotICAgIHZvaWQgc2VuZChDbGllbnRJ
RCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKKyAgICB2b2lkIHNlbmQoQ29ubmVjdGlv
bklELCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgT3B0aW9uYWw8Q2xpZW50
SUQ+IGNyZWF0ZUNsaWVudChQbGF0Zm9ybVNvY2tldFR5cGUgZmQpOworICAgIE9wdGlvbmFsPENv
bm5lY3Rpb25JRD4gY3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2V0VHlwZSBmZCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICB2b2lkIHJlY3ZJZkVuYWJsZWQoQ2xpZW50SUQpOwotICAgIHZvaWQgc2VuZElm
RW5hYmxlZChDbGllbnRJRCk7CisgICAgdm9pZCByZWN2SWZFbmFibGVkKENvbm5lY3Rpb25JRCk7
CisgICAgdm9pZCBzZW5kSWZFbmFibGVkKENvbm5lY3Rpb25JRCk7CiAgICAgdm9pZCB3b3JrZXJU
aHJlYWQoKTsKICAgICB2b2lkIHdha2V1cFdvcmtlclRocmVhZCgpOwotICAgIHZvaWQgYWNjZXB0
SW5ldFNvY2tldElmRW5hYmxlZChDbGllbnRJRCk7Ci0gICAgYm9vbCBpc0xpc3RlbmluZyhDbGll
bnRJRCk7CisgICAgdm9pZCBhY2NlcHRJbmV0U29ja2V0SWZFbmFibGVkKENvbm5lY3Rpb25JRCk7
CisgICAgYm9vbCBpc0xpc3RlbmluZyhDb25uZWN0aW9uSUQpOwogCiAgICAgTG9jayBtX2Nvbm5l
Y3Rpb25zTG9jazsKLSAgICBIYXNoTWFwPENsaWVudElELCBzdGQ6OnVuaXF1ZV9wdHI8U29ja2V0
OjpDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPENvbm5lY3Rpb25JRCwg
c3RkOjp1bmlxdWVfcHRyPFNvY2tldDo6Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CiAKICAg
ICBQbGF0Zm9ybVNvY2tldFR5cGUgbV93YWtldXBTZW5kU29ja2V0IHsgSU5WQUxJRF9TT0NLRVRf
VkFMVUUgfTsKICAgICBQbGF0Zm9ybVNvY2tldFR5cGUgbV93YWtldXBSZWNlaXZlU29ja2V0IHsg
SU5WQUxJRF9TT0NLRVRfVkFMVUUgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368189</attachid>
            <date>2019-04-24 15:21:34 -0700</date>
            <delta_ts>2019-04-24 15:46:10 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>197243.diff</filename>
            <type>text/plain</type>
            <size>44909</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGYxYWUyMmJkYWFmLi4xMzUzOTVjNGE2NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTktMDQtMjQgIEJhc3Vr
ZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgorCisgICAgICAgIFtSZW1vdGVJbnNw
ZWN0b3JdIEZpeCBjb25uZWN0aW9uIGFuZCB0YXJnZXQgaWRlbnRpZmllciB0eXBlcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzI0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdpdmUgZGVkaWNhdGVk
IHR5cGUgZm9yIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCdzIGlkZW50aWZpZXIgYXMgSW5zcGVj
dG9yOjpUYXJnZXRJRC4KKworICAgICAgICBBbHNvIHJlbmFtZSBDbGllbnRJRCB0eXBlIHVzZWQg
aW4gU29ja2V0IGJhY2tlbmQgdG8gQ29ubmVjdGlvbklEIGJlY2F1c2UgdGhpcyBpcyB0aGUgaWRl
bnRpZmllcgorICAgICAgICBzb2NrZXQgZW5kcG9pbnQgYXNzaWduIHRvIHRoZSBuZXdseSBjcmVh
dGVkIGNvbm5lY3Rpb24uIFRoZSBzaXplIHdhcyBjaGFuZ2VkIHRvIHVpbnQzMl90LgorICAgICAg
ICBFbm91Z2ggc2l6ZSBmb3IgbWFuYWdpbmcgY29ubmVjdGlvbnMuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXApOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyIGNvbnN0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWdpc3RlclRhcmdldCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlclRhcmdldCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlVGFyZ2V0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cEZhaWxlZCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb21wbGV0ZWQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJnZXRMaXN0aW5n
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2Eu
bW06CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0
SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldDo6c2V0dXApOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQ6OmNsb3NlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUlu
c3BlY3RvckNvY29hLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVw
ZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGUpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNzYWdlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERpZENsb3NlTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2Up
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21hdGlj
SW5zcGVjdGlvblJlamVjdE1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvZ2xp
Yi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREYXRhTWVzc2FnZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRDbG9zZU1lc3NhZ2Up
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldHVwKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvVGFyZ2V0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xp
ZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudDo6ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50Lmg6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZEFjY2VwdCk6
CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2Fn
ZVBhcnNlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Ok1lc3NhZ2VQYXJzZXI6Ok1lc3NhZ2VQ
YXJzZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpNZXNzYWdlUGFyc2VyOjpwYXJzZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2FnZVBhcnNl
ci5oOgorICAgICAgICAoSW5zcGVjdG9yOjpNZXNzYWdlUGFyc2VyOjpzZXREaWRQYXJzZU1lc3Nh
Z2VMaXN0ZW5lcik6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yU2VydmVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2Vy
dmVyOjpkaWRBY2NlcHQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2
ZXI6OmRpZENsb3NlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVy
OjpkaXNwYXRjaE1hcCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZl
cjo6c2VuZFdlYkluc3BlY3RvckV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yU2VydmVyOjpzZW5kQ2xvc2VFdmVudCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvclNlcnZlcjo6Y29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg6CisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpkaWRDbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXApOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9UYXJnZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNvbm5lY3RJbmV0KToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmlzTGlz
dGVuaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6OndvcmtlclRocmVhZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6cmVjdklmRW5hYmxlZCk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kSWZFbmFibGVkKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6YWNjZXB0SW5l
dFNvY2tldElmRW5hYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaDoKKwogMjAxOS0wNC0yMiAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSB2b2xhdGlsZSBsb2Fk
IHRvIHBvcHVsYXRlIGJhY2tpbmcgcGFnZSBpbiBNYXJrZWRCbG9jazo6Rm9vdGVyIGluc3RlYWQg
b2YgdXNpbmcgaG9sZExvY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwCmlu
ZGV4IGRkMWU3MDM1MDNiLi4yMzM1YjI5ZWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAg
ICAgaWYgKCFtX3RhcmdldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQg
dGFyZ2V0SWRlbnRpZmllciA9IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1ZU9yKDApOwor
ICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1
ZU9yKDApOwogCiAgICAgaWYgKCFtX3RhcmdldCB8fCAhbV90YXJnZXQtPnJlbW90ZUNvbnRyb2xB
bGxvd2VkKCkpIHsKICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZh
aWxlZCh0YXJnZXRJZGVudGlmaWVyKTsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBSZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKCkKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICByZXR1
cm47CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gbV90YXJnZXQtPnRhcmdldElk
ZW50aWZpZXIoKTsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSBtX3RhcmdldC0+dGFyZ2V0
SWRlbnRpZmllcigpOwogCiAgICAgaWYgKG1fY29ubmVjdGVkKQogICAgICAgICBtX3RhcmdldC0+
ZGlzY29ubmVjdCgqdGhpcyk7CkBAIC0xMDYsOSArMTA2LDkgQEAgdm9pZCBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OnRhcmdldENsb3NlZCgpCiAgICAgbV90YXJnZXQgPSBudWxscHRyOwogfQog
Ci1PcHRpb25hbDx1bnNpZ25lZD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVu
dGlmaWVyKCkgY29uc3QKK09wdGlvbmFsPFRhcmdldElEPiBSZW1vdGVDb25uZWN0aW9uVG9UYXJn
ZXQ6OnRhcmdldElkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3RhcmdldCA/IE9w
dGlvbmFsPHVuc2lnbmVkPihtX3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpKSA6IFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25hbDxUYXJnZXRJRD4obV90YXJnZXQt
PnRhcmdldElkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaAppbmRleCA4YjBlMTRiYWJiNS4u
ZDI3YjhkNWZmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCB0YXJnZXRDbG9z
ZWQoKTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0YXJnZXRJZGVudGlmaWVyKCkgY29uc3Q7
CisgICAgT3B0aW9uYWw8VGFyZ2V0SUQ+IHRhcmdldElkZW50aWZpZXIoKSBjb25zdDsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25z
dDsKICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRyb2xsYWJsZVRhcmdl
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29udHJv
bGxhYmxlVGFyZ2V0LmgKaW5kZXggNGJiYjZhNDQ4NjcuLjU0ZjIzYTU1OGVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaApAQCAtMzgsNiArMzgsOCBAQCBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogY2xhc3MgRnJvbnRlbmRDaGFubmVsOwogCit1c2luZyBUYXJnZXRJRCA9IHVu
c2lnbmVkOworCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVDb250cm9sbGFibGVUYXJn
ZXQgewogcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCgpOwpA
QCAtNDgsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoRnJvbnRl
bmRDaGFubmVsJiwgYm9vbCBpc0F1dG9tYXRpY0Nvbm5lY3Rpb24gPSBmYWxzZSwgYm9vbCBpbW1l
ZGlhdGVseVBhdXNlID0gZmFsc2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdChG
cm9udGVuZENoYW5uZWwmKSA9IDA7CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgdm9pZCBzZXRUYXJnZXRJZGVudGlm
aWVyKHVuc2lnbmVkIGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQor
ICAgIFRhcmdldElEIHRhcmdldElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KKyAgICB2b2lkIHNldFRhcmdldElkZW50aWZpZXIoVGFyZ2V0SUQgaWRlbnRpZmllcikg
eyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBK
YXZhU2NyaXB0LCBTZXJ2aWNlV29ya2VyLCBXZWIsIEF1dG9tYXRpb24gfTsKICAgICB2aXJ0dWFs
IFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKQEAgLTYyLDcgKzY0LDcgQEAgcHVibGljOgogI2VuZGlm
CiAKIHByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9pZGVudGlmaWVyIHsgMCB9OworICAgIFRhcmdl
dElEIG1faWRlbnRpZmllciB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
SW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3Rvci5jcHAKaW5kZXggYzdkYWJmNjA3NDguLjlhNmE5NmYyOTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rvci5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
c3RhcnREaXNhYmxlZCgpCiAgICAgUmVtb3RlSW5zcGVjdG9yOjpzdGFydEVuYWJsZWQgPSBmYWxz
ZTsKIH0KIAotdW5zaWduZWQgUmVtb3RlSW5zcGVjdG9yOjpuZXh0QXZhaWxhYmxlVGFyZ2V0SWRl
bnRpZmllcigpCitUYXJnZXRJRCBSZW1vdGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVUYXJnZXRJ
ZGVudGlmaWVyKCkKIHsKLSAgICB1bnNpZ25lZCBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyOwor
ICAgIFRhcmdldElEIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXI7CiAgICAgZG8gewogICAgICAg
ICBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyID0gbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRp
ZmllcisrOwotICAgIH0gd2hpbGUgKCFuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyIHx8IG5leHRW
YWxpZFRhcmdldElkZW50aWZpZXIgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpIHx8IG1fdGFyZ2V0TWFwLmNvbnRhaW5zKG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIpKTsK
KyAgICB9IHdoaWxlICghbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllciB8fCBuZXh0VmFsaWRUYXJn
ZXRJZGVudGlmaWVyID09IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0SUQ+OjptYXgoKSB8fCBt
X3RhcmdldE1hcC5jb250YWlucyhuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyKSk7CiAgICAgcmV0
dXJuIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXI7CiB9CiAKQEAgLTU5LDcgKzU5LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdl
dCogdGFyZ2V0KQogCiAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogCi0gICAgdW5zaWdu
ZWQgdGFyZ2V0SWRlbnRpZmllciA9IG5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCk7Cisg
ICAgYXV0byB0YXJnZXRJZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIo
KTsKICAgICB0YXJnZXQtPnNldFRhcmdldElkZW50aWZpZXIodGFyZ2V0SWRlbnRpZmllcik7CiAK
ICAgICB7CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1bnJlZ2lzdGVy
VGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQogCiAgICAgTG9ja0hvbGRl
ciBsb2NrKG1fbXV0ZXgpOwogCi0gICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdl
dC0+dGFyZ2V0SWRlbnRpZmllcigpOworICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdl
dC0+dGFyZ2V0SWRlbnRpZmllcigpOwogICAgIGlmICghdGFyZ2V0SWRlbnRpZmllcikKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVw
ZGF0ZVRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKIAogICAgIExvY2tI
b2xkZXIgbG9jayhtX211dGV4KTsKIAotICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0
YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0
YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsKICAgICBpZiAoIXRhcmdldElkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
OjpzZXRDbGllbnQoUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIGNsaWVudCkKICAgICBwdXNoTGlz
dGluZ3NTb29uKCk7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cEZhaWxlZCh1bnNp
Z25lZCB0YXJnZXRJZGVudGlmaWVyKQordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFpbGVk
KFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0
ZXgpOwogCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFp
bGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCiAgICAgcHVzaExpc3RpbmdzU29vbigpOwog
fQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb21wbGV0ZWQodW5zaWduZWQgdGFyZ2V0
SWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZChUYXJnZXRJ
RCB0YXJnZXRJZGVudGlmaWVyKQogewogICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKIApA
QCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZCh1
bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rpb25Q
YXVzZWQgPSBmYWxzZTsKIH0KIAotYm9vbCBSZW1vdGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRv
bWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVkKQorYm9vbCBSZW1vdGVJbnNwZWN0b3I6OndhaXRpbmdG
b3JBdXRvbWF0aWNJbnNwZWN0aW9uKFRhcmdldElEKQogewogICAgIC8vIFdlIGRvbid0IHRha2Ug
dGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNhdXNlIHdlIGFzc3VtZSBpdCB3aWxsIGJlIGNoZWNr
ZWQgcmVwZWF0ZWRseS4KICAgICByZXR1cm4gbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2VkOwpA
QCAtMjA4LDcgKzIwOCw3IEBAIFRhcmdldExpc3RpbmcgUmVtb3RlSW5zcGVjdG9yOjpsaXN0aW5n
Rm9yVGFyZ2V0KGNvbnN0IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCYKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZVRhcmdldExpc3RpbmcodW5z
aWduZWQgdGFyZ2V0SWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJn
ZXRMaXN0aW5nKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiB7CiAgICAgYXV0byB0YXJnZXQg
PSBtX3RhcmdldE1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcik7CiAgICAgaWYgKCF0YXJnZXQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rvci5oCmluZGV4IDVlNWI4NjJlNjkzLi4yZWEwMmIzZTkzZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yLmgKQEAgLTExMywxNiArMTEzLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVGFy
Z2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCopOwogICAgIHZvaWQgdW5yZWdpc3RlclRhcmdl
dChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqKTsKICAgICB2b2lkIHVwZGF0ZVRhcmdldChSZW1v
dGVDb250cm9sbGFibGVUYXJnZXQqKTsKLSAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGUodW5z
aWduZWQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lk
IHNlbmRNZXNzYWdlVG9SZW1vdGUoVGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAK
ICAgICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQ7IH0KICAgICB2b2lkIHNldENsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCopOwog
ICAgIHZvaWQgY2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7CiAgICAgT3B0aW9uYWw8UmVt
b3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGllcz4gY2xpZW50Q2FwYWJpbGl0aWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnRDYXBhYmlsaXRpZXM7IH0KIAotICAgIHZvaWQgc2V0dXBG
YWlsZWQodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXR1cENvbXBsZXRl
ZCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKTsKLSAgICBib29sIHdhaXRpbmdGb3JBdXRvbWF0
aWNJbnNwZWN0aW9uKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpOworICAgIHZvaWQgc2V0dXBG
YWlsZWQoVGFyZ2V0SUQpOworICAgIHZvaWQgc2V0dXBDb21wbGV0ZWQoVGFyZ2V0SUQpOworICAg
IGJvb2wgd2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oVGFyZ2V0SUQpOwogICAgIHZvaWQg
dXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0
Kik7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAg
LTEzOSwxNCArMTM5LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudFByb2Nlc3NJbmZv
bWF0aW9uSXNEZWxheWVkKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgdXBkYXRlVGFyZ2V0TGlzdGlu
Zyh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHVwZGF0ZVRhcmdldExpc3Rp
bmcoVGFyZ2V0SUQpOwogCiAjaWYgVVNFKEdMSUIpCiAgICAgdm9pZCByZXF1ZXN0QXV0b21hdGlv
blNlc3Npb24oY29uc3QgY2hhciogc2Vzc2lvbklELCBjb25zdCBDbGllbnQ6OlNlc3Npb25DYXBh
YmlsaXRpZXMmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKSB8fCBQTEFURk9STShQTEFZU1RBVElP
TikKLSAgICB2b2lkIHNldHVwKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpOwotICAgIHZvaWQg
c2VuZE1lc3NhZ2VUb1RhcmdldCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBjaGFy
KiBtZXNzYWdlKTsKKyAgICB2b2lkIHNldHVwKFRhcmdldElEKTsKKyAgICB2b2lkIHNlbmRNZXNz
YWdlVG9UYXJnZXQoVGFyZ2V0SUQsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogI2VuZGlmCiAjaWYg
UExBVEZPUk0oUExBWVNUQVRJT04pCiAgICAgc3RhdGljIHZvaWQgc2V0Q29ubmVjdGlvbklkZW50
aWZpZXIoUGxhdGZvcm1Tb2NrZXRUeXBlKTsKQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIFJlbW90ZUluc3BlY3RvcigpOwogCi0gICAgdW5zaWduZWQgbmV4dEF2YWls
YWJsZVRhcmdldElkZW50aWZpZXIoKTsKKyAgICBUYXJnZXRJRCBuZXh0QXZhaWxhYmxlVGFyZ2V0
SWRlbnRpZmllcigpOwogCiAgICAgZW51bSBjbGFzcyBTdG9wU291cmNlIHsgQVBJLCBYUENNZXNz
YWdlIH07CiAgICAgdm9pZCBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZSk7CkBAIC0xNjgsOSArMTY4
LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgR0RCdXNJbnRlcmZhY2VWVGFibGUgc19p
bnRlcmZhY2VWVGFibGU7CiAKICAgICB2b2lkIHJlY2VpdmVkR2V0VGFyZ2V0TGlzdE1lc3NhZ2Uo
KTsKLSAgICB2b2lkIHJlY2VpdmVkU2V0dXBNZXNzYWdlKHVuc2lnbmVkIHRhcmdldElkZW50aWZp
ZXIpOwotICAgIHZvaWQgcmVjZWl2ZWREYXRhTWVzc2FnZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlm
aWVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLSAgICB2b2lkIHJlY2VpdmVkQ2xvc2VNZXNzYWdl
KHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpOworICAgIHZvaWQgcmVjZWl2ZWRTZXR1cE1lc3Nh
Z2UoVGFyZ2V0SUQpOworICAgIHZvaWQgcmVjZWl2ZWREYXRhTWVzc2FnZShUYXJnZXRJRCwgY29u
c3QgY2hhciogbWVzc2FnZSk7CisgICAgdm9pZCByZWNlaXZlZENsb3NlTWVzc2FnZShUYXJnZXRJ
RCk7CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdE1lc3NhZ2UoY29u
c3QgY2hhciogc2Vzc2lvbklEKTsKICNlbmRpZgogCkBAIC0yMDYsMTQgKzIwNiwxNCBAQCBwcml2
YXRlOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCiAgICAgSGFzaE1hcDxTdHJp
bmcsIENhbGxIYW5kbGVyPiYgZGlzcGF0Y2hNYXAoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZENs
b3NlKENsaWVudElEKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENsb3NlKENvbm5lY3Rpb25JRCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHNlbmRXZWJJbnNwZWN0b3JFdmVudChjb25zdCBTdHJpbmcm
KTsKIAotICAgIHZvaWQgcmVjZWl2ZWRHZXRUYXJnZXRMaXN0TWVzc2FnZShjb25zdCBzdHJ1Y3Qg
RXZlbnQmKTsKLSAgICB2b2lkIHJlY2VpdmVkU2V0dXBNZXNzYWdlKGNvbnN0IHN0cnVjdCBFdmVu
dCYpOwotICAgIHZvaWQgcmVjZWl2ZWREYXRhTWVzc2FnZShjb25zdCBzdHJ1Y3QgRXZlbnQmKTsK
LSAgICB2b2lkIHJlY2VpdmVkQ2xvc2VNZXNzYWdlKGNvbnN0IHN0cnVjdCBFdmVudCYpOworICAg
IHZvaWQgcmVjZWl2ZWRHZXRUYXJnZXRMaXN0TWVzc2FnZShjb25zdCBFdmVudCYpOworICAgIHZv
aWQgcmVjZWl2ZWRTZXR1cE1lc3NhZ2UoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIHJlY2VpdmVk
RGF0YU1lc3NhZ2UoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIHJlY2VpdmVkQ2xvc2VNZXNzYWdl
KGNvbnN0IEV2ZW50Jik7CiAjZW5kaWYKICAgICBzdGF0aWMgYm9vbCBzdGFydEVuYWJsZWQ7CiAK
QEAgLTIyMyw5ICsyMjMsOSBAQCBwcml2YXRlOgogICAgIC8vIGZyb20gYW55IHRocmVhZC4KICAg
ICBMb2NrIG1fbXV0ZXg7CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQqPiBtX3RhcmdldE1hcDsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8UmVt
b3RlQ29ubmVjdGlvblRvVGFyZ2V0Pj4gbV90YXJnZXRDb25uZWN0aW9uTWFwOwotICAgIEhhc2hN
YXA8dW5zaWduZWQsIFRhcmdldExpc3Rpbmc+IG1fdGFyZ2V0TGlzdGluZ01hcDsKKyAgICBIYXNo
TWFwPFRhcmdldElELCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqPiBtX3RhcmdldE1hcDsKKyAg
ICBIYXNoTWFwPFRhcmdldElELCBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Pj4gbV90
YXJnZXRDb25uZWN0aW9uTWFwOworICAgIEhhc2hNYXA8VGFyZ2V0SUQsIFRhcmdldExpc3Rpbmc+
IG1fdGFyZ2V0TGlzdGluZ01hcDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlZlB0cjxS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uPiBtX3JlbGF5Q29ubmVjdGlvbjsKQEAgLTIzOCw3
ICsyMzgsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludD4gbV9zb2NrZXRDb25uZWN0
aW9uOwogICAgIHN0YXRpYyBQbGF0Zm9ybVNvY2tldFR5cGUgc19jb25uZWN0aW9uSWRlbnRpZmll
cjsKLSAgICBPcHRpb25hbDxDbGllbnRJRD4gbV9jbGllbnRJRDsKKyAgICBPcHRpb25hbDxDb25u
ZWN0aW9uSUQ+IG1fY2xpZW50SUQ7CiAjZW5kaWYKIAogICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xp
ZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKICNl
bmRpZgotICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIgeyAxIH07
CisgICAgVGFyZ2V0SUQgbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllciB7IDEgfTsKICAg
ICBpbnQgbV9ub3RpZnlUb2tlbiB7IDAgfTsKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiB7IGZhbHNlIH07CkBAIC0yNjAsNyAr
MjYwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZv
cm1hdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCB7IGZhbHNl
IH07Ci0gICAgdW5zaWduZWQgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRl
bnRpZmllciB7IDAgfTsKKyAgICBUYXJnZXRJRCBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRh
dGVUYXJnZXRJZGVudGlmaWVyIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2Nv
YS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1t
CmluZGV4IGI0NzQwYzZmMzA5Li45NzMwZGI4Mjg4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Q29jb2EubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29j
b2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KQEAgLTEyMCw5ICsxMjAsOSBAQCBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6On5SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoKQogICAg
IHRlYXJkb3duUnVuTG9vcCgpOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKK09wdGlvbmFsPFRhcmdldElE
PiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldElkZW50aWZpZXIoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3RhcmdldCA/IE9wdGlvbmFsPHVuc2lnbmVkPihtX3RhcmdldC0+dGFyZ2V0
SWRlbnRpZmllcigpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRp
b25hbDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxv
cHQ7CiB9CiAKIE5TU3RyaW5nICpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkgY29uc3QKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21h
dGljYQogICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVu
c2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVudGlmaWVyKCkudmFsdWVP
cigwKTsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVudGlmaWVy
KCkudmFsdWVPcigwKTsKICAgICAKICAgICByZWYoKTsKICAgICBkaXNwYXRjaEFzeW5jT25UYXJn
ZXQoXnsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
dGFyZ2V0Q2xvc2VkKCkKIAogdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKCkK
IHsKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gbV90YXJnZXQgPyBtX3RhcmdldC0+
dGFyZ2V0SWRlbnRpZmllcigpIDogMDsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSBtX3Rh
cmdldCA/IG1fdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCkgOiAwOwogICAgIAogICAgIHJlZigp
OwogICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNw
ZWN0b3JDb2NvYS5tbQppbmRleCA2NDY2YWFhOGI0MS4uNWJlZjIxY2JiMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3Bl
Y3RvckNvY29hLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3Rl
SW5zcGVjdGlvblRhcmdldCoKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4
KTsKIAotICAgICAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJ
ZGVudGlmaWVyKCk7CisgICAgICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFy
Z2V0SWRlbnRpZmllcigpOwogICAgICAgICBpZiAoIXRhcmdldElkZW50aWZpZXIpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
c2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkKICAgICBtX3JlbGF5Q29u
bmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3Nh
Z2UsIGRldGFpbHMpOwogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1Jl
bW90ZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShUYXJnZXRJRCB0YXJnZXRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgTG9ja0hvbGRlciBsb2Nr
KG1fbXV0ZXgpOwogCkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJl
Y2VpdmVkU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiAgICAgQkFJTF9JRl9V
TkVYUEVDVEVEX1RZUEVfQUxMT1dJTkdfTklMKGF1dG9tYXRpY2FsbHlQYXVzZU51bWJlciwgW05T
TnVtYmVyIGNsYXNzXSk7CiAgICAgQk9PTCBhdXRvbWF0aWNhbGx5UGF1c2UgPSBhdXRvbWF0aWNh
bGx5UGF1c2VOdW1iZXIuYm9vbFZhbHVlOwogCi0gICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmll
ciA9IHRhcmdldElkZW50aWZpZXJOdW1iZXIudW5zaWduZWRJbnRWYWx1ZTsKKyAgICBUYXJnZXRJ
RCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRpZmllck51bWJlci51bnNpZ25lZEludFZh
bHVlOwogICAgIGlmICghdGFyZ2V0SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCkBAIC01
MzcsNyArNTM3LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2Uo
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICBOU0RhdGEgKmRhdGEgPSB1c2VySW5mb1tXSVJT
b2NrZXREYXRhS2V5XTsKICAgICBCQUlMX0lGX1VORVhQRUNURURfVFlQRShkYXRhLCBbTlNEYXRh
IGNsYXNzXSk7CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRp
Zmllck51bWJlci51bnNpZ25lZEludFZhbHVlOworICAgIFRhcmdldElEIHRhcmdldElkZW50aWZp
ZXIgPSB0YXJnZXRJZGVudGlmaWVyTnVtYmVyLnVuc2lnbmVkSW50VmFsdWU7CiAgICAgaWYgKCF0
YXJnZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5
ICp1c2VySW5mbykKICAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSB1c2VySW5m
b1tXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07CiAgICAgQkFJTF9JRl9VTkVYUEVDVEVEX1RZ
UEUoY29ubmVjdGlvbklkZW50aWZpZXIsIFtOU1N0cmluZyBjbGFzc10pOwogCi0gICAgdW5zaWdu
ZWQgdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldElkZW50aWZpZXJOdW1iZXIudW5zaWduZWRJbnRW
YWx1ZTsKKyAgICBUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRpZmllck51
bWJlci51bnNpZ25lZEludFZhbHVlOwogICAgIGlmICghdGFyZ2V0SWRlbnRpZmllcikKICAgICAg
ICAgcmV0dXJuOwogCkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJl
Y2VpdmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiAgICAgQkFJTF9J
Rl9VTkVYUEVDVEVEX1RZUEUoaW5kaWNhdGVFbmFibGVkTnVtYmVyLCBbTlNOdW1iZXIgY2xhc3Nd
KTsKICAgICBCT09MIGluZGljYXRlRW5hYmxlZCA9IGluZGljYXRlRW5hYmxlZE51bWJlci5ib29s
VmFsdWU7CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRpZmll
ck51bWJlci51bnNpZ25lZEludFZhbHVlOworICAgIFRhcmdldElEIHRhcmdldElkZW50aWZpZXIg
PSB0YXJnZXRJZGVudGlmaWVyTnVtYmVyLnVuc2lnbmVkSW50VmFsdWU7CiAgICAgaWYgKCF0YXJn
ZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2Fn
ZShOU0RpY3Rpb25hcnkgKnVzZQogICAgIE5TTnVtYmVyICp0YXJnZXRJZGVudGlmaWVyTnVtYmVy
ID0gdXNlckluZm9bV0lSVGFyZ2V0SWRlbnRpZmllcktleV07CiAgICAgQkFJTF9JRl9VTkVYUEVD
VEVEX1RZUEUodGFyZ2V0SWRlbnRpZmllck51bWJlciwgW05TTnVtYmVyIGNsYXNzXSk7CiAKLSAg
ICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRpZmllck51bWJlci51bnNp
Z25lZEludFZhbHVlOworICAgIFRhcmdldElEIHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXRJZGVu
dGlmaWVyTnVtYmVyLnVuc2lnbmVkSW50VmFsdWU7CiAgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVy
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3Bw
CmluZGV4IDk5MjRhN2EzOWJkLi41YWZmOGIzZTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUlu
c3BlY3RvckdsaWIuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdl
dCoKICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAKICAgICBBU1NFUlQodGFyZ2V0KTsK
LSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVy
KCk7CisgICAgYXV0byB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVy
KCk7CiAgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTI3
Miw3ICsyNzIsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZEF1dG9tYXRpY0luc3BlY3Rp
b25DYW5kaWRhdGVNZXNzYWdlKCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGF1dG9tYXRpYyBp
bnNwZWN0aW9uLgogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90
ZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShUYXJnZXRJRCB0YXJnZXRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1f
bXV0ZXgpOwogICAgIGlmICghbV9kYnVzQ29ubmVjdGlvbikKQEAgLTI5MSwxMiArMjkxLDEyIEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldFRhcmdldExpc3RNZXNzYWdlKCkKICAg
ICBwdXNoTGlzdGluZ3NOb3coKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVk
U2V0dXBNZXNzYWdlKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsK
ICAgICBzZXR1cCh0YXJnZXRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnJlY2VpdmVkRGF0YU1lc3NhZ2UodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgY2hh
ciogbWVzc2FnZSkKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNzYWdlKFRh
cmdldElEIHRhcmdldElkZW50aWZpZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgUmVm
UHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldD4gY29ubmVjdGlvblRvVGFyZ2V0OwogICAgIHsK
QEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREYXRhTWVz
c2FnZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBjaGFyKgogICAgIGNvbm5lY3Rp
b25Ub1RhcmdldC0+c2VuZE1lc3NhZ2VUb1RhcmdldChTdHJpbmc6OmZyb21VVEY4KG1lc3NhZ2Up
KTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQ2xvc2VNZXNzYWdlKHVuc2ln
bmVkIHRhcmdldElkZW50aWZpZXIpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRDbG9z
ZU1lc3NhZ2UoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBSZWZQdHI8UmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQ7CiAgICAgewpAQCAtMzI1LDcg
KzMyNSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZENsb3NlTWVzc2FnZSh1bnNp
Z25lZCB0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPmNsb3Nl
KCk7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cCh1bnNpZ25lZCB0YXJnZXRJZGVu
dGlmaWVyKQordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwKFRhcmdldElEIHRhcmdldElkZW50
aWZpZXIpCiB7CiAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQ7CiAgICAgewpA
QCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cCh1bnNpZ25lZCB0
YXJnZXRJZGVudGlmaWVyKQogICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogfQog
Ci12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1RhcmdldCh1bnNpZ25lZCB0YXJn
ZXRJZGVudGlmaWVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnNlbmRNZXNzYWdlVG9UYXJnZXQoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgY2hh
ciogbWVzc2FnZSkKIHsKICAgICBpZiAoYXV0byBjb25uZWN0aW9uVG9UYXJnZXQgPSBtX3Rhcmdl
dENvbm5lY3Rpb25NYXAuZ2V0KHRhcmdldElkZW50aWZpZXIpKQogICAgICAgICBjb25uZWN0aW9u
VG9UYXJnZXQtPnNlbmRNZXNzYWdlVG9UYXJnZXQoU3RyaW5nOjpmcm9tVVRGOChtZXNzYWdlKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudC5jcHAKaW5kZXggNzY1YzdiNDBhMjMuLjBlOTBmMThlNzJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
Q29ubmVjdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwCkBAIC0z
NCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi12b2lkIFJlbW90ZUluc3Bl
Y3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmVXZWJJbnNwZWN0b3JFdmVudChDbGllbnRJ
RCBjbGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlSW5zcGVjdG9y
Q29ubmVjdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KENvbm5lY3Rpb25J
RCBjbGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKIApAQCAtNTUsMTQgKzU1LDE0IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ29u
bmVjdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KENsaWVudElEIGNsaWVu
CiAgICAgaWYgKCFtZXNzYWdlT2JqZWN0LT5nZXRTdHJpbmcoImV2ZW50Il9zLCBtZXRob2ROYW1l
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RydWN0IEV2ZW50IGV2ZW50OworICAgIEV2ZW50
IGV2ZW50OwogICAgIGV2ZW50LmNsaWVudElEID0gY2xpZW50SUQ7CiAKLSAgICB1aW50NjRfdCBj
b25uZWN0aW9uSUQ7CisgICAgQ29ubmVjdGlvbklEIGNvbm5lY3Rpb25JRDsKICAgICBpZiAobWVz
c2FnZU9iamVjdC0+Z2V0SW50ZWdlcigiY29ubmVjdGlvbklEIl9zLCBjb25uZWN0aW9uSUQpKQog
ICAgICAgICBldmVudC5jb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uSUQ7CiAKLSAgICB1aW50NjRf
dCB0YXJnZXRJRDsKKyAgICBUYXJnZXRJRCB0YXJnZXRJRDsKICAgICBpZiAobWVzc2FnZU9iamVj
dC0+Z2V0SW50ZWdlcigidGFyZ2V0SUQiX3MsIHRhcmdldElEKSkKICAgICAgICAgZXZlbnQudGFy
Z2V0SUQgPSB0YXJnZXRJRDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JDb25uZWN0aW9uQ2xpZW50LmgKaW5kZXggN2E2YTAyYjAwZjIuLjM0OGUzOTE2YmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xp
ZW50LmgKQEAgLTM1LDE4ICszNSwxOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3Mg
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxS
ZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50PiB7CiBwdWJsaWM6Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlV2ViSW5zcGVjdG9yRXZlbnQoQ2xpZW50SUQsIFZlY3Rvcjx1aW50OF90PiYmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQWNjZXB0KENsaWVudElELCBTb2NrZXQ6OkRvbWFpbikgeyB9Owot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDbGllbnRJRCkgPSAwOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVdlYkluc3BlY3RvckV2ZW50KENvbm5lY3Rpb25JRCwgVmVjdG9yPHVpbnQ4X3Q+JiYpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRBY2NlcHQoQ29ubmVjdGlvbklELCBTb2NrZXQ6OkRvbWFpbikg
eyB9OworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb25uZWN0aW9uSUQpID0gMDsKIAogICAg
IHN0cnVjdCBFdmVudCB7Ci0gICAgICAgIENsaWVudElEIGNsaWVudElEOwotICAgICAgICBPcHRp
b25hbDx1aW50NjRfdD4gY29ubmVjdGlvbklEOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4g
dGFyZ2V0SUQ7CisgICAgICAgIENvbm5lY3Rpb25JRCBjbGllbnRJRCB7IH07CisgICAgICAgIE9w
dGlvbmFsPENvbm5lY3Rpb25JRD4gY29ubmVjdGlvbklEOworICAgICAgICBPcHRpb25hbDxUYXJn
ZXRJRD4gdGFyZ2V0SUQ7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbWVzc2FnZTsKICAgICB9
OwogCi0gICAgdXNpbmcgQ2FsbEhhbmRsZXIgPSB2b2lkIChSZW1vdGVJbnNwZWN0b3JDb25uZWN0
aW9uQ2xpZW50OjoqKShjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKKyAgICB1c2luZyBDYWxsSGFuZGxl
ciA9IHZvaWQgKFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OiopKGNvbnN0IEV2ZW50
Jik7CiAgICAgdmlydHVhbCBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+JiBkaXNwYXRjaE1h
cCgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JNZXNzYWdlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JN
ZXNzYWdlUGFyc2VyLmNwcAppbmRleCAwNTA5ZGNhZGU5Yi4uMWJjY2Y5ZGUxYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JNZXNzYWdlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2FnZVBhcnNlci5jcHAKQEAg
LTQxLDggKzQxLDggQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAgICAgICAgICAgICAgICB8IDwt
LS0tLS0tLS0tLS0gc2l6ZSAtLS0tLS0tLS0tLS0+IHwKICovCiAKLU1lc3NhZ2VQYXJzZXI6Ok1l
c3NhZ2VQYXJzZXIoQ2xpZW50SUQgY2xpZW50SUQsIHNpemVfdCBidWZmZXJTaXplKQotICAgIDog
bV9jbGllbnRJRChjbGllbnRJRCkKK01lc3NhZ2VQYXJzZXI6Ok1lc3NhZ2VQYXJzZXIoQ29ubmVj
dGlvbklEIGlkLCBzaXplX3QgYnVmZmVyU2l6ZSkKKyAgICA6IG1fY29ubmVjdGlvbklEKGlkKQog
ewogICAgIG1fYnVmZmVyLnJlc2VydmVDYXBhY2l0eShidWZmZXJTaXplKTsKIH0KQEAgLTEwNCw3
ICsxMDQsNyBAQCBib29sIE1lc3NhZ2VQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgbWVtY3B5KCZk
YXRhQnVmZmVyWzBdLCAmbV9idWZmZXJbc2l6ZW9mKHVpbnQzMl90KV0sIGRhdGFTaXplKTsKIAog
ICAgICAgICBpZiAobV9kaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcikKLSAgICAgICAgICAgIG1fZGlk
UGFyc2VNZXNzYWdlTGlzdGVuZXIobV9jbGllbnRJRCwgV1RGTW92ZShkYXRhQnVmZmVyKSk7Cisg
ICAgICAgICAgICBtX2RpZFBhcnNlTWVzc2FnZUxpc3RlbmVyKG1fY29ubmVjdGlvbklELCBXVEZN
b3ZlKGRhdGFCdWZmZXIpKTsKIAogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbWVzc2FnZVNp
emUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JNZXNzYWdlUGFyc2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2Fn
ZVBhcnNlci5oCmluZGV4IGQ1YjE5OGUyNTNkLi5hZTA1OWZkOGE5MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3Rv
ck1lc3NhZ2VQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2FnZVBhcnNlci5oCkBAIC0zNiwxOCArMzYs
MTggQEAgY2xhc3MgTWVzc2FnZVBhcnNlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBjcmVhdGVNZXNzYWdlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogCi0gICAgTWVz
c2FnZVBhcnNlcihDbGllbnRJRCwgc2l6ZV90KTsKKyAgICBNZXNzYWdlUGFyc2VyKENvbm5lY3Rp
b25JRCwgc2l6ZV90KTsKICAgICB2b2lkIHB1c2hSZWNlaXZlZERhdGEoY29uc3QgdWludDhfdCos
IHNpemVfdCk7Ci0gICAgdm9pZCBzZXREaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcihGdW5jdGlvbjx2
b2lkKENsaWVudElELCBWZWN0b3I8dWludDhfdD4pPiYmIGxpc3RlbmVyKSB7IG1fZGlkUGFyc2VN
ZXNzYWdlTGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKTsgfQorICAgIHZvaWQgc2V0RGlkUGFy
c2VNZXNzYWdlTGlzdGVuZXIoRnVuY3Rpb248dm9pZChDb25uZWN0aW9uSUQsIFZlY3Rvcjx1aW50
OF90Pik+JiYgbGlzdGVuZXIpIHsgbV9kaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lciA9IFdURk1vdmUo
bGlzdGVuZXIpOyB9CiAKICAgICB2b2lkIGNsZWFyUmVjZWl2ZWREYXRhKCk7CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBwYXJzZSgpOwogCi0gICAgRnVuY3Rpb248dm9pZChDbGllbnRJRCwgVmVjdG9y
PHVpbnQ4X3Q+JiYpPiBtX2RpZFBhcnNlTWVzc2FnZUxpc3RlbmVyOworICAgIEZ1bmN0aW9uPHZv
aWQoQ29ubmVjdGlvbklELCBWZWN0b3I8dWludDhfdD4mJik+IG1fZGlkUGFyc2VNZXNzYWdlTGlz
dGVuZXI7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwotICAgIENsaWVudElEIG1fY2xp
ZW50SUQ7CisgICAgQ29ubmVjdGlvbklEIG1fY29ubmVjdGlvbklEOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIu
Y3BwCmluZGV4IDNhNDUwOTgzYzA4Li5lNjBmYzUyNzcwNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNlcnZl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBSZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXI6OmFkZFNlcnZlckNvbm5lY3Rpb24oUGxhdGZvcm1Tb2NrZXRUeXBlIGlk
ZW50aWZpZXIpCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6ZGlkQWNj
ZXB0KENsaWVudElEIGNsaWVudElELCBTb2NrZXQ6OkRvbWFpbiB0eXBlKQordm9pZCBSZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXI6OmRpZEFjY2VwdChDb25uZWN0aW9uSUQgaWQsIFNvY2tldDo6RG9tYWlu
IHR5cGUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTUzLDE4ICs1Mywx
OCBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6ZGlkQWNjZXB0KENsaWVudElEIGNsaWVu
dElELCBTb2NrZXQ6OkRvbWFpbiB0eXBlKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnNwZWN0
b3Igc2VydmVyIGNhbiBhY2NlcHQgb25seSAxIGNsaWVudCIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIG1fY2xpZW50Q29ubmVjdGlvbiA9IGNsaWVudElEOworICAg
ICAgICBtX2NsaWVudENvbm5lY3Rpb24gPSBpZDsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gU29j
a2V0OjpEb21haW46OkxvY2FsKSB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rp
b25zTG9jayk7Ci0gICAgICAgIG1faW5zcGVjdG9yQ29ubmVjdGlvbnMuYXBwZW5kKGNsaWVudElE
KTsKKyAgICAgICAgbV9pbnNwZWN0b3JDb25uZWN0aW9ucy5hcHBlbmQoaWQpOwogICAgIH0KIH0K
IAotdm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmRpZENsb3NlKENsaWVudElEIGNsaWVudElE
KQordm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmRpZENsb3NlKENvbm5lY3Rpb25JRCBpZCkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChjbGllbnRJRCA9PSBt
X2NsaWVudENvbm5lY3Rpb24pIHsKKyAgICBpZiAoaWQgPT0gbV9jbGllbnRDb25uZWN0aW9uKSB7
CiAgICAgICAgIC8vIENvbm5lY3Rpb24gZnJvbSB0aGUgcmVtb3RlIGNsaWVudCBjbG9zZWQuCiAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKICAgICAgICAgICAgIGNsaWVudENvbm5l
Y3Rpb25DbG9zZWQoKTsKQEAgLTczLDI5ICs3MywyOSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNl
cnZlcjo6ZGlkQ2xvc2UoQ2xpZW50SUQgY2xpZW50SUQpCiAgICAgfQogCiAgICAgLy8gQ29ubmVj
dGlvbiBmcm9tIFdlYlByb2Nlc3MgY2xvc2VkLgotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IGNsaWVudElEXSB7Ci0gICAgICAgIGNvbm5lY3Rpb25DbG9zZWQoY2xpZW50SUQpOworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIGlkXSB7CisgICAgICAgIGNvbm5lY3Rpb25DbG9zZWQoaWQp
OwogICAgIH0pOwogfQogCiBIYXNoTWFwPFN0cmluZywgUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlv
bkNsaWVudDo6Q2FsbEhhbmRsZXI+JiBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmRpc3BhdGNoTWFw
KCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIENhbGxIYW5k
bGVyPj4gZGlzcGF0Y2hNYXAgPSBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+KHsKLSAgICAg
ICAgeyJTZXRUYXJnZXRMaXN0Il9zLCBzdGF0aWNfY2FzdDxDYWxsSGFuZGxlcj4oJlJlbW90ZUlu
c3BlY3RvclNlcnZlcjo6c2V0VGFyZ2V0TGlzdCl9LAotICAgICAgICB7IlNldHVwSW5zcGVjdG9y
Q2xpZW50Il9zLCBzdGF0aWNfY2FzdDxDYWxsSGFuZGxlcj4oJlJlbW90ZUluc3BlY3RvclNlcnZl
cjo6c2V0dXBJbnNwZWN0b3JDbGllbnQpfSwKLSAgICAgICAgeyJTZXR1cCJfcywgc3RhdGljX2Nh
c3Q8Q2FsbEhhbmRsZXI+KCZSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNldHVwKX0sCi0gICAgICAg
IHsiRnJvbnRlbmREaWRDbG9zZSJfcywgc3RhdGljX2Nhc3Q8Q2FsbEhhbmRsZXI+KCZSZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXI6OmNsb3NlKX0sCi0gICAgICAgIHsiU2VuZE1lc3NhZ2VUb0Zyb250ZW5k
Il9zLCBzdGF0aWNfY2FzdDxDYWxsSGFuZGxlcj4oJlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKX0sCi0gICAgICAgIHsiU2VuZE1lc3NhZ2VUb0JhY2tlbmQiX3Ms
IHN0YXRpY19jYXN0PENhbGxIYW5kbGVyPigmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVz
c2FnZVRvQmFja2VuZCl9LAorICAgICAgICB7IlNldFRhcmdldExpc3QiX3MsICZSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXI6OnNldFRhcmdldExpc3R9LAorICAgICAgICB7IlNldHVwSW5zcGVjdG9yQ2xp
ZW50Il9zLCAmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZXR1cEluc3BlY3RvckNsaWVudH0sCisg
ICAgICAgIHsiU2V0dXAiX3MsICZSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNldHVwfSwKKyAgICAg
ICAgeyJGcm9udGVuZERpZENsb3NlIl9zLCAmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpjbG9zZX0s
CisgICAgICAgIHsiU2VuZE1lc3NhZ2VUb0Zyb250ZW5kIl9zLCAmUmVtb3RlSW5zcGVjdG9yU2Vy
dmVyOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmR9LAorICAgICAgICB7IlNlbmRNZXNzYWdlVG9CYWNr
ZW5kIl9zLCAmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2FnZVRvQmFja2VuZH0sCiAg
ICAgfSk7CiAKICAgICByZXR1cm4gZGlzcGF0Y2hNYXA7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVj
dG9yU2VydmVyOjpzZW5kV2ViSW5zcGVjdG9yRXZlbnQoQ2xpZW50SUQgY2xpZW50SUQsIGNvbnN0
IFN0cmluZyYgZXZlbnQpCit2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2VuZFdlYkluc3Bl
Y3RvckV2ZW50KENvbm5lY3Rpb25JRCBpZCwgY29uc3QgU3RyaW5nJiBldmVudCkKIHsKICAgICBj
b25zdCBDU3RyaW5nIG1lc3NhZ2UgPSBldmVudC51dGY4KCk7Ci0gICAgbV9zZXJ2ZXItPnNlbmQo
Y2xpZW50SUQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lc3NhZ2UuZGF0YSgp
KSwgbWVzc2FnZS5sZW5ndGgoKSk7CisgICAgbV9zZXJ2ZXItPnNlbmQoaWQsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lc3NhZ2UuZGF0YSgpKSwgbWVzc2FnZS5sZW5ndGgoKSk7
CiB9CiAKIFJlbW90ZUluc3BlY3RvclNlcnZlciYgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5n
bGV0b24oKQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpz
ZXR1cChjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgc2VuZFdlYkluc3BlY3RvckV2ZW50KGV2ZW50
LmNvbm5lY3Rpb25JRC52YWx1ZSgpLCBzZXR1cEV2ZW50LT50b0pTT05TdHJpbmcoKSk7CiB9CiAK
LXZvaWQgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZW5kQ2xvc2VFdmVudCh1aW50NjRfdCBjb25u
ZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElEKQordm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6
OnNlbmRDbG9zZUV2ZW50KENvbm5lY3Rpb25JRCBjb25uZWN0aW9uSUQsIFRhcmdldElEIHRhcmdl
dElEKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTE4Niw3ICsxODYsNyBA
QCB2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6Y2xpZW50Q29ubmVjdGlvbkNsb3NlZCgpCiAg
ICAgbV9jbGllbnRDb25uZWN0aW9uID0gV1RGOjpudWxsb3B0OwogfQogCi12b2lkIFJlbW90ZUlu
c3BlY3RvclNlcnZlcjo6Y29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBjbGllbnRJRCkKK3ZvaWQg
UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpjb25uZWN0aW9uQ2xvc2VkKENvbm5lY3Rpb25JRCBjbGll
bnRJRCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKaW5kZXggZTkzZjhhZTk1YzUuLmI1MDgwYWVkNGUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5oCkBAIC00NiwzNCArNDYs
MzQgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU2VydmVyQ29ubmVj
dGlvbihQbGF0Zm9ybVNvY2tldFR5cGUpOwogCiBwcml2YXRlOgotICAgIHZvaWQgY29ubmVjdGlv
bkNsb3NlZCh1aW50NjRfdCBjb25uZWN0aW9uSUQpOworICAgIHZvaWQgY29ubmVjdGlvbkNsb3Nl
ZChDb25uZWN0aW9uSUQpOwogCi0gICAgdm9pZCBzZXRUYXJnZXRMaXN0KGNvbnN0IHN0cnVjdCBF
dmVudCYpOwotICAgIHZvaWQgc2V0dXBJbnNwZWN0b3JDbGllbnQoY29uc3Qgc3RydWN0IEV2ZW50
Jik7Ci0gICAgdm9pZCBzZXR1cChjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKLSAgICB2b2lkIGNsb3Nl
KGNvbnN0IHN0cnVjdCBFdmVudCYpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IHN0cnVjdCBFdmVudCYpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3Qg
c3RydWN0IEV2ZW50Jik7CisgICAgdm9pZCBzZXRUYXJnZXRMaXN0KGNvbnN0IEV2ZW50Jik7Cisg
ICAgdm9pZCBzZXR1cEluc3BlY3RvckNsaWVudChjb25zdCBFdmVudCYpOworICAgIHZvaWQgc2V0
dXAoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIGNsb3NlKGNvbnN0IEV2ZW50Jik7CisgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIHNlbmRNZXNz
YWdlVG9CYWNrZW5kKGNvbnN0IEV2ZW50Jik7CiAKLSAgICB2b2lkIHNlbmRDbG9zZUV2ZW50KHVp
bnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQpOworICAgIHZvaWQgc2VuZENs
b3NlRXZlbnQoQ29ubmVjdGlvbklELCBUYXJnZXRJRCk7CiAgICAgdm9pZCBjbGllbnRDb25uZWN0
aW9uQ2xvc2VkKCk7CiAKLSAgICB2b2lkIGRpZEFjY2VwdChDbGllbnRJRCwgU29ja2V0OjpEb21h
aW4pIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkQ2xvc2UoQ2xpZW50SUQpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkQWNjZXB0KENvbm5lY3Rpb25JRCwgU29ja2V0OjpEb21haW4pIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkQ2xvc2UoQ29ubmVjdGlvbklEKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2Vu
ZFdlYkluc3BlY3RvckV2ZW50KENsaWVudElELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNl
bmRXZWJJbnNwZWN0b3JFdmVudChDb25uZWN0aW9uSUQsIGNvbnN0IFN0cmluZyYpOwogCi0gICAg
SGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPiYgZGlzcGF0Y2hNYXAoKTsKKyAgICBIYXNoTWFw
PFN0cmluZywgQ2FsbEhhbmRsZXI+JiBkaXNwYXRjaE1hcCgpIG92ZXJyaWRlOwogCi0gICAgSGFz
aFNldDxzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Pj4gbV9pbnNwZWN0aW9uVGFyZ2V0czsK
KyAgICBIYXNoU2V0PHN0ZDo6cGFpcjxDb25uZWN0aW9uSUQsIFRhcmdldElEPj4gbV9pbnNwZWN0
aW9uVGFyZ2V0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQ+IG1fc2VydmVyOwogCiAgICAgLy8gQ29ubmVjdGlvbnMgdG8gdGhlIFdlYlByb2Nlc3Mu
Ci0gICAgVmVjdG9yPENsaWVudElEPiBtX2luc3BlY3RvckNvbm5lY3Rpb25zOworICAgIFZlY3Rv
cjxDb25uZWN0aW9uSUQ+IG1faW5zcGVjdG9yQ29ubmVjdGlvbnM7CiAgICAgTG9jayBtX2Nvbm5l
Y3Rpb25zTG9jazsKIAogICAgIC8vIENvbm5lY3Rpb25zIGZyb20gUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50LgotICAgIE9wdGlvbmFsPENsaWVudElEPiBtX2NsaWVudENvbm5lY3Rpb247CisgICAgT3B0
aW9uYWw8Q29ubmVjdGlvbklEPiBtX2NsaWVudENvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5j
cHAKaW5kZXggNzVkMjQ4NDY3N2EuLmI0MzFkZjBhN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcApAQCAtNTEsOSArNTEsOSBAQCBSZW1vdGVJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvcigpCiAgICAgc3RhcnQoKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OmRpZENsb3NlKENsaWVudElEIGNsaWVudElEKQordm9pZCBSZW1vdGVJbnNwZWN0b3I6
OmRpZENsb3NlKENvbm5lY3Rpb25JRCBpZCkKIHsKLSAgICBpZiAoY2xpZW50SUQgIT0gbV9jbGll
bnRJRC52YWx1ZSgpKQorICAgIGlmIChpZCAhPSBtX2NsaWVudElELnZhbHVlKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbPV0gewpAQCAtMTky
LDcgKzE5Miw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlv
bkNhbmRpZGF0ZU1lc3NhZ2UoKQogewogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1l
c3NhZ2VUb1JlbW90ZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShUYXJnZXRJ
RCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgTG9ja0hv
bGRlciBsb2NrKG1fbXV0ZXgpOwogICAgIGlmICghbV9zb2NrZXRDb25uZWN0aW9uKQpAQCAtMjYx
LDcgKzI2MSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZENsb3NlTWVzc2FnZShj
b25zdCBFdmVudCYgZXZlbnQpCiAgICAgICAgIGNvbm5lY3Rpb25Ub1RhcmdldC0+Y2xvc2UoKTsK
IH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwKHVuc2lnbmVkIHRhcmdldElkZW50aWZp
ZXIpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXAoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmll
cikKIHsKICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldDsKICAgICB7CkBAIC0y
ODQsNyArMjg0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwKHVuc2lnbmVkIHRhcmdl
dElkZW50aWZpZXIpCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CiB9CiAKLXZv
aWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvVGFyZ2V0KHVuc2lnbmVkIHRhcmdldElk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2Vu
ZE1lc3NhZ2VUb1RhcmdldChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKQogewogICAgIGlmIChhdXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29u
bmVjdGlvbk1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcikpCiAgICAgICAgIGNvbm5lY3Rpb25Ub1Rh
cmdldC0+c2VuZE1lc3NhZ2VUb1RhcmdldChTdHJpbmc6OmZyb21VVEY4KG1lc3NhZ2UpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JTb2NrZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuaAppbmRleCA3YmI3MDRlNmQxMC4u
MmYyZGFkYjI2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmgK
QEAgLTQxLDE2ICs0MSwxNiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAordXNpbmcgQ29u
bmVjdGlvbklEID0gdWludDMyX3Q7CisKICNpZiBPUyhXSU5ET1dTKQogCi11c2luZyBDbGllbnRJ
RCA9IHVuc2lnbmVkOwogdXNpbmcgUGxhdGZvcm1Tb2NrZXRUeXBlID0gU09DS0VUOwogdXNpbmcg
UG9sbGluZ0Rlc2NyaXB0b3IgPSBXU0FQT0xMRkQ7CiBjb25zdGV4cHIgUGxhdGZvcm1Tb2NrZXRU
eXBlIElOVkFMSURfU09DS0VUX1ZBTFVFID0gSU5WQUxJRF9TT0NLRVQ7CiAKICNlbHNlCiAKLXVz
aW5nIENsaWVudElEID0gdW5zaWduZWQ7CiB1c2luZyBQbGF0Zm9ybVNvY2tldFR5cGUgPSBpbnQ7
CiB1c2luZyBQb2xsaW5nRGVzY3JpcHRvciA9IHN0cnVjdCBwb2xsZmQ7CiBjb25zdGV4cHIgUGxh
dGZvcm1Tb2NrZXRUeXBlIElOVkFMSURfU09DS0VUX1ZBTFVFID0gLTE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRleCA0ZDMz
OWVkYjgzOC4uNjQ3ZmY2OTM1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojp3YWtldXBXb3JrZXJUaHJlYWQoKQogICAgICAgICBT
b2NrZXQ6OndyaXRlKG1fd2FrZXVwU2VuZFNvY2tldCwgIjEiLCAxKTsKIH0KIAotT3B0aW9uYWw8
Q2xpZW50SUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojpjb25uZWN0SW5ldChjb25z
dCBjaGFyKiBzZXJ2ZXJBZGRyZXNzLCB1aW50MTZfdCBzZXJ2ZXJQb3J0KQorT3B0aW9uYWw8Q29u
bmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y29ubmVjdEluZXQoY29u
c3QgY2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUG9ydCkKIHsKICAgICBpZiAo
YXV0byBzb2NrZXQgPSBTb2NrZXQ6OmNvbm5lY3Qoc2VydmVyQWRkcmVzcywgc2VydmVyUG9ydCkp
CiAgICAgICAgIHJldHVybiBjcmVhdGVDbGllbnQoKnNvY2tldCk7CkBAIC04Niw3ICs4Niw3IEBA
IGJvb2wgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6Omxpc3RlbkluZXQodWludDE2X3Qg
cG9ydCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVtb3RlSW5zcGVjdG9yU29ja2V0
RW5kcG9pbnQ6OmlzTGlzdGVuaW5nKENsaWVudElEIGlkKQorYm9vbCBSZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludDo6aXNMaXN0ZW5pbmcoQ29ubmVjdGlvbklEIGlkKQogewogICAgIExvY2tI
b2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5l
Y3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChpZCkpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6d29ya2VyVGhyZWFkKCkKIAogICAgIHdoaWxl
ICghbV9zaG91bGRBYm9ydFdvcmtlclRocmVhZCkgewogICAgICAgICBWZWN0b3I8UG9sbGluZ0Rl
c2NyaXB0b3I+IHBvbGxmZHM7Ci0gICAgICAgIFZlY3RvcjxDbGllbnRJRD4gaWRzOworICAgICAg
ICBWZWN0b3I8Q29ubmVjdGlvbklEPiBpZHM7CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tI
b2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKSB7CkBAIC0xMzIsMTQgKzEzMiwxNCBAQCB2
b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojp3b3JrZXJUaHJlYWQoKQogICAgIH0K
IH0KIAotT3B0aW9uYWw8Q2xpZW50SUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojpj
cmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKK09wdGlvbmFsPENvbm5lY3Rp
b25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9y
bVNvY2tldFR5cGUgc29ja2V0KQogewogICAgIGlmICghU29ja2V0Ojppc1ZhbGlkKHNvY2tldCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBMb2NrSG9sZGVyIGxvY2sobV9j
b25uZWN0aW9uc0xvY2spOwogCi0gICAgQ2xpZW50SUQgaWQ7CisgICAgQ29ubmVjdGlvbklEIGlk
OwogICAgIGRvIHsKICAgICAgICAgaWQgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigp
OwogICAgIH0gd2hpbGUgKCFpZCB8fCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkKSk7CkBAIC0x
NTEsNyArMTUxLDcgQEAgT3B0aW9uYWw8Q2xpZW50SUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXAKICAgICBjb25uZWN0aW9uLT5w
b2xsID0gU29ja2V0OjpwcmVwYXJlUG9sbGluZyhzb2NrZXQpOwogICAgIGNvbm5lY3Rpb24tPnNv
Y2tldCA9IHNvY2tldDsKICAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PE1lc3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwotICAgIGNvbm5lY3Rpb24t
PnBhcnNlci0+c2V0RGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIoW3RoaXNdKENsaWVudElEIGlkLCBW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CisgICAgY29ubmVjdGlvbi0+cGFyc2VyLT5zZXREaWRQ
YXJzZU1lc3NhZ2VMaXN0ZW5lcihbdGhpc10oQ29ubmVjdGlvbklEIGlkLCBWZWN0b3I8dWludDhf
dD4mJiBkYXRhKSB7CiAgICAgICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKICAgICAgICAgICAg
IG1faW5zcGVjdG9yQ2xpZW50LT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9yRXZlbnQoaWQsIFdURk1v
dmUoZGF0YSkpOwogICAgIH0pOwpAQCAtMTYxLDEwICsxNjEsMTAgQEAgT3B0aW9uYWw8Q2xpZW50
SUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1T
b2NrZXRUeXAKICAgICByZXR1cm4gaWQ7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0
RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQoQ2xpZW50SUQgY2xpZW50SUQpCit2b2lkIFJlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50OjpyZWN2SWZFbmFibGVkKENvbm5lY3Rpb25JRCBpZCkKIHsK
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOwotICAgIGlmIChjb25zdCBh
dXRvJiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoY2xpZW50SUQpKSB7CisgICAgaWYg
KGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChpZCkpIHsKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlY3ZCdWZmZXIoU29ja2V0OjpCdWZmZXJTaXplKTsKICAgICAg
ICAgaWYgKGF1dG8gcmVhZFNpemUgPSBTb2NrZXQ6OnJlYWQoY29ubmVjdGlvbi0+c29ja2V0LCBy
ZWN2QnVmZmVyLmRhdGEoKSwgcmVjdkJ1ZmZlci5zaXplKCkpKSB7CiAgICAgICAgICAgICBpZiAo
KnJlYWRTaXplID4gMCkKQEAgLTE3MywxOCArMTczLDE4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQoQ2xpZW50SUQgY2xpZW50SUQpCiAgICAgICAg
IH0KIAogICAgICAgICBTb2NrZXQ6OmNsb3NlKGNvbm5lY3Rpb24tPnNvY2tldCk7Ci0gICAgICAg
IG1fY29ubmVjdGlvbnMucmVtb3ZlKGNsaWVudElEKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5y
ZW1vdmUoaWQpOwogCiAgICAgICAgIGxvY2sudW5sb2NrRWFybHkoKTsKICAgICAgICAgaWYgKG1f
aW5zcGVjdG9yQ2xpZW50KQotICAgICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmRpZENsb3Nl
KGNsaWVudElEKTsKKyAgICAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5kaWRDbG9zZShpZCk7
CiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kSWZF
bmFibGVkKENsaWVudElEIGNsaWVudElEKQordm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludDo6c2VuZElmRW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCiB7CiAgICAgTG9ja0hvbGRlciBs
b2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKLSAgICBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9
IG1fY29ubmVjdGlvbnMuZ2V0KGNsaWVudElEKSkgeworICAgIGlmIChjb25zdCBhdXRvJiBjb25u
ZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoaWQpKSB7CiAgICAgICAgIFNvY2tldDo6Y2xlYXJX
YWl0aW5nV3JpdGFibGUoY29ubmVjdGlvbi0+cG9sbCk7CiAKICAgICAgICAgYXV0byYgYnVmZmVy
ID0gY29ubmVjdGlvbi0+c2VuZEJ1ZmZlcjsKQEAgLTIwNiwxMCArMjA2LDEwIEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmRJZkVuYWJsZWQoQ2xpZW50SUQgY2xpZW50
SUQpCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5k
KENsaWVudElEIGNsaWVudElELCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQoQ29ubmVjdGlvbklEIGlkLCBj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2so
bV9jb25uZWN0aW9uc0xvY2spOwotICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9j
b25uZWN0aW9ucy5nZXQoY2xpZW50SUQpKSB7CisgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLmdldChpZCkpIHsKICAgICAgICAgYXV0byBtZXNzYWdlID0gTWVz
c2FnZVBhcnNlcjo6Y3JlYXRlTWVzc2FnZShkYXRhLCBzaXplKTsKICAgICAgICAgaWYgKG1lc3Nh
Z2UuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZv
aWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQoQ2xpZW50SUQgY2xpZW50SUQs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjphY2NlcHRJbmV0U29ja2V0SWZFbmFibGVkKENsaWVudElEIGlkKQordm9p
ZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6YWNjZXB0SW5ldFNvY2tldElmRW5hYmxl
ZChDb25uZWN0aW9uSUQgaWQpCiB7CiAgICAgaWYgKCFpc0xpc3RlbmluZyhpZCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50LmgKaW5kZXggOTMzYWI5MDU3ZmMuLjY2OWE4NDg3ZjczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaApAQCAtNTIsMjMgKzUy
LDIzIEBAIHB1YmxpYzoKICAgICBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludChSZW1vdGVJ
bnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50KiwgY29uc3QgY2hhciopOwogICAgIH5SZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludCgpOwogCi0gICAgT3B0aW9uYWw8Q2xpZW50SUQ+IGNvbm5lY3RJ
bmV0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHIsIHVpbnQxNl90IHNlcnZlclBvcnQpOworICAgIE9w
dGlvbmFsPENvbm5lY3Rpb25JRD4gY29ubmVjdEluZXQoY29uc3QgY2hhciogc2VydmVyQWRkciwg
dWludDE2X3Qgc2VydmVyUG9ydCk7CiAgICAgYm9vbCBsaXN0ZW5JbmV0KHVpbnQxNl90IHBvcnQp
OwogCi0gICAgdm9pZCBzZW5kKENsaWVudElELCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qp
OworICAgIHZvaWQgc2VuZChDb25uZWN0aW9uSUQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCk7CiAKLSAgICBPcHRpb25hbDxDbGllbnRJRD4gY3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2V0
VHlwZSBmZCk7CisgICAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBjcmVhdGVDbGllbnQoUGxhdGZv
cm1Tb2NrZXRUeXBlIGZkKTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgcmVjdklmRW5hYmxlZChD
bGllbnRJRCk7Ci0gICAgdm9pZCBzZW5kSWZFbmFibGVkKENsaWVudElEKTsKKyAgICB2b2lkIHJl
Y3ZJZkVuYWJsZWQoQ29ubmVjdGlvbklEKTsKKyAgICB2b2lkIHNlbmRJZkVuYWJsZWQoQ29ubmVj
dGlvbklEKTsKICAgICB2b2lkIHdvcmtlclRocmVhZCgpOwogICAgIHZvaWQgd2FrZXVwV29ya2Vy
VGhyZWFkKCk7Ci0gICAgdm9pZCBhY2NlcHRJbmV0U29ja2V0SWZFbmFibGVkKENsaWVudElEKTsK
LSAgICBib29sIGlzTGlzdGVuaW5nKENsaWVudElEKTsKKyAgICB2b2lkIGFjY2VwdEluZXRTb2Nr
ZXRJZkVuYWJsZWQoQ29ubmVjdGlvbklEKTsKKyAgICBib29sIGlzTGlzdGVuaW5nKENvbm5lY3Rp
b25JRCk7CiAKICAgICBMb2NrIG1fY29ubmVjdGlvbnNMb2NrOwotICAgIEhhc2hNYXA8Q2xpZW50
SUQsIHN0ZDo6dW5pcXVlX3B0cjxTb2NrZXQ6OkNvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25zOwor
ICAgIEhhc2hNYXA8Q29ubmVjdGlvbklELCBzdGQ6OnVuaXF1ZV9wdHI8U29ja2V0OjpDb25uZWN0
aW9uPj4gbV9jb25uZWN0aW9uczsKIAogICAgIFBsYXRmb3JtU29ja2V0VHlwZSBtX3dha2V1cFNl
bmRTb2NrZXQgeyBJTlZBTElEX1NPQ0tFVF9WQUxVRSB9OwogICAgIFBsYXRmb3JtU29ja2V0VHlw
ZSBtX3dha2V1cFJlY2VpdmVTb2NrZXQgeyBJTlZBTElEX1NPQ0tFVF9WQUxVRSB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368193</attachid>
            <date>2019-04-24 15:46:10 -0700</date>
            <delta_ts>2019-04-25 11:03:56 -0700</delta_ts>
            <desc>Test for GTK/WPE and Mac/iOS build</desc>
            <filename>197243.diff</filename>
            <type>text/plain</type>
            <size>40061</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwCmluZGV4IGRkMWU3MDM1MDNiLi4y
MzM1YjI5ZWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cChib29sIGlz
QXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAgICAgaWYgKCFtX3RhcmdldCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9
IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1ZU9yKDApOworICAgIGF1dG8gdGFyZ2V0SWRl
bnRpZmllciA9IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1ZU9yKDApOwogCiAgICAgaWYg
KCFtX3RhcmdldCB8fCAhbV90YXJnZXQtPnJlbW90ZUNvbnRyb2xBbGxvd2VkKCkpIHsKICAgICAg
ICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0YXJnZXRJZGVudGlm
aWVyKTsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNs
b3NlKCkKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICByZXR1cm47CiAKLSAgICB1bnNpZ25l
ZCB0YXJnZXRJZGVudGlmaWVyID0gbV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsKKyAgICBh
dXRvIHRhcmdldElkZW50aWZpZXIgPSBtX3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwogCiAg
ICAgaWYgKG1fY29ubmVjdGVkKQogICAgICAgICBtX3RhcmdldC0+ZGlzY29ubmVjdCgqdGhpcyk7
CkBAIC0xMDYsOSArMTA2LDkgQEAgdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdl
dENsb3NlZCgpCiAgICAgbV90YXJnZXQgPSBudWxscHRyOwogfQogCi1PcHRpb25hbDx1bnNpZ25l
ZD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKK09w
dGlvbmFsPFRhcmdldElEPiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldElkZW50aWZp
ZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3RhcmdldCA/IE9wdGlvbmFsPHVuc2lnbmVkPiht
X3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
bV90YXJnZXQgPyBPcHRpb25hbDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIo
KSkgOiBXVEY6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQuaAppbmRleCA4YjBlMTRiYWJiNS4uZWVjZWEwZDNjYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCIKKyNpbmNsdWRlICJSZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaCIKICNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCkBAIC02
NSw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCB0YXJnZXRD
bG9zZWQoKTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0YXJnZXRJZGVudGlmaWVyKCkgY29u
c3Q7CisgICAgT3B0aW9uYWw8VGFyZ2V0SUQ+IHRhcmdldElkZW50aWZpZXIoKSBjb25zdDsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIoKSBj
b25zdDsKICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbnRyb2xsYWJsZVRh
cmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29u
dHJvbGxhYmxlVGFyZ2V0LmgKaW5kZXggNGJiYjZhNDQ4NjcuLjU0ZjIzYTU1OGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9s
bGFibGVUYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaApAQCAtMzgsNiArMzgsOCBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogY2xhc3MgRnJvbnRlbmRDaGFubmVsOwogCit1c2luZyBUYXJnZXRJRCA9
IHVuc2lnbmVkOworCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVDb250cm9sbGFibGVU
YXJnZXQgewogcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCgp
OwpAQCAtNDgsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoRnJv
bnRlbmRDaGFubmVsJiwgYm9vbCBpc0F1dG9tYXRpY0Nvbm5lY3Rpb24gPSBmYWxzZSwgYm9vbCBp
bW1lZGlhdGVseVBhdXNlID0gZmFsc2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVj
dChGcm9udGVuZENoYW5uZWwmKSA9IDA7CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgdm9pZCBzZXRUYXJnZXRJZGVu
dGlmaWVyKHVuc2lnbmVkIGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsg
fQorICAgIFRhcmdldElEIHRhcmdldElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KKyAgICB2b2lkIHNldFRhcmdldElkZW50aWZpZXIoVGFyZ2V0SUQgaWRlbnRpZmll
cikgeyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAKICAgICBlbnVtIGNsYXNzIFR5cGUg
eyBKYXZhU2NyaXB0LCBTZXJ2aWNlV29ya2VyLCBXZWIsIEF1dG9tYXRpb24gfTsKICAgICB2aXJ0
dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKQEAgLTYyLDcgKzY0LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKIHByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9pZGVudGlmaWVyIHsgMCB9OworICAgIFRh
cmdldElEIG1faWRlbnRpZmllciB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3Rvci5jcHAKaW5kZXggYzdkYWJmNjA3NDguLjlhNmE5NmYyOTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3Rvci5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6c3RhcnREaXNhYmxlZCgpCiAgICAgUmVtb3RlSW5zcGVjdG9yOjpzdGFydEVuYWJsZWQgPSBm
YWxzZTsKIH0KIAotdW5zaWduZWQgUmVtb3RlSW5zcGVjdG9yOjpuZXh0QXZhaWxhYmxlVGFyZ2V0
SWRlbnRpZmllcigpCitUYXJnZXRJRCBSZW1vdGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVUYXJn
ZXRJZGVudGlmaWVyKCkKIHsKLSAgICB1bnNpZ25lZCBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVy
OworICAgIFRhcmdldElEIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXI7CiAgICAgZG8gewogICAg
ICAgICBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyID0gbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRl
bnRpZmllcisrOwotICAgIH0gd2hpbGUgKCFuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyIHx8IG5l
eHRWYWxpZFRhcmdldElkZW50aWZpZXIgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpIHx8IG1fdGFyZ2V0TWFwLmNvbnRhaW5zKG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIp
KTsKKyAgICB9IHdoaWxlICghbmV4dFZhbGlkVGFyZ2V0SWRlbnRpZmllciB8fCBuZXh0VmFsaWRU
YXJnZXRJZGVudGlmaWVyID09IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0SUQ+OjptYXgoKSB8
fCBtX3RhcmdldE1hcC5jb250YWlucyhuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyKSk7CiAgICAg
cmV0dXJuIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXI7CiB9CiAKQEAgLTU5LDcgKzU5LDcgQEAg
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRh
cmdldCogdGFyZ2V0KQogCiAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogCi0gICAgdW5z
aWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IG5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCk7
CisgICAgYXV0byB0YXJnZXRJZGVudGlmaWVyID0gbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZp
ZXIoKTsKICAgICB0YXJnZXQtPnNldFRhcmdldElkZW50aWZpZXIodGFyZ2V0SWRlbnRpZmllcik7
CiAKICAgICB7CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1bnJlZ2lz
dGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQogCiAgICAgTG9ja0hv
bGRlciBsb2NrKG1fbXV0ZXgpOwogCi0gICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IHRh
cmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOworICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IHRh
cmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwogICAgIGlmICghdGFyZ2V0SWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6
OnVwZGF0ZVRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldCkKIAogICAgIExv
Y2tIb2xkZXIgbG9jayhtX211dGV4KTsKIAotICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIg
PSB0YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIg
PSB0YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsKICAgICBpZiAoIXRhcmdldElkZW50aWZpZXIp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpzZXRDbGllbnQoUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIGNsaWVudCkKICAgICBwdXNo
TGlzdGluZ3NTb29uKCk7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cEZhaWxlZCh1
bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwRmFp
bGVkKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1f
bXV0ZXgpOwogCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVw
RmFpbGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCiAgICAgcHVzaExpc3RpbmdzU29vbigp
OwogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb21wbGV0ZWQodW5zaWduZWQgdGFy
Z2V0SWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRlZChUYXJn
ZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogewogICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsK
IApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cENvbXBsZXRl
ZCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICBtX2F1dG9tYXRpY0luc3BlY3Rp
b25QYXVzZWQgPSBmYWxzZTsKIH0KIAotYm9vbCBSZW1vdGVJbnNwZWN0b3I6OndhaXRpbmdGb3JB
dXRvbWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVkKQorYm9vbCBSZW1vdGVJbnNwZWN0b3I6OndhaXRp
bmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKFRhcmdldElEKQogewogICAgIC8vIFdlIGRvbid0IHRh
a2UgdGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNhdXNlIHdlIGFzc3VtZSBpdCB3aWxsIGJlIGNo
ZWNrZWQgcmVwZWF0ZWRseS4KICAgICByZXR1cm4gbV9hdXRvbWF0aWNJbnNwZWN0aW9uUGF1c2Vk
OwpAQCAtMjA4LDcgKzIwOCw3IEBAIFRhcmdldExpc3RpbmcgUmVtb3RlSW5zcGVjdG9yOjpsaXN0
aW5nRm9yVGFyZ2V0KGNvbnN0IFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCYKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZVRhcmdldExpc3Rpbmco
dW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVU
YXJnZXRMaXN0aW5nKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiB7CiAgICAgYXV0byB0YXJn
ZXQgPSBtX3RhcmdldE1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcik7CiAgICAgaWYgKCF0YXJnZXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3Rvci5oCmluZGV4IDVlNWI4NjJlNjkzLi43MWI3Y2Y0ZWU1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yLmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQogCisjaW5jbHVkZSAiUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmgiCisKICNpbmNsdWRlIDx1
dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTExMywxNiArMTE1LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVGFyZ2V0
KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCopOwogICAgIHZvaWQgdW5yZWdpc3RlclRhcmdldChS
ZW1vdGVDb250cm9sbGFibGVUYXJnZXQqKTsKICAgICB2b2lkIHVwZGF0ZVRhcmdldChSZW1vdGVD
b250cm9sbGFibGVUYXJnZXQqKTsKLSAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGUodW5zaWdu
ZWQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHNl
bmRNZXNzYWdlVG9SZW1vdGUoVGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAg
ICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnQ7IH0KICAgICB2b2lkIHNldENsaWVudChSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCopOwogICAg
IHZvaWQgY2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7CiAgICAgT3B0aW9uYWw8UmVtb3Rl
SW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGllcz4gY2xpZW50Q2FwYWJpbGl0aWVzKCkgY29u
c3QgeyByZXR1cm4gbV9jbGllbnRDYXBhYmlsaXRpZXM7IH0KIAotICAgIHZvaWQgc2V0dXBGYWls
ZWQodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXR1cENvbXBsZXRlZCh1
bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKTsKLSAgICBib29sIHdhaXRpbmdGb3JBdXRvbWF0aWNJ
bnNwZWN0aW9uKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpOworICAgIHZvaWQgc2V0dXBGYWls
ZWQoVGFyZ2V0SUQpOworICAgIHZvaWQgc2V0dXBDb21wbGV0ZWQoVGFyZ2V0SUQpOworICAgIGJv
b2wgd2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oVGFyZ2V0SUQpOwogICAgIHZvaWQgdXBk
YXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0Kik7
CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KQEAgLTEz
OSwxNCArMTQxLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudFByb2Nlc3NJbmZvbWF0
aW9uSXNEZWxheWVkKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgdXBkYXRlVGFyZ2V0TGlzdGluZyh1
bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHVwZGF0ZVRhcmdldExpc3Rpbmco
VGFyZ2V0SUQpOwogCiAjaWYgVVNFKEdMSUIpCiAgICAgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24oY29uc3QgY2hhciogc2Vzc2lvbklELCBjb25zdCBDbGllbnQ6OlNlc3Npb25DYXBhYmls
aXRpZXMmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKSB8fCBQTEFURk9STShQTEFZU1RBVElPTikK
LSAgICB2b2lkIHNldHVwKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpOwotICAgIHZvaWQgc2Vu
ZE1lc3NhZ2VUb1RhcmdldCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKTsKKyAgICB2b2lkIHNldHVwKFRhcmdldElEKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdl
VG9UYXJnZXQoVGFyZ2V0SUQsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogI2VuZGlmCiAjaWYgUExB
VEZPUk0oUExBWVNUQVRJT04pCiAgICAgc3RhdGljIHZvaWQgc2V0Q29ubmVjdGlvbklkZW50aWZp
ZXIoUGxhdGZvcm1Tb2NrZXRUeXBlKTsKQEAgLTE1NSw3ICsxNTcsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFJlbW90ZUluc3BlY3RvcigpOwogCi0gICAgdW5zaWduZWQgbmV4dEF2YWlsYWJs
ZVRhcmdldElkZW50aWZpZXIoKTsKKyAgICBUYXJnZXRJRCBuZXh0QXZhaWxhYmxlVGFyZ2V0SWRl
bnRpZmllcigpOwogCiAgICAgZW51bSBjbGFzcyBTdG9wU291cmNlIHsgQVBJLCBYUENNZXNzYWdl
IH07CiAgICAgdm9pZCBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZSk7CkBAIC0xNjgsOSArMTcwLDkg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgR0RCdXNJbnRlcmZhY2VWVGFibGUgc19pbnRl
cmZhY2VWVGFibGU7CiAKICAgICB2b2lkIHJlY2VpdmVkR2V0VGFyZ2V0TGlzdE1lc3NhZ2UoKTsK
LSAgICB2b2lkIHJlY2VpdmVkU2V0dXBNZXNzYWdlKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIp
OwotICAgIHZvaWQgcmVjZWl2ZWREYXRhTWVzc2FnZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVy
LCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLSAgICB2b2lkIHJlY2VpdmVkQ2xvc2VNZXNzYWdlKHVu
c2lnbmVkIHRhcmdldElkZW50aWZpZXIpOworICAgIHZvaWQgcmVjZWl2ZWRTZXR1cE1lc3NhZ2Uo
VGFyZ2V0SUQpOworICAgIHZvaWQgcmVjZWl2ZWREYXRhTWVzc2FnZShUYXJnZXRJRCwgY29uc3Qg
Y2hhciogbWVzc2FnZSk7CisgICAgdm9pZCByZWNlaXZlZENsb3NlTWVzc2FnZShUYXJnZXRJRCk7
CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpb25TZXNzaW9uUmVxdWVzdE1lc3NhZ2UoY29uc3Qg
Y2hhciogc2Vzc2lvbklEKTsKICNlbmRpZgogCkBAIC0yMDYsMTQgKzIwOCwxNCBAQCBwcml2YXRl
OgogI2VuZGlmCiAjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCiAgICAgSGFzaE1hcDxTdHJpbmcs
IENhbGxIYW5kbGVyPiYgZGlzcGF0Y2hNYXAoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZENsb3Nl
KENsaWVudElEKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENsb3NlKENvbm5lY3Rpb25JRCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHNlbmRXZWJJbnNwZWN0b3JFdmVudChjb25zdCBTdHJpbmcmKTsK
IAotICAgIHZvaWQgcmVjZWl2ZWRHZXRUYXJnZXRMaXN0TWVzc2FnZShjb25zdCBzdHJ1Y3QgRXZl
bnQmKTsKLSAgICB2b2lkIHJlY2VpdmVkU2V0dXBNZXNzYWdlKGNvbnN0IHN0cnVjdCBFdmVudCYp
OwotICAgIHZvaWQgcmVjZWl2ZWREYXRhTWVzc2FnZShjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKLSAg
ICB2b2lkIHJlY2VpdmVkQ2xvc2VNZXNzYWdlKGNvbnN0IHN0cnVjdCBFdmVudCYpOworICAgIHZv
aWQgcmVjZWl2ZWRHZXRUYXJnZXRMaXN0TWVzc2FnZShjb25zdCBFdmVudCYpOworICAgIHZvaWQg
cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIHJlY2VpdmVkRGF0
YU1lc3NhZ2UoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIHJlY2VpdmVkQ2xvc2VNZXNzYWdlKGNv
bnN0IEV2ZW50Jik7CiAjZW5kaWYKICAgICBzdGF0aWMgYm9vbCBzdGFydEVuYWJsZWQ7CiAKQEAg
LTIyMyw5ICsyMjUsOSBAQCBwcml2YXRlOgogICAgIC8vIGZyb20gYW55IHRocmVhZC4KICAgICBM
b2NrIG1fbXV0ZXg7CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZW1vdGVDb250cm9sbGFibGVU
YXJnZXQqPiBtX3RhcmdldE1hcDsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8UmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0Pj4gbV90YXJnZXRDb25uZWN0aW9uTWFwOwotICAgIEhhc2hNYXA8
dW5zaWduZWQsIFRhcmdldExpc3Rpbmc+IG1fdGFyZ2V0TGlzdGluZ01hcDsKKyAgICBIYXNoTWFw
PFRhcmdldElELCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqPiBtX3RhcmdldE1hcDsKKyAgICBI
YXNoTWFwPFRhcmdldElELCBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Pj4gbV90YXJn
ZXRDb25uZWN0aW9uTWFwOworICAgIEhhc2hNYXA8VGFyZ2V0SUQsIFRhcmdldExpc3Rpbmc+IG1f
dGFyZ2V0TGlzdGluZ01hcDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlZlB0cjxSZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uPiBtX3JlbGF5Q29ubmVjdGlvbjsKQEAgLTIzOCw3ICsy
NDAsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludD4gbV9zb2NrZXRDb25uZWN0aW9u
OwogICAgIHN0YXRpYyBQbGF0Zm9ybVNvY2tldFR5cGUgc19jb25uZWN0aW9uSWRlbnRpZmllcjsK
LSAgICBPcHRpb25hbDxDbGllbnRJRD4gbV9jbGllbnRJRDsKKyAgICBPcHRpb25hbDxDb25uZWN0
aW9uSUQ+IG1fY2xpZW50SUQ7CiAjZW5kaWYKIAogICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50
KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKQEAgLTI0Nyw3ICsyNDksNyBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV94cGNRdWV1ZTsKICNlbmRp
ZgotICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIgeyAxIH07Cisg
ICAgVGFyZ2V0SUQgbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllciB7IDEgfTsKICAgICBp
bnQgbV9ub3RpZnlUb2tlbiB7IDAgfTsKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiB7IGZhbHNlIH07CkBAIC0yNjAsNyArMjYy
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkU2VuZFBhcmVudFByb2Nlc3NJbmZvcm1h
dGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9tYXRpY0luc3BlY3Rpb25FbmFibGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlvblBhdXNlZCB7IGZhbHNlIH07
Ci0gICAgdW5zaWduZWQgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlVGFyZ2V0SWRlbnRp
ZmllciB7IDAgfTsKKyAgICBUYXJnZXRJRCBtX2F1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVU
YXJnZXRJZGVudGlmaWVyIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCmlu
ZGV4IGI0NzQwYzZmMzA5Li45NzMwZGI4Mjg4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29j
b2EubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2Ev
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KQEAgLTEyMCw5ICsxMjAsOSBAQCBSZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQ6On5SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoKQogICAgIHRl
YXJkb3duUnVuTG9vcCgpOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKK09wdGlvbmFsPFRhcmdldElEPiBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldElkZW50aWZpZXIoKSBjb25zdAogewotICAg
IHJldHVybiBtX3RhcmdldCA/IE9wdGlvbmFsPHVuc2lnbmVkPihtX3RhcmdldC0+dGFyZ2V0SWRl
bnRpZmllcigpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25h
bDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7
CiB9CiAKIE5TU3RyaW5nICpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNvbm5lY3Rpb25JZGVu
dGlmaWVyKCkgY29uc3QKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGlj
YQogICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2ln
bmVkIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVudGlmaWVyKCkudmFsdWVPcigw
KTsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVudGlmaWVyKCku
dmFsdWVPcigwKTsKICAgICAKICAgICByZWYoKTsKICAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQo
XnsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFy
Z2V0Q2xvc2VkKCkKIAogdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKCkKIHsK
LSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gbV90YXJnZXQgPyBtX3RhcmdldC0+dGFy
Z2V0SWRlbnRpZmllcigpIDogMDsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSBtX3Rhcmdl
dCA/IG1fdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCkgOiAwOwogICAgIAogICAgIHJlZigpOwog
ICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0
b3JDb2NvYS5tbQppbmRleCA2NDY2YWFhOGI0MS4uNWJlZjIxY2JiMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3Rv
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5z
cGVjdGlvblRhcmdldCoKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsK
IAotICAgICAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVu
dGlmaWVyKCk7CisgICAgICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0
SWRlbnRpZmllcigpOwogICAgICAgICBpZiAoIXRhcmdldElkZW50aWZpZXIpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2Vu
ZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkKICAgICBtX3JlbGF5Q29ubmVj
dGlvbi0+c2VuZE1lc3NhZ2UoV0lSQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2Us
IGRldGFpbHMpOwogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90
ZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShUYXJnZXRJRCB0YXJnZXRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1f
bXV0ZXgpOwogCkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiAgICAgQkFJTF9JRl9VTkVY
UEVDVEVEX1RZUEVfQUxMT1dJTkdfTklMKGF1dG9tYXRpY2FsbHlQYXVzZU51bWJlciwgW05TTnVt
YmVyIGNsYXNzXSk7CiAgICAgQk9PTCBhdXRvbWF0aWNhbGx5UGF1c2UgPSBhdXRvbWF0aWNhbGx5
UGF1c2VOdW1iZXIuYm9vbFZhbHVlOwogCi0gICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9
IHRhcmdldElkZW50aWZpZXJOdW1iZXIudW5zaWduZWRJbnRWYWx1ZTsKKyAgICBUYXJnZXRJRCB0
YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRpZmllck51bWJlci51bnNpZ25lZEludFZhbHVl
OwogICAgIGlmICghdGFyZ2V0SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCkBAIC01Mzcs
NyArNTM3LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UoTlNE
aWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICBOU0RhdGEgKmRhdGEgPSB1c2VySW5mb1tXSVJTb2Nr
ZXREYXRhS2V5XTsKICAgICBCQUlMX0lGX1VORVhQRUNURURfVFlQRShkYXRhLCBbTlNEYXRhIGNs
YXNzXSk7CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRpZmll
ck51bWJlci51bnNpZ25lZEludFZhbHVlOworICAgIFRhcmdldElEIHRhcmdldElkZW50aWZpZXIg
PSB0YXJnZXRJZGVudGlmaWVyTnVtYmVyLnVuc2lnbmVkSW50VmFsdWU7CiAgICAgaWYgKCF0YXJn
ZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1
c2VySW5mbykKICAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSB1c2VySW5mb1tX
SVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07CiAgICAgQkFJTF9JRl9VTkVYUEVDVEVEX1RZUEUo
Y29ubmVjdGlvbklkZW50aWZpZXIsIFtOU1N0cmluZyBjbGFzc10pOwogCi0gICAgdW5zaWduZWQg
dGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldElkZW50aWZpZXJOdW1iZXIudW5zaWduZWRJbnRWYWx1
ZTsKKyAgICBUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRpZmllck51bWJl
ci51bnNpZ25lZEludFZhbHVlOwogICAgIGlmICghdGFyZ2V0SWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuOwogCkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiAgICAgQkFJTF9JRl9V
TkVYUEVDVEVEX1RZUEUoaW5kaWNhdGVFbmFibGVkTnVtYmVyLCBbTlNOdW1iZXIgY2xhc3NdKTsK
ICAgICBCT09MIGluZGljYXRlRW5hYmxlZCA9IGluZGljYXRlRW5hYmxlZE51bWJlci5ib29sVmFs
dWU7CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRpZmllck51
bWJlci51bnNpZ25lZEludFZhbHVlOworICAgIFRhcmdldElEIHRhcmdldElkZW50aWZpZXIgPSB0
YXJnZXRJZGVudGlmaWVyTnVtYmVyLnVuc2lnbmVkSW50VmFsdWU7CiAgICAgaWYgKCF0YXJnZXRJ
ZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRBdXRvbWF0aWNJbnNwZWN0aW9uUmVqZWN0TWVzc2FnZShO
U0RpY3Rpb25hcnkgKnVzZQogICAgIE5TTnVtYmVyICp0YXJnZXRJZGVudGlmaWVyTnVtYmVyID0g
dXNlckluZm9bV0lSVGFyZ2V0SWRlbnRpZmllcktleV07CiAgICAgQkFJTF9JRl9VTkVYUEVDVEVE
X1RZUEUodGFyZ2V0SWRlbnRpZmllck51bWJlciwgW05TTnVtYmVyIGNsYXNzXSk7CiAKLSAgICB1
bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRpZmllck51bWJlci51bnNpZ25l
ZEludFZhbHVlOworICAgIFRhcmdldElEIHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXRJZGVudGlm
aWVyTnVtYmVyLnVuc2lnbmVkSW50VmFsdWU7CiAgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCmlu
ZGV4IDk5MjRhN2EzOWJkLi41YWZmOGIzZTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3Bl
Y3RvckdsaWIuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVw
ZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCoK
ICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAKICAgICBBU1NFUlQodGFyZ2V0KTsKLSAg
ICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCk7
CisgICAgYXV0byB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCk7
CiAgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTI3Miw3
ICsyNzIsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZEF1dG9tYXRpY0luc3BlY3Rpb25D
YW5kaWRhdGVNZXNzYWdlKCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGF1dG9tYXRpYyBpbnNw
ZWN0aW9uLgogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZSh1
bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShUYXJnZXRJRCB0YXJnZXRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0
ZXgpOwogICAgIGlmICghbV9kYnVzQ29ubmVjdGlvbikKQEAgLTI5MSwxMiArMjkxLDEyIEBAIHZv
aWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldFRhcmdldExpc3RNZXNzYWdlKCkKICAgICBw
dXNoTGlzdGluZ3NOb3coKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0
dXBNZXNzYWdlKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKICAg
ICBzZXR1cCh0YXJnZXRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJl
Y2VpdmVkRGF0YU1lc3NhZ2UodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgY2hhciog
bWVzc2FnZSkKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNzYWdlKFRhcmdl
dElEIHRhcmdldElkZW50aWZpZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgUmVmUHRy
PFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldD4gY29ubmVjdGlvblRvVGFyZ2V0OwogICAgIHsKQEAg
LTMwOCw3ICszMDgsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREYXRhTWVzc2Fn
ZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBjaGFyKgogICAgIGNvbm5lY3Rpb25U
b1RhcmdldC0+c2VuZE1lc3NhZ2VUb1RhcmdldChTdHJpbmc6OmZyb21VVEY4KG1lc3NhZ2UpKTsK
IH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQ2xvc2VNZXNzYWdlKHVuc2lnbmVk
IHRhcmdldElkZW50aWZpZXIpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRDbG9zZU1l
c3NhZ2UoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBSZWZQdHI8UmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQ7CiAgICAgewpAQCAtMzI1LDcgKzMy
NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZENsb3NlTWVzc2FnZSh1bnNpZ25l
ZCB0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPmNsb3NlKCk7
CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cCh1bnNpZ25lZCB0YXJnZXRJZGVudGlm
aWVyKQordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwKFRhcmdldElEIHRhcmdldElkZW50aWZp
ZXIpCiB7CiAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0YXJnZXQ7CiAgICAgewpAQCAt
MzQ4LDcgKzM0OCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cCh1bnNpZ25lZCB0YXJn
ZXRJZGVudGlmaWVyKQogICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVnU2Vzc2lvbigpOwogfQogCi12
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1RhcmdldCh1bnNpZ25lZCB0YXJnZXRJ
ZGVudGlmaWVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNl
bmRNZXNzYWdlVG9UYXJnZXQoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgY2hhciog
bWVzc2FnZSkKIHsKICAgICBpZiAoYXV0byBjb25uZWN0aW9uVG9UYXJnZXQgPSBtX3RhcmdldENv
bm5lY3Rpb25NYXAuZ2V0KHRhcmdldElkZW50aWZpZXIpKQogICAgICAgICBjb25uZWN0aW9uVG9U
YXJnZXQtPnNlbmRNZXNzYWdlVG9UYXJnZXQoU3RyaW5nOjpmcm9tVVRGOChtZXNzYWdlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVu
dC5jcHAKaW5kZXggNzY1YzdiNDBhMjMuLjBlOTBmMThlNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29u
bmVjdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi12b2lkIFJlbW90ZUluc3BlY3Rv
ckNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmVXZWJJbnNwZWN0b3JFdmVudChDbGllbnRJRCBj
bGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yQ29u
bmVjdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KENvbm5lY3Rpb25JRCBj
bGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKIApAQCAtNTUsMTQgKzU1LDE0IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ29ubmVj
dGlvbkNsaWVudDo6ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KENsaWVudElEIGNsaWVuCiAg
ICAgaWYgKCFtZXNzYWdlT2JqZWN0LT5nZXRTdHJpbmcoImV2ZW50Il9zLCBtZXRob2ROYW1lKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RydWN0IEV2ZW50IGV2ZW50OworICAgIEV2ZW50IGV2
ZW50OwogICAgIGV2ZW50LmNsaWVudElEID0gY2xpZW50SUQ7CiAKLSAgICB1aW50NjRfdCBjb25u
ZWN0aW9uSUQ7CisgICAgQ29ubmVjdGlvbklEIGNvbm5lY3Rpb25JRDsKICAgICBpZiAobWVzc2Fn
ZU9iamVjdC0+Z2V0SW50ZWdlcigiY29ubmVjdGlvbklEIl9zLCBjb25uZWN0aW9uSUQpKQogICAg
ICAgICBldmVudC5jb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uSUQ7CiAKLSAgICB1aW50NjRfdCB0
YXJnZXRJRDsKKyAgICBUYXJnZXRJRCB0YXJnZXRJRDsKICAgICBpZiAobWVzc2FnZU9iamVjdC0+
Z2V0SW50ZWdlcigidGFyZ2V0SUQiX3MsIHRhcmdldElEKSkKICAgICAgICAgZXZlbnQudGFyZ2V0
SUQgPSB0YXJnZXRJRDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JDb25uZWN0aW9uQ2xpZW50LmgKaW5kZXggN2E2YTAyYjAwZjIuLjM0OGUzOTE2YmMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50
LmgKQEAgLTM1LDE4ICszNSwxOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgUmVt
b3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1v
dGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50PiB7CiBwdWJsaWM6Ci0gICAgdm9pZCBkaWRSZWNl
aXZlV2ViSW5zcGVjdG9yRXZlbnQoQ2xpZW50SUQsIFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQWNjZXB0KENsaWVudElELCBTb2NrZXQ6OkRvbWFpbikgeyB9OwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDbGllbnRJRCkgPSAwOworICAgIHZvaWQgZGlkUmVjZWl2
ZVdlYkluc3BlY3RvckV2ZW50KENvbm5lY3Rpb25JRCwgVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAg
IHZpcnR1YWwgdm9pZCBkaWRBY2NlcHQoQ29ubmVjdGlvbklELCBTb2NrZXQ6OkRvbWFpbikgeyB9
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb25uZWN0aW9uSUQpID0gMDsKIAogICAgIHN0
cnVjdCBFdmVudCB7Ci0gICAgICAgIENsaWVudElEIGNsaWVudElEOwotICAgICAgICBPcHRpb25h
bDx1aW50NjRfdD4gY29ubmVjdGlvbklEOwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gdGFy
Z2V0SUQ7CisgICAgICAgIENvbm5lY3Rpb25JRCBjbGllbnRJRCB7IH07CisgICAgICAgIE9wdGlv
bmFsPENvbm5lY3Rpb25JRD4gY29ubmVjdGlvbklEOworICAgICAgICBPcHRpb25hbDxUYXJnZXRJ
RD4gdGFyZ2V0SUQ7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbWVzc2FnZTsKICAgICB9Owog
Ci0gICAgdXNpbmcgQ2FsbEhhbmRsZXIgPSB2b2lkIChSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9u
Q2xpZW50OjoqKShjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKKyAgICB1c2luZyBDYWxsSGFuZGxlciA9
IHZvaWQgKFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OiopKGNvbnN0IEV2ZW50Jik7
CiAgICAgdmlydHVhbCBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+JiBkaXNwYXRjaE1hcCgp
ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JNZXNzYWdlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JNZXNz
YWdlUGFyc2VyLmNwcAppbmRleCAwNTA5ZGNhZGU5Yi4uMWJjY2Y5ZGUxYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JNZXNzYWdlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2FnZVBhcnNlci5jcHAKQEAgLTQx
LDggKzQxLDggQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAgICAgICAgICAgICAgICB8IDwtLS0t
LS0tLS0tLS0gc2l6ZSAtLS0tLS0tLS0tLS0+IHwKICovCiAKLU1lc3NhZ2VQYXJzZXI6Ok1lc3Nh
Z2VQYXJzZXIoQ2xpZW50SUQgY2xpZW50SUQsIHNpemVfdCBidWZmZXJTaXplKQotICAgIDogbV9j
bGllbnRJRChjbGllbnRJRCkKK01lc3NhZ2VQYXJzZXI6Ok1lc3NhZ2VQYXJzZXIoQ29ubmVjdGlv
bklEIGlkLCBzaXplX3QgYnVmZmVyU2l6ZSkKKyAgICA6IG1fY29ubmVjdGlvbklEKGlkKQogewog
ICAgIG1fYnVmZmVyLnJlc2VydmVDYXBhY2l0eShidWZmZXJTaXplKTsKIH0KQEAgLTEwNCw3ICsx
MDQsNyBAQCBib29sIE1lc3NhZ2VQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgbWVtY3B5KCZkYXRh
QnVmZmVyWzBdLCAmbV9idWZmZXJbc2l6ZW9mKHVpbnQzMl90KV0sIGRhdGFTaXplKTsKIAogICAg
ICAgICBpZiAobV9kaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcikKLSAgICAgICAgICAgIG1fZGlkUGFy
c2VNZXNzYWdlTGlzdGVuZXIobV9jbGllbnRJRCwgV1RGTW92ZShkYXRhQnVmZmVyKSk7CisgICAg
ICAgICAgICBtX2RpZFBhcnNlTWVzc2FnZUxpc3RlbmVyKG1fY29ubmVjdGlvbklELCBXVEZNb3Zl
KGRhdGFCdWZmZXIpKTsKIAogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbWVzc2FnZVNpemUp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JNZXNzYWdlUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2FnZVBh
cnNlci5oCmluZGV4IGQ1YjE5OGUyNTNkLi5hZTA1OWZkOGE5MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3Rvck1l
c3NhZ2VQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2FnZVBhcnNlci5oCkBAIC0zNiwxOCArMzYsMTgg
QEAgY2xhc3MgTWVzc2FnZVBhcnNlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBjcmVhdGVNZXNzYWdlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogCi0gICAgTWVzc2Fn
ZVBhcnNlcihDbGllbnRJRCwgc2l6ZV90KTsKKyAgICBNZXNzYWdlUGFyc2VyKENvbm5lY3Rpb25J
RCwgc2l6ZV90KTsKICAgICB2b2lkIHB1c2hSZWNlaXZlZERhdGEoY29uc3QgdWludDhfdCosIHNp
emVfdCk7Ci0gICAgdm9pZCBzZXREaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcihGdW5jdGlvbjx2b2lk
KENsaWVudElELCBWZWN0b3I8dWludDhfdD4pPiYmIGxpc3RlbmVyKSB7IG1fZGlkUGFyc2VNZXNz
YWdlTGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKTsgfQorICAgIHZvaWQgc2V0RGlkUGFyc2VN
ZXNzYWdlTGlzdGVuZXIoRnVuY3Rpb248dm9pZChDb25uZWN0aW9uSUQsIFZlY3Rvcjx1aW50OF90
Pik+JiYgbGlzdGVuZXIpIHsgbV9kaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lciA9IFdURk1vdmUobGlz
dGVuZXIpOyB9CiAKICAgICB2b2lkIGNsZWFyUmVjZWl2ZWREYXRhKCk7CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBwYXJzZSgpOwogCi0gICAgRnVuY3Rpb248dm9pZChDbGllbnRJRCwgVmVjdG9yPHVp
bnQ4X3Q+JiYpPiBtX2RpZFBhcnNlTWVzc2FnZUxpc3RlbmVyOworICAgIEZ1bmN0aW9uPHZvaWQo
Q29ubmVjdGlvbklELCBWZWN0b3I8dWludDhfdD4mJik+IG1fZGlkUGFyc2VNZXNzYWdlTGlzdGVu
ZXI7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwotICAgIENsaWVudElEIG1fY2xpZW50
SUQ7CisgICAgQ29ubmVjdGlvbklEIG1fY29ubmVjdGlvbklEOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3Bw
CmluZGV4IDNhNDUwOTgzYzA4Li5lNjBmYzUyNzcwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNlcnZlci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXI6OmFkZFNlcnZlckNvbm5lY3Rpb24oUGxhdGZvcm1Tb2NrZXRUeXBlIGlkZW50
aWZpZXIpCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6ZGlkQWNjZXB0
KENsaWVudElEIGNsaWVudElELCBTb2NrZXQ6OkRvbWFpbiB0eXBlKQordm9pZCBSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXI6OmRpZEFjY2VwdChDb25uZWN0aW9uSUQgaWQsIFNvY2tldDo6RG9tYWluIHR5
cGUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTUzLDE4ICs1MywxOCBA
QCB2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6ZGlkQWNjZXB0KENsaWVudElEIGNsaWVudElE
LCBTb2NrZXQ6OkRvbWFpbiB0eXBlKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnNwZWN0b3Ig
c2VydmVyIGNhbiBhY2NlcHQgb25seSAxIGNsaWVudCIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIG1fY2xpZW50Q29ubmVjdGlvbiA9IGNsaWVudElEOworICAgICAg
ICBtX2NsaWVudENvbm5lY3Rpb24gPSBpZDsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gU29ja2V0
OjpEb21haW46OkxvY2FsKSB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25z
TG9jayk7Ci0gICAgICAgIG1faW5zcGVjdG9yQ29ubmVjdGlvbnMuYXBwZW5kKGNsaWVudElEKTsK
KyAgICAgICAgbV9pbnNwZWN0b3JDb25uZWN0aW9ucy5hcHBlbmQoaWQpOwogICAgIH0KIH0KIAot
dm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmRpZENsb3NlKENsaWVudElEIGNsaWVudElEKQor
dm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmRpZENsb3NlKENvbm5lY3Rpb25JRCBpZCkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChjbGllbnRJRCA9PSBtX2Ns
aWVudENvbm5lY3Rpb24pIHsKKyAgICBpZiAoaWQgPT0gbV9jbGllbnRDb25uZWN0aW9uKSB7CiAg
ICAgICAgIC8vIENvbm5lY3Rpb24gZnJvbSB0aGUgcmVtb3RlIGNsaWVudCBjbG9zZWQuCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKICAgICAgICAgICAgIGNsaWVudENvbm5lY3Rp
b25DbG9zZWQoKTsKQEAgLTczLDI5ICs3MywyOSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZl
cjo6ZGlkQ2xvc2UoQ2xpZW50SUQgY2xpZW50SUQpCiAgICAgfQogCiAgICAgLy8gQ29ubmVjdGlv
biBmcm9tIFdlYlByb2Nlc3MgY2xvc2VkLgotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNs
aWVudElEXSB7Ci0gICAgICAgIGNvbm5lY3Rpb25DbG9zZWQoY2xpZW50SUQpOworICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIGlkXSB7CisgICAgICAgIGNvbm5lY3Rpb25DbG9zZWQoaWQpOwog
ICAgIH0pOwogfQogCiBIYXNoTWFwPFN0cmluZywgUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudDo6Q2FsbEhhbmRsZXI+JiBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmRpc3BhdGNoTWFwKCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVy
Pj4gZGlzcGF0Y2hNYXAgPSBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+KHsKLSAgICAgICAg
eyJTZXRUYXJnZXRMaXN0Il9zLCBzdGF0aWNfY2FzdDxDYWxsSGFuZGxlcj4oJlJlbW90ZUluc3Bl
Y3RvclNlcnZlcjo6c2V0VGFyZ2V0TGlzdCl9LAotICAgICAgICB7IlNldHVwSW5zcGVjdG9yQ2xp
ZW50Il9zLCBzdGF0aWNfY2FzdDxDYWxsSGFuZGxlcj4oJlJlbW90ZUluc3BlY3RvclNlcnZlcjo6
c2V0dXBJbnNwZWN0b3JDbGllbnQpfSwKLSAgICAgICAgeyJTZXR1cCJfcywgc3RhdGljX2Nhc3Q8
Q2FsbEhhbmRsZXI+KCZSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNldHVwKX0sCi0gICAgICAgIHsi
RnJvbnRlbmREaWRDbG9zZSJfcywgc3RhdGljX2Nhc3Q8Q2FsbEhhbmRsZXI+KCZSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXI6OmNsb3NlKX0sCi0gICAgICAgIHsiU2VuZE1lc3NhZ2VUb0Zyb250ZW5kIl9z
LCBzdGF0aWNfY2FzdDxDYWxsSGFuZGxlcj4oJlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKX0sCi0gICAgICAgIHsiU2VuZE1lc3NhZ2VUb0JhY2tlbmQiX3MsIHN0
YXRpY19jYXN0PENhbGxIYW5kbGVyPigmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2Fn
ZVRvQmFja2VuZCl9LAorICAgICAgICB7IlNldFRhcmdldExpc3QiX3MsICZSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXI6OnNldFRhcmdldExpc3R9LAorICAgICAgICB7IlNldHVwSW5zcGVjdG9yQ2xpZW50
Il9zLCAmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZXR1cEluc3BlY3RvckNsaWVudH0sCisgICAg
ICAgIHsiU2V0dXAiX3MsICZSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNldHVwfSwKKyAgICAgICAg
eyJGcm9udGVuZERpZENsb3NlIl9zLCAmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpjbG9zZX0sCisg
ICAgICAgIHsiU2VuZE1lc3NhZ2VUb0Zyb250ZW5kIl9zLCAmUmVtb3RlSW5zcGVjdG9yU2VydmVy
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmR9LAorICAgICAgICB7IlNlbmRNZXNzYWdlVG9CYWNrZW5k
Il9zLCAmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2FnZVRvQmFja2VuZH0sCiAgICAg
fSk7CiAKICAgICByZXR1cm4gZGlzcGF0Y2hNYXA7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9y
U2VydmVyOjpzZW5kV2ViSW5zcGVjdG9yRXZlbnQoQ2xpZW50SUQgY2xpZW50SUQsIGNvbnN0IFN0
cmluZyYgZXZlbnQpCit2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2VuZFdlYkluc3BlY3Rv
ckV2ZW50KENvbm5lY3Rpb25JRCBpZCwgY29uc3QgU3RyaW5nJiBldmVudCkKIHsKICAgICBjb25z
dCBDU3RyaW5nIG1lc3NhZ2UgPSBldmVudC51dGY4KCk7Ci0gICAgbV9zZXJ2ZXItPnNlbmQoY2xp
ZW50SUQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lc3NhZ2UuZGF0YSgpKSwg
bWVzc2FnZS5sZW5ndGgoKSk7CisgICAgbV9zZXJ2ZXItPnNlbmQoaWQsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KG1lc3NhZ2UuZGF0YSgpKSwgbWVzc2FnZS5sZW5ndGgoKSk7CiB9
CiAKIFJlbW90ZUluc3BlY3RvclNlcnZlciYgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0
b24oKQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZXR1
cChjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgc2VuZFdlYkluc3BlY3RvckV2ZW50KGV2ZW50LmNv
bm5lY3Rpb25JRC52YWx1ZSgpLCBzZXR1cEV2ZW50LT50b0pTT05TdHJpbmcoKSk7CiB9CiAKLXZv
aWQgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZW5kQ2xvc2VFdmVudCh1aW50NjRfdCBjb25uZWN0
aW9uSUQsIHVpbnQ2NF90IHRhcmdldElEKQordm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNl
bmRDbG9zZUV2ZW50KENvbm5lY3Rpb25JRCBjb25uZWN0aW9uSUQsIFRhcmdldElEIHRhcmdldElE
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTE4Niw3ICsxODYsNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6Y2xpZW50Q29ubmVjdGlvbkNsb3NlZCgpCiAgICAg
bV9jbGllbnRDb25uZWN0aW9uID0gV1RGOjpudWxsb3B0OwogfQogCi12b2lkIFJlbW90ZUluc3Bl
Y3RvclNlcnZlcjo6Y29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBjbGllbnRJRCkKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9yU2VydmVyOjpjb25uZWN0aW9uQ2xvc2VkKENvbm5lY3Rpb25JRCBjbGllbnRJ
RCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2Vy
dmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU2VydmVyLmgKaW5kZXggZTkzZjhhZTk1YzUuLmI1MDgwYWVkNGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU2VydmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5oCkBAIC00NiwzNCArNDYsMzQg
QEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU2VydmVyQ29ubmVjdGlv
bihQbGF0Zm9ybVNvY2tldFR5cGUpOwogCiBwcml2YXRlOgotICAgIHZvaWQgY29ubmVjdGlvbkNs
b3NlZCh1aW50NjRfdCBjb25uZWN0aW9uSUQpOworICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChD
b25uZWN0aW9uSUQpOwogCi0gICAgdm9pZCBzZXRUYXJnZXRMaXN0KGNvbnN0IHN0cnVjdCBFdmVu
dCYpOwotICAgIHZvaWQgc2V0dXBJbnNwZWN0b3JDbGllbnQoY29uc3Qgc3RydWN0IEV2ZW50Jik7
Ci0gICAgdm9pZCBzZXR1cChjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKLSAgICB2b2lkIGNsb3NlKGNv
bnN0IHN0cnVjdCBFdmVudCYpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IHN0cnVjdCBFdmVudCYpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3Qgc3Ry
dWN0IEV2ZW50Jik7CisgICAgdm9pZCBzZXRUYXJnZXRMaXN0KGNvbnN0IEV2ZW50Jik7CisgICAg
dm9pZCBzZXR1cEluc3BlY3RvckNsaWVudChjb25zdCBFdmVudCYpOworICAgIHZvaWQgc2V0dXAo
Y29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIGNsb3NlKGNvbnN0IEV2ZW50Jik7CisgICAgdm9pZCBz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdl
VG9CYWNrZW5kKGNvbnN0IEV2ZW50Jik7CiAKLSAgICB2b2lkIHNlbmRDbG9zZUV2ZW50KHVpbnQ2
NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQpOworICAgIHZvaWQgc2VuZENsb3Nl
RXZlbnQoQ29ubmVjdGlvbklELCBUYXJnZXRJRCk7CiAgICAgdm9pZCBjbGllbnRDb25uZWN0aW9u
Q2xvc2VkKCk7CiAKLSAgICB2b2lkIGRpZEFjY2VwdChDbGllbnRJRCwgU29ja2V0OjpEb21haW4p
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkQ2xvc2UoQ2xpZW50SUQpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkQWNjZXB0KENvbm5lY3Rpb25JRCwgU29ja2V0OjpEb21haW4pIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkQ2xvc2UoQ29ubmVjdGlvbklEKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2VuZFdl
Ykluc3BlY3RvckV2ZW50KENsaWVudElELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNlbmRX
ZWJJbnNwZWN0b3JFdmVudChDb25uZWN0aW9uSUQsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgSGFz
aE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPiYgZGlzcGF0Y2hNYXAoKTsKKyAgICBIYXNoTWFwPFN0
cmluZywgQ2FsbEhhbmRsZXI+JiBkaXNwYXRjaE1hcCgpIG92ZXJyaWRlOwogCi0gICAgSGFzaFNl
dDxzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Pj4gbV9pbnNwZWN0aW9uVGFyZ2V0czsKKyAg
ICBIYXNoU2V0PHN0ZDo6cGFpcjxDb25uZWN0aW9uSUQsIFRhcmdldElEPj4gbV9pbnNwZWN0aW9u
VGFyZ2V0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ+IG1fc2VydmVyOwogCiAgICAgLy8gQ29ubmVjdGlvbnMgdG8gdGhlIFdlYlByb2Nlc3MuCi0g
ICAgVmVjdG9yPENsaWVudElEPiBtX2luc3BlY3RvckNvbm5lY3Rpb25zOworICAgIFZlY3RvcjxD
b25uZWN0aW9uSUQ+IG1faW5zcGVjdG9yQ29ubmVjdGlvbnM7CiAgICAgTG9jayBtX2Nvbm5lY3Rp
b25zTG9jazsKIAogICAgIC8vIENvbm5lY3Rpb25zIGZyb20gUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LgotICAgIE9wdGlvbmFsPENsaWVudElEPiBtX2NsaWVudENvbm5lY3Rpb247CisgICAgT3B0aW9u
YWw8Q29ubmVjdGlvbklEPiBtX2NsaWVudENvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
aW5kZXggNzVkMjQ4NDY3N2EuLmI0MzFkZjBhN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU29ja2V0LmNwcApAQCAtNTEsOSArNTEsOSBAQCBSZW1vdGVJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvcigpCiAgICAgc3RhcnQoKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0
b3I6OmRpZENsb3NlKENsaWVudElEIGNsaWVudElEKQordm9pZCBSZW1vdGVJbnNwZWN0b3I6OmRp
ZENsb3NlKENvbm5lY3Rpb25JRCBpZCkKIHsKLSAgICBpZiAoY2xpZW50SUQgIT0gbV9jbGllbnRJ
RC52YWx1ZSgpKQorICAgIGlmIChpZCAhPSBtX2NsaWVudElELnZhbHVlKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbPV0gewpAQCAtMTkyLDcg
KzE5Miw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0b21hdGljSW5zcGVjdGlvbkNh
bmRpZGF0ZU1lc3NhZ2UoKQogewogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3Nh
Z2VUb1JlbW90ZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShUYXJnZXRJRCB0
YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgTG9ja0hvbGRl
ciBsb2NrKG1fbXV0ZXgpOwogICAgIGlmICghbV9zb2NrZXRDb25uZWN0aW9uKQpAQCAtMjYxLDcg
KzI2MSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZENsb3NlTWVzc2FnZShjb25z
dCBFdmVudCYgZXZlbnQpCiAgICAgICAgIGNvbm5lY3Rpb25Ub1RhcmdldC0+Y2xvc2UoKTsKIH0K
IAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIp
Cit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXAoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikK
IHsKICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdldDsKICAgICB7CkBAIC0yODQs
NyArMjg0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwKHVuc2lnbmVkIHRhcmdldElk
ZW50aWZpZXIpCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7CiB9CiAKLXZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvVGFyZ2V0KHVuc2lnbmVkIHRhcmdldElkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1l
c3NhZ2VUb1RhcmdldChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBjaGFyKiBtZXNz
YWdlKQogewogICAgIGlmIChhdXRvIGNvbm5lY3Rpb25Ub1RhcmdldCA9IG1fdGFyZ2V0Q29ubmVj
dGlvbk1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcikpCiAgICAgICAgIGNvbm5lY3Rpb25Ub1Rhcmdl
dC0+c2VuZE1lc3NhZ2VUb1RhcmdldChTdHJpbmc6OmZyb21VVEY4KG1lc3NhZ2UpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JTb2NrZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuaAppbmRleCA3YmI3MDRlNmQxMC4uMmYy
ZGFkYjI2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmgKQEAg
LTQxLDE2ICs0MSwxNiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAordXNpbmcgQ29ubmVj
dGlvbklEID0gdWludDMyX3Q7CisKICNpZiBPUyhXSU5ET1dTKQogCi11c2luZyBDbGllbnRJRCA9
IHVuc2lnbmVkOwogdXNpbmcgUGxhdGZvcm1Tb2NrZXRUeXBlID0gU09DS0VUOwogdXNpbmcgUG9s
bGluZ0Rlc2NyaXB0b3IgPSBXU0FQT0xMRkQ7CiBjb25zdGV4cHIgUGxhdGZvcm1Tb2NrZXRUeXBl
IElOVkFMSURfU09DS0VUX1ZBTFVFID0gSU5WQUxJRF9TT0NLRVQ7CiAKICNlbHNlCiAKLXVzaW5n
IENsaWVudElEID0gdW5zaWduZWQ7CiB1c2luZyBQbGF0Zm9ybVNvY2tldFR5cGUgPSBpbnQ7CiB1
c2luZyBQb2xsaW5nRGVzY3JpcHRvciA9IHN0cnVjdCBwb2xsZmQ7CiBjb25zdGV4cHIgUGxhdGZv
cm1Tb2NrZXRUeXBlIElOVkFMSURfU09DS0VUX1ZBTFVFID0gLTE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRleCA0ZDMzOWVk
YjgzOC4uNjQ3ZmY2OTM1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50Ojp3YWtldXBXb3JrZXJUaHJlYWQoKQogICAgICAgICBTb2Nr
ZXQ6OndyaXRlKG1fd2FrZXVwU2VuZFNvY2tldCwgIjEiLCAxKTsKIH0KIAotT3B0aW9uYWw8Q2xp
ZW50SUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojpjb25uZWN0SW5ldChjb25zdCBj
aGFyKiBzZXJ2ZXJBZGRyZXNzLCB1aW50MTZfdCBzZXJ2ZXJQb3J0KQorT3B0aW9uYWw8Q29ubmVj
dGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y29ubmVjdEluZXQoY29uc3Qg
Y2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUG9ydCkKIHsKICAgICBpZiAoYXV0
byBzb2NrZXQgPSBTb2NrZXQ6OmNvbm5lY3Qoc2VydmVyQWRkcmVzcywgc2VydmVyUG9ydCkpCiAg
ICAgICAgIHJldHVybiBjcmVhdGVDbGllbnQoKnNvY2tldCk7CkBAIC04Niw3ICs4Niw3IEBAIGJv
b2wgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6Omxpc3RlbkluZXQodWludDE2X3QgcG9y
dCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQ6OmlzTGlzdGVuaW5nKENsaWVudElEIGlkKQorYm9vbCBSZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludDo6aXNMaXN0ZW5pbmcoQ29ubmVjdGlvbklEIGlkKQogewogICAgIExvY2tIb2xk
ZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CiAgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25zLmdldChpZCkpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6d29ya2VyVGhyZWFkKCkKIAogICAgIHdoaWxlICgh
bV9zaG91bGRBYm9ydFdvcmtlclRocmVhZCkgewogICAgICAgICBWZWN0b3I8UG9sbGluZ0Rlc2Ny
aXB0b3I+IHBvbGxmZHM7Ci0gICAgICAgIFZlY3RvcjxDbGllbnRJRD4gaWRzOworICAgICAgICBW
ZWN0b3I8Q29ubmVjdGlvbklEPiBpZHM7CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKSB7CkBAIC0xMzIsMTQgKzEzMiwxNCBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojp3b3JrZXJUaHJlYWQoKQogICAgIH0KIH0K
IAotT3B0aW9uYWw8Q2xpZW50SUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpjcmVh
dGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKK09wdGlvbmFsPENvbm5lY3Rpb25J
RD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9ybVNv
Y2tldFR5cGUgc29ja2V0KQogewogICAgIGlmICghU29ja2V0Ojppc1ZhbGlkKHNvY2tldCkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25u
ZWN0aW9uc0xvY2spOwogCi0gICAgQ2xpZW50SUQgaWQ7CisgICAgQ29ubmVjdGlvbklEIGlkOwog
ICAgIGRvIHsKICAgICAgICAgaWQgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwog
ICAgIH0gd2hpbGUgKCFpZCB8fCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGlkKSk7CkBAIC0xNTEs
NyArMTUxLDcgQEAgT3B0aW9uYWw8Q2xpZW50SUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXAKICAgICBjb25uZWN0aW9uLT5wb2xs
ID0gU29ja2V0OjpwcmVwYXJlUG9sbGluZyhzb2NrZXQpOwogICAgIGNvbm5lY3Rpb24tPnNvY2tl
dCA9IHNvY2tldDsKICAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1l
c3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwotICAgIGNvbm5lY3Rpb24tPnBh
cnNlci0+c2V0RGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIoW3RoaXNdKENsaWVudElEIGlkLCBWZWN0
b3I8dWludDhfdD4mJiBkYXRhKSB7CisgICAgY29ubmVjdGlvbi0+cGFyc2VyLT5zZXREaWRQYXJz
ZU1lc3NhZ2VMaXN0ZW5lcihbdGhpc10oQ29ubmVjdGlvbklEIGlkLCBWZWN0b3I8dWludDhfdD4m
JiBkYXRhKSB7CiAgICAgICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKICAgICAgICAgICAgIG1f
aW5zcGVjdG9yQ2xpZW50LT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9yRXZlbnQoaWQsIFdURk1vdmUo
ZGF0YSkpOwogICAgIH0pOwpAQCAtMTYxLDEwICsxNjEsMTAgQEAgT3B0aW9uYWw8Q2xpZW50SUQ+
IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2Nr
ZXRUeXAKICAgICByZXR1cm4gaWQ7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQ6OnJlY3ZJZkVuYWJsZWQoQ2xpZW50SUQgY2xpZW50SUQpCit2b2lkIFJlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50OjpyZWN2SWZFbmFibGVkKENvbm5lY3Rpb25JRCBpZCkKIHsKICAg
ICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOwotICAgIGlmIChjb25zdCBhdXRv
JiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoY2xpZW50SUQpKSB7CisgICAgaWYgKGNv
bnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChpZCkpIHsKICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHJlY3ZCdWZmZXIoU29ja2V0OjpCdWZmZXJTaXplKTsKICAgICAgICAg
aWYgKGF1dG8gcmVhZFNpemUgPSBTb2NrZXQ6OnJlYWQoY29ubmVjdGlvbi0+c29ja2V0LCByZWN2
QnVmZmVyLmRhdGEoKSwgcmVjdkJ1ZmZlci5zaXplKCkpKSB7CiAgICAgICAgICAgICBpZiAoKnJl
YWRTaXplID4gMCkKQEAgLTE3MywxOCArMTczLDE4IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQoQ2xpZW50SUQgY2xpZW50SUQpCiAgICAgICAgIH0K
IAogICAgICAgICBTb2NrZXQ6OmNsb3NlKGNvbm5lY3Rpb24tPnNvY2tldCk7Ci0gICAgICAgIG1f
Y29ubmVjdGlvbnMucmVtb3ZlKGNsaWVudElEKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5yZW1v
dmUoaWQpOwogCiAgICAgICAgIGxvY2sudW5sb2NrRWFybHkoKTsKICAgICAgICAgaWYgKG1faW5z
cGVjdG9yQ2xpZW50KQotICAgICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmRpZENsb3NlKGNs
aWVudElEKTsKKyAgICAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5kaWRDbG9zZShpZCk7CiAg
ICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kSWZFbmFi
bGVkKENsaWVudElEIGNsaWVudElEKQordm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2lu
dDo6c2VuZElmRW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCiB7CiAgICAgTG9ja0hvbGRlciBsb2Nr
KG1fY29ubmVjdGlvbnNMb2NrKTsKLSAgICBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlvbiA9IG1f
Y29ubmVjdGlvbnMuZ2V0KGNsaWVudElEKSkgeworICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0
aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoaWQpKSB7CiAgICAgICAgIFNvY2tldDo6Y2xlYXJXYWl0
aW5nV3JpdGFibGUoY29ubmVjdGlvbi0+cG9sbCk7CiAKICAgICAgICAgYXV0byYgYnVmZmVyID0g
Y29ubmVjdGlvbi0+c2VuZEJ1ZmZlcjsKQEAgLTIwNiwxMCArMjA2LDEwIEBAIHZvaWQgUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmRJZkVuYWJsZWQoQ2xpZW50SUQgY2xpZW50SUQp
CiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kKENs
aWVudElEIGNsaWVudElELCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQg
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQoQ29ubmVjdGlvbklEIGlkLCBjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9j
b25uZWN0aW9uc0xvY2spOwotICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jb25u
ZWN0aW9ucy5nZXQoY2xpZW50SUQpKSB7CisgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24g
PSBtX2Nvbm5lY3Rpb25zLmdldChpZCkpIHsKICAgICAgICAgYXV0byBtZXNzYWdlID0gTWVzc2Fn
ZVBhcnNlcjo6Y3JlYXRlTWVzc2FnZShkYXRhLCBzaXplKTsKICAgICAgICAgaWYgKG1lc3NhZ2Uu
aXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQg
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQoQ2xpZW50SUQgY2xpZW50SUQsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjphY2NlcHRJbmV0U29ja2V0SWZFbmFibGVkKENsaWVudElEIGlkKQordm9pZCBS
ZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6YWNjZXB0SW5ldFNvY2tldElmRW5hYmxlZChD
b25uZWN0aW9uSUQgaWQpCiB7CiAgICAgaWYgKCFpc0xpc3RlbmluZyhpZCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50LmgKaW5kZXggOTMzYWI5MDU3ZmMuLjY2OWE4NDg3ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaApAQCAtNTIsMjMgKzUyLDIz
IEBAIHB1YmxpYzoKICAgICBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludChSZW1vdGVJbnNw
ZWN0b3JDb25uZWN0aW9uQ2xpZW50KiwgY29uc3QgY2hhciopOwogICAgIH5SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludCgpOwogCi0gICAgT3B0aW9uYWw8Q2xpZW50SUQ+IGNvbm5lY3RJbmV0
KGNvbnN0IGNoYXIqIHNlcnZlckFkZHIsIHVpbnQxNl90IHNlcnZlclBvcnQpOworICAgIE9wdGlv
bmFsPENvbm5lY3Rpb25JRD4gY29ubmVjdEluZXQoY29uc3QgY2hhciogc2VydmVyQWRkciwgdWlu
dDE2X3Qgc2VydmVyUG9ydCk7CiAgICAgYm9vbCBsaXN0ZW5JbmV0KHVpbnQxNl90IHBvcnQpOwog
Ci0gICAgdm9pZCBzZW5kKENsaWVudElELCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwor
ICAgIHZvaWQgc2VuZChDb25uZWN0aW9uSUQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7
CiAKLSAgICBPcHRpb25hbDxDbGllbnRJRD4gY3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2V0VHlw
ZSBmZCk7CisgICAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBjcmVhdGVDbGllbnQoUGxhdGZvcm1T
b2NrZXRUeXBlIGZkKTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgcmVjdklmRW5hYmxlZChDbGll
bnRJRCk7Ci0gICAgdm9pZCBzZW5kSWZFbmFibGVkKENsaWVudElEKTsKKyAgICB2b2lkIHJlY3ZJ
ZkVuYWJsZWQoQ29ubmVjdGlvbklEKTsKKyAgICB2b2lkIHNlbmRJZkVuYWJsZWQoQ29ubmVjdGlv
bklEKTsKICAgICB2b2lkIHdvcmtlclRocmVhZCgpOwogICAgIHZvaWQgd2FrZXVwV29ya2VyVGhy
ZWFkKCk7Ci0gICAgdm9pZCBhY2NlcHRJbmV0U29ja2V0SWZFbmFibGVkKENsaWVudElEKTsKLSAg
ICBib29sIGlzTGlzdGVuaW5nKENsaWVudElEKTsKKyAgICB2b2lkIGFjY2VwdEluZXRTb2NrZXRJ
ZkVuYWJsZWQoQ29ubmVjdGlvbklEKTsKKyAgICBib29sIGlzTGlzdGVuaW5nKENvbm5lY3Rpb25J
RCk7CiAKICAgICBMb2NrIG1fY29ubmVjdGlvbnNMb2NrOwotICAgIEhhc2hNYXA8Q2xpZW50SUQs
IHN0ZDo6dW5pcXVlX3B0cjxTb2NrZXQ6OkNvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25zOworICAg
IEhhc2hNYXA8Q29ubmVjdGlvbklELCBzdGQ6OnVuaXF1ZV9wdHI8U29ja2V0OjpDb25uZWN0aW9u
Pj4gbV9jb25uZWN0aW9uczsKIAogICAgIFBsYXRmb3JtU29ja2V0VHlwZSBtX3dha2V1cFNlbmRT
b2NrZXQgeyBJTlZBTElEX1NPQ0tFVF9WQUxVRSB9OwogICAgIFBsYXRmb3JtU29ja2V0VHlwZSBt
X3dha2V1cFJlY2VpdmVTb2NrZXQgeyBJTlZBTElEX1NPQ0tFVF9WQUxVRSB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368249</attachid>
            <date>2019-04-25 11:03:56 -0700</date>
            <delta_ts>2019-04-25 11:54:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>197243.diff</filename>
            <type>text/plain</type>
            <size>45266</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGYxYWUyMmJkYWFmLi5mYTk2MmNjZWVmZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTktMDQtMjUgIEJhc3Vr
ZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgorCisgICAgICAgIFtSZW1vdGVJbnNw
ZWN0b3JdIEZpeCBjb25uZWN0aW9uIGFuZCB0YXJnZXQgaWRlbnRpZmllciB0eXBlcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzI0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdpdmUgZGVkaWNhdGVk
IHR5cGUgZm9yIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCdzIGlkZW50aWZpZXIgYXMgSW5zcGVj
dG9yOjpUYXJnZXRJRC4KKworICAgICAgICBBbHNvIHJlbmFtZSBDbGllbnRJRCB0eXBlIHVzZWQg
aW4gU29ja2V0IGJhY2tlbmQgdG8gQ29ubmVjdGlvbklEIGJlY2F1c2UgdGhpcyBpcyB0aGUgaWRl
bnRpZmllcgorICAgICAgICBzb2NrZXQgZW5kcG9pbnQgYXNzaWduIHRvIHRoZSBuZXdseSBjcmVh
dGVkIGNvbm5lY3Rpb24uIFRoZSBzaXplIHdhcyBjaGFuZ2VkIHRvIHVpbnQzMl90LgorICAgICAg
ICBFbm91Z2ggc2l6ZSBmb3IgbWFuYWdpbmcgY29ubmVjdGlvbnMuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXApOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyIGNvbnN0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6Om5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWdpc3RlclRhcmdldCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dW5yZWdpc3RlclRhcmdldCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlVGFyZ2V0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXR1cEZhaWxlZCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb21wbGV0ZWQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVUYXJnZXRMaXN0aW5n
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2Eu
bW06CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0
SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldDo6c2V0dXApOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQ6OmNsb3NlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUlu
c3BlY3RvckNvY29hLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnVw
ZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9SZW1vdGUpOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERhdGFNZXNzYWdlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZERpZENsb3NlTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRJbmRpY2F0ZU1lc3NhZ2Up
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21hdGlj
SW5zcGVjdGlvblJlamVjdE1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvZ2xp
Yi9SZW1vdGVJbnNwZWN0b3JHbGliLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yOjp1cGRhdGVBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZFNldHVwTWVzc2FnZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREYXRhTWVzc2FnZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRDbG9zZU1lc3NhZ2Up
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldHVwKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvVGFyZ2V0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xp
ZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudDo6ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50Lmg6CisgICAgICAg
IChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZEFjY2VwdCk6
CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2Fn
ZVBhcnNlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Ok1lc3NhZ2VQYXJzZXI6Ok1lc3NhZ2VQ
YXJzZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpNZXNzYWdlUGFyc2VyOjpwYXJzZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2FnZVBhcnNl
ci5oOgorICAgICAgICAoSW5zcGVjdG9yOjpNZXNzYWdlUGFyc2VyOjpzZXREaWRQYXJzZU1lc3Nh
Z2VMaXN0ZW5lcik6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yU2VydmVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2Vy
dmVyOjpkaWRBY2NlcHQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2
ZXI6OmRpZENsb3NlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVy
OjpkaXNwYXRjaE1hcCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZl
cjo6c2VuZFdlYkluc3BlY3RvckV2ZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yU2VydmVyOjpzZW5kQ2xvc2VFdmVudCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvclNlcnZlcjo6Y29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg6CisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpkaWRDbG9zZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0dXApOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9UYXJnZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNvbm5lY3RJbmV0KToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmlzTGlz
dGVuaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQ6OndvcmtlclRocmVhZCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6cmVjdklmRW5hYmxlZCk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpzZW5kSWZFbmFibGVkKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6YWNjZXB0SW5l
dFNvY2tldElmRW5hYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaDoKKwogMjAxOS0wNC0yMiAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSB2b2xhdGlsZSBsb2Fk
IHRvIHBvcHVsYXRlIGJhY2tpbmcgcGFnZSBpbiBNYXJrZWRCbG9jazo6Rm9vdGVyIGluc3RlYWQg
b2YgdXNpbmcgaG9sZExvY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwCmlu
ZGV4IGRkMWU3MDM1MDNiLi4yMzM1YjI5ZWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAg
ICAgaWYgKCFtX3RhcmdldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQg
dGFyZ2V0SWRlbnRpZmllciA9IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1ZU9yKDApOwor
ICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1
ZU9yKDApOwogCiAgICAgaWYgKCFtX3RhcmdldCB8fCAhbV90YXJnZXQtPnJlbW90ZUNvbnRyb2xB
bGxvd2VkKCkpIHsKICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZh
aWxlZCh0YXJnZXRJZGVudGlmaWVyKTsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBSZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQ6OmNsb3NlKCkKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICByZXR1
cm47CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gbV90YXJnZXQtPnRhcmdldElk
ZW50aWZpZXIoKTsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSBtX3RhcmdldC0+dGFyZ2V0
SWRlbnRpZmllcigpOwogCiAgICAgaWYgKG1fY29ubmVjdGVkKQogICAgICAgICBtX3RhcmdldC0+
ZGlzY29ubmVjdCgqdGhpcyk7CkBAIC0xMDYsOSArMTA2LDkgQEAgdm9pZCBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OnRhcmdldENsb3NlZCgpCiAgICAgbV90YXJnZXQgPSBudWxscHRyOwogfQog
Ci1PcHRpb25hbDx1bnNpZ25lZD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVu
dGlmaWVyKCkgY29uc3QKK09wdGlvbmFsPFRhcmdldElEPiBSZW1vdGVDb25uZWN0aW9uVG9UYXJn
ZXQ6OnRhcmdldElkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3RhcmdldCA/IE9w
dGlvbmFsPHVuc2lnbmVkPihtX3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpKSA6IFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25hbDxUYXJnZXRJRD4obV90YXJnZXQt
PnRhcmdldElkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaAppbmRleCA4YjBlMTRiYWJiNS4u
ZWVjZWEwZDNjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKICNpbmNsdWRlICJJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJSZW1vdGVDb250cm9sbGFibGVUYXJn
ZXQuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgogCkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlKCk7
CiAgICAgdm9pZCB0YXJnZXRDbG9zZWQoKTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0YXJn
ZXRJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgT3B0aW9uYWw8VGFyZ2V0SUQ+IHRhcmdldElkZW50
aWZpZXIoKSBjb25zdDsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBOU1N0cmluZyAqY29ubmVj
dGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24oKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUNvbnRyb2xsYWJsZVRhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0LmgKaW5kZXggNGJiYjZhNDQ4NjcuLjU0
ZjIzYTU1OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuaApAQCAtMzgsNiAr
MzgsOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgRnJvbnRlbmRDaGFubmVsOwog
Cit1c2luZyBUYXJnZXRJRCA9IHVuc2lnbmVkOworCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBS
ZW1vdGVDb250cm9sbGFibGVUYXJnZXQgewogcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUNv
bnRyb2xsYWJsZVRhcmdldCgpOwpAQCAtNDgsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNvbm5lY3QoRnJvbnRlbmRDaGFubmVsJiwgYm9vbCBpc0F1dG9tYXRpY0Nvbm5lY3Rp
b24gPSBmYWxzZSwgYm9vbCBpbW1lZGlhdGVseVBhdXNlID0gZmFsc2UpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzY29ubmVjdChGcm9udGVuZENoYW5uZWwmKSA9IDA7CiAKLSAgICB1bnNpZ25l
ZCB0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAg
dm9pZCBzZXRUYXJnZXRJZGVudGlmaWVyKHVuc2lnbmVkIGlkZW50aWZpZXIpIHsgbV9pZGVudGlm
aWVyID0gaWRlbnRpZmllcjsgfQorICAgIFRhcmdldElEIHRhcmdldElkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICB2b2lkIHNldFRhcmdldElkZW50aWZpZXIo
VGFyZ2V0SUQgaWRlbnRpZmllcikgeyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAKICAg
ICBlbnVtIGNsYXNzIFR5cGUgeyBKYXZhU2NyaXB0LCBTZXJ2aWNlV29ya2VyLCBXZWIsIEF1dG9t
YXRpb24gfTsKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKQEAgLTYyLDcgKzY0
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9pZGVudGlm
aWVyIHsgMCB9OworICAgIFRhcmdldElEIG1faWRlbnRpZmllciB7IDAgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKaW5kZXggYzdkYWJmNjA3NDgu
LjlhNmE5NmYyOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnREaXNhYmxlZCgpCiAgICAgUmVtb3RlSW5zcGVjdG9y
OjpzdGFydEVuYWJsZWQgPSBmYWxzZTsKIH0KIAotdW5zaWduZWQgUmVtb3RlSW5zcGVjdG9yOjpu
ZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcigpCitUYXJnZXRJRCBSZW1vdGVJbnNwZWN0b3I6
Om5leHRBdmFpbGFibGVUYXJnZXRJZGVudGlmaWVyKCkKIHsKLSAgICB1bnNpZ25lZCBuZXh0VmFs
aWRUYXJnZXRJZGVudGlmaWVyOworICAgIFRhcmdldElEIG5leHRWYWxpZFRhcmdldElkZW50aWZp
ZXI7CiAgICAgZG8gewogICAgICAgICBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyID0gbV9uZXh0
QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcisrOwotICAgIH0gd2hpbGUgKCFuZXh0VmFsaWRUYXJn
ZXRJZGVudGlmaWVyIHx8IG5leHRWYWxpZFRhcmdldElkZW50aWZpZXIgPT0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8IG1fdGFyZ2V0TWFwLmNvbnRhaW5zKG5leHRWYWxp
ZFRhcmdldElkZW50aWZpZXIpKTsKKyAgICB9IHdoaWxlICghbmV4dFZhbGlkVGFyZ2V0SWRlbnRp
ZmllciB8fCBuZXh0VmFsaWRUYXJnZXRJZGVudGlmaWVyID09IHN0ZDo6bnVtZXJpY19saW1pdHM8
VGFyZ2V0SUQ+OjptYXgoKSB8fCBtX3RhcmdldE1hcC5jb250YWlucyhuZXh0VmFsaWRUYXJnZXRJ
ZGVudGlmaWVyKSk7CiAgICAgcmV0dXJuIG5leHRWYWxpZFRhcmdldElkZW50aWZpZXI7CiB9CiAK
QEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlZ2lzdGVyVGFyZ2V0KFJl
bW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFyZ2V0KQogCiAgICAgTG9ja0hvbGRlciBsb2NrKG1f
bXV0ZXgpOwogCi0gICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IG5leHRBdmFpbGFibGVU
YXJnZXRJZGVudGlmaWVyKCk7CisgICAgYXV0byB0YXJnZXRJZGVudGlmaWVyID0gbmV4dEF2YWls
YWJsZVRhcmdldElkZW50aWZpZXIoKTsKICAgICB0YXJnZXQtPnNldFRhcmdldElkZW50aWZpZXIo
dGFyZ2V0SWRlbnRpZmllcik7CiAKICAgICB7CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjp1bnJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCogdGFy
Z2V0KQogCiAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogCi0gICAgdW5zaWduZWQgdGFy
Z2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOworICAgIGF1dG8gdGFy
Z2V0SWRlbnRpZmllciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwogICAgIGlmICghdGFy
Z2V0SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZVRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQq
IHRhcmdldCkKIAogICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKIAotICAgIHVuc2lnbmVk
IHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsKKyAgICBhdXRv
IHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKTsKICAgICBpZiAo
IXRhcmdldElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU2LDcgKzE1Niw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXRDbGllbnQoUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQq
IGNsaWVudCkKICAgICBwdXNoTGlzdGluZ3NTb29uKCk7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpzZXR1cEZhaWxlZCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQordm9pZCBSZW1vdGVJ
bnNwZWN0b3I6OnNldHVwRmFpbGVkKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIpCiB7CiAgICAg
TG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnNldHVwRmFpbGVkKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCiAgICAg
cHVzaExpc3RpbmdzU29vbigpOwogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXBDb21w
bGV0ZWQodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpz
ZXR1cENvbXBsZXRlZChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyKQogewogICAgIExvY2tIb2xk
ZXIgbG9jayhtX211dGV4KTsKIApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yOjpzZXR1cENvbXBsZXRlZCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICBt
X2F1dG9tYXRpY0luc3BlY3Rpb25QYXVzZWQgPSBmYWxzZTsKIH0KIAotYm9vbCBSZW1vdGVJbnNw
ZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVkKQorYm9vbCBSZW1v
dGVJbnNwZWN0b3I6OndhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKFRhcmdldElEKQogewog
ICAgIC8vIFdlIGRvbid0IHRha2UgdGhlIGxvY2sgdG8gY2hlY2sgdGhpcyBiZWNhdXNlIHdlIGFz
c3VtZSBpdCB3aWxsIGJlIGNoZWNrZWQgcmVwZWF0ZWRseS4KICAgICByZXR1cm4gbV9hdXRvbWF0
aWNJbnNwZWN0aW9uUGF1c2VkOwpAQCAtMjA4LDcgKzIwOCw3IEBAIFRhcmdldExpc3RpbmcgUmVt
b3RlSW5zcGVjdG9yOjpsaXN0aW5nRm9yVGFyZ2V0KGNvbnN0IFJlbW90ZUNvbnRyb2xsYWJsZVRh
cmdldCYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVw
ZGF0ZVRhcmdldExpc3RpbmcodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcikKK3ZvaWQgUmVtb3Rl
SW5zcGVjdG9yOjp1cGRhdGVUYXJnZXRMaXN0aW5nKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIp
CiB7CiAgICAgYXV0byB0YXJnZXQgPSBtX3RhcmdldE1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcik7
CiAgICAgaWYgKCF0YXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oCmluZGV4IDVlNWI4NjJlNjkzLi43MWI3
Y2Y0ZWU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogCisjaW5jbHVkZSAiUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0
LmgiCisKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTExMywxNiArMTE1LDE2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlZ2lzdGVyVGFyZ2V0KFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldCopOwogICAgIHZvaWQg
dW5yZWdpc3RlclRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqKTsKICAgICB2b2lkIHVw
ZGF0ZVRhcmdldChSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqKTsKLSAgICB2b2lkIHNlbmRNZXNz
YWdlVG9SZW1vdGUodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGUoVGFyZ2V0SUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CiAKICAgICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCogY2xpZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KICAgICB2b2lkIHNldENsaWVudChSZW1vdGVJbnNwZWN0
b3I6OkNsaWVudCopOwogICAgIHZvaWQgY2xpZW50Q2FwYWJpbGl0aWVzRGlkQ2hhbmdlKCk7CiAg
ICAgT3B0aW9uYWw8UmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGllcz4gY2xpZW50
Q2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRDYXBhYmlsaXRpZXM7IH0KIAot
ICAgIHZvaWQgc2V0dXBGYWlsZWQodW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllcik7Ci0gICAgdm9p
ZCBzZXR1cENvbXBsZXRlZCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKTsKLSAgICBib29sIHdh
aXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0aW9uKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpOwor
ICAgIHZvaWQgc2V0dXBGYWlsZWQoVGFyZ2V0SUQpOworICAgIHZvaWQgc2V0dXBDb21wbGV0ZWQo
VGFyZ2V0SUQpOworICAgIGJvb2wgd2FpdGluZ0ZvckF1dG9tYXRpY0luc3BlY3Rpb24oVGFyZ2V0
SUQpOwogICAgIHZvaWQgdXBkYXRlQXV0b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZShSZW1vdGVJ
bnNwZWN0aW9uVGFyZ2V0Kik7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2VuYWJsZWQ7IH0KQEAgLTEzOSwxNCArMTQxLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBh
cmVudFByb2Nlc3NJbmZvbWF0aW9uSXNEZWxheWVkKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgdXBk
YXRlVGFyZ2V0TGlzdGluZyh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHVw
ZGF0ZVRhcmdldExpc3RpbmcoVGFyZ2V0SUQpOwogCiAjaWYgVVNFKEdMSUIpCiAgICAgdm9pZCBy
ZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oY29uc3QgY2hhciogc2Vzc2lvbklELCBjb25zdCBDbGll
bnQ6OlNlc3Npb25DYXBhYmlsaXRpZXMmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKSB8fCBQTEFU
Rk9STShQTEFZU1RBVElPTikKLSAgICB2b2lkIHNldHVwKHVuc2lnbmVkIHRhcmdldElkZW50aWZp
ZXIpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldCh1bnNpZ25lZCB0YXJnZXRJZGVudGlm
aWVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKKyAgICB2b2lkIHNldHVwKFRhcmdldElEKTsKKyAg
ICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXQoVGFyZ2V0SUQsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCiAgICAgc3RhdGljIHZvaWQgc2V0
Q29ubmVjdGlvbklkZW50aWZpZXIoUGxhdGZvcm1Tb2NrZXRUeXBlKTsKQEAgLTE1NSw3ICsxNTcs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlbW90ZUluc3BlY3RvcigpOwogCi0gICAgdW5z
aWduZWQgbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIoKTsKKyAgICBUYXJnZXRJRCBuZXh0
QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllcigpOwogCiAgICAgZW51bSBjbGFzcyBTdG9wU291cmNl
IHsgQVBJLCBYUENNZXNzYWdlIH07CiAgICAgdm9pZCBzdG9wSW50ZXJuYWwoU3RvcFNvdXJjZSk7
CkBAIC0xNjgsOSArMTcwLDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgR0RCdXNJbnRl
cmZhY2VWVGFibGUgc19pbnRlcmZhY2VWVGFibGU7CiAKICAgICB2b2lkIHJlY2VpdmVkR2V0VGFy
Z2V0TGlzdE1lc3NhZ2UoKTsKLSAgICB2b2lkIHJlY2VpdmVkU2V0dXBNZXNzYWdlKHVuc2lnbmVk
IHRhcmdldElkZW50aWZpZXIpOwotICAgIHZvaWQgcmVjZWl2ZWREYXRhTWVzc2FnZSh1bnNpZ25l
ZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLSAgICB2b2lkIHJlY2Vp
dmVkQ2xvc2VNZXNzYWdlKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpOworICAgIHZvaWQgcmVj
ZWl2ZWRTZXR1cE1lc3NhZ2UoVGFyZ2V0SUQpOworICAgIHZvaWQgcmVjZWl2ZWREYXRhTWVzc2Fn
ZShUYXJnZXRJRCwgY29uc3QgY2hhciogbWVzc2FnZSk7CisgICAgdm9pZCByZWNlaXZlZENsb3Nl
TWVzc2FnZShUYXJnZXRJRCk7CiAgICAgdm9pZCByZWNlaXZlZEF1dG9tYXRpb25TZXNzaW9uUmVx
dWVzdE1lc3NhZ2UoY29uc3QgY2hhciogc2Vzc2lvbklEKTsKICNlbmRpZgogCkBAIC0yMDYsMTQg
KzIwOCwxNCBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCiAg
ICAgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPiYgZGlzcGF0Y2hNYXAoKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZENsb3NlKENsaWVudElEKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENsb3Nl
KENvbm5lY3Rpb25JRCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNlbmRXZWJJbnNwZWN0b3JFdmVu
dChjb25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQgcmVjZWl2ZWRHZXRUYXJnZXRMaXN0TWVzc2Fn
ZShjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKLSAgICB2b2lkIHJlY2VpdmVkU2V0dXBNZXNzYWdlKGNv
bnN0IHN0cnVjdCBFdmVudCYpOwotICAgIHZvaWQgcmVjZWl2ZWREYXRhTWVzc2FnZShjb25zdCBz
dHJ1Y3QgRXZlbnQmKTsKLSAgICB2b2lkIHJlY2VpdmVkQ2xvc2VNZXNzYWdlKGNvbnN0IHN0cnVj
dCBFdmVudCYpOworICAgIHZvaWQgcmVjZWl2ZWRHZXRUYXJnZXRMaXN0TWVzc2FnZShjb25zdCBF
dmVudCYpOworICAgIHZvaWQgcmVjZWl2ZWRTZXR1cE1lc3NhZ2UoY29uc3QgRXZlbnQmKTsKKyAg
ICB2b2lkIHJlY2VpdmVkRGF0YU1lc3NhZ2UoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIHJlY2Vp
dmVkQ2xvc2VNZXNzYWdlKGNvbnN0IEV2ZW50Jik7CiAjZW5kaWYKICAgICBzdGF0aWMgYm9vbCBz
dGFydEVuYWJsZWQ7CiAKQEAgLTIyMyw5ICsyMjUsOSBAQCBwcml2YXRlOgogICAgIC8vIGZyb20g
YW55IHRocmVhZC4KICAgICBMb2NrIG1fbXV0ZXg7CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBS
ZW1vdGVDb250cm9sbGFibGVUYXJnZXQqPiBtX3RhcmdldE1hcDsKLSAgICBIYXNoTWFwPHVuc2ln
bmVkLCBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Pj4gbV90YXJnZXRDb25uZWN0aW9u
TWFwOwotICAgIEhhc2hNYXA8dW5zaWduZWQsIFRhcmdldExpc3Rpbmc+IG1fdGFyZ2V0TGlzdGlu
Z01hcDsKKyAgICBIYXNoTWFwPFRhcmdldElELCBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqPiBt
X3RhcmdldE1hcDsKKyAgICBIYXNoTWFwPFRhcmdldElELCBSZWZQdHI8UmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0Pj4gbV90YXJnZXRDb25uZWN0aW9uTWFwOworICAgIEhhc2hNYXA8VGFyZ2V0SUQs
IFRhcmdldExpc3Rpbmc+IG1fdGFyZ2V0TGlzdGluZ01hcDsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uPiBtX3JlbGF5Q29ubmVj
dGlvbjsKQEAgLTIzOCw3ICsyNDAsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKFBMQVlTVEFU
SU9OKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludD4g
bV9zb2NrZXRDb25uZWN0aW9uOwogICAgIHN0YXRpYyBQbGF0Zm9ybVNvY2tldFR5cGUgc19jb25u
ZWN0aW9uSWRlbnRpZmllcjsKLSAgICBPcHRpb25hbDxDbGllbnRJRD4gbV9jbGllbnRJRDsKKyAg
ICBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IG1fY2xpZW50SUQ7CiAjZW5kaWYKIAogICAgIFJlbW90
ZUluc3BlY3Rvcjo6Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKQEAgLTI0Nyw3ICsyNDks
NyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGRpc3BhdGNoX3F1ZXVlX3Qg
bV94cGNRdWV1ZTsKICNlbmRpZgotICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZVRhcmdldElk
ZW50aWZpZXIgeyAxIH07CisgICAgVGFyZ2V0SUQgbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRp
ZmllciB7IDEgfTsKICAgICBpbnQgbV9ub3RpZnlUb2tlbiB7IDAgfTsKICAgICBib29sIG1fZW5h
YmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0FjdGl2ZURlYnVnU2Vzc2lvbiB7IGZhbHNl
IH07CkBAIC0yNjAsNyArMjYyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkU2VuZFBh
cmVudFByb2Nlc3NJbmZvcm1hdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9tYXRpY0lu
c3BlY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYXV0b21hdGljSW5zcGVjdGlv
blBhdXNlZCB7IGZhbHNlIH07Ci0gICAgdW5zaWduZWQgbV9hdXRvbWF0aWNJbnNwZWN0aW9uQ2Fu
ZGlkYXRlVGFyZ2V0SWRlbnRpZmllciB7IDAgfTsKKyAgICBUYXJnZXRJRCBtX2F1dG9tYXRpY0lu
c3BlY3Rpb25DYW5kaWRhdGVUYXJnZXRJZGVudGlmaWVyIHsgMCB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldENvY29hLm1tCmluZGV4IGI0NzQwYzZmMzA5Li45NzMwZGI4Mjg4NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KQEAgLTEy
MCw5ICsxMjAsOSBAQCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6On5SZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQoKQogICAgIHRlYXJkb3duUnVuTG9vcCgpOwogfQogCi1PcHRpb25hbDx1bnNpZ25l
ZD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKK09w
dGlvbmFsPFRhcmdldElEPiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldElkZW50aWZp
ZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3RhcmdldCA/IE9wdGlvbmFsPHVuc2lnbmVkPiht
X3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
bV90YXJnZXQgPyBPcHRpb25hbDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIo
KSkgOiBXVEY6Om51bGxvcHQ7CiB9CiAKIE5TU3RyaW5nICpSZW1vdGVDb25uZWN0aW9uVG9UYXJn
ZXQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKQEAgLTE1OSw3ICsxNTksNyBAQCBib29s
IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rp
b24sIGJvb2wgYXV0b21hdGljYQogICAgIGlmICghbV90YXJnZXQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVu
dGlmaWVyKCkudmFsdWVPcigwKTsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50
YXJnZXRJZGVudGlmaWVyKCkudmFsdWVPcigwKTsKICAgICAKICAgICByZWYoKTsKICAgICBkaXNw
YXRjaEFzeW5jT25UYXJnZXQoXnsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKCkKIAogdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQ6OmNsb3NlKCkKIHsKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gbV90YXJn
ZXQgPyBtX3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpIDogMDsKKyAgICBhdXRvIHRhcmdldElk
ZW50aWZpZXIgPSBtX3RhcmdldCA/IG1fdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCkgOiAwOwog
ICAgIAogICAgIHJlZigpOwogICAgIGRpc3BhdGNoQXN5bmNPblRhcmdldCheewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5z
cGVjdG9yQ29jb2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbQppbmRleCA2NDY2YWFhOGI0MS4uNWJlZjIxY2Ji
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCkBAIC0xMjIsNyAr
MTIyLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25D
YW5kaWRhdGUoUmVtb3RlSW5zcGVjdGlvblRhcmdldCoKICAgICB7CiAgICAgICAgIExvY2tIb2xk
ZXIgbG9jayhtX211dGV4KTsKIAotICAgICAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0g
dGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCk7CisgICAgICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmll
ciA9IHRhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpOwogICAgICAgICBpZiAoIXRhcmdldElkZW50
aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6c2VuZEF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkK
ICAgICBtX3JlbGF5Q29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV0lSQXV0b21hdGljSW5zcGVjdGlv
bkNhbmRpZGF0ZU1lc3NhZ2UsIGRldGFpbHMpOwogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6
c2VuZE1lc3NhZ2VUb1JlbW90ZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShU
YXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAg
TG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogCkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8p
CiAgICAgQkFJTF9JRl9VTkVYUEVDVEVEX1RZUEVfQUxMT1dJTkdfTklMKGF1dG9tYXRpY2FsbHlQ
YXVzZU51bWJlciwgW05TTnVtYmVyIGNsYXNzXSk7CiAgICAgQk9PTCBhdXRvbWF0aWNhbGx5UGF1
c2UgPSBhdXRvbWF0aWNhbGx5UGF1c2VOdW1iZXIuYm9vbFZhbHVlOwogCi0gICAgdW5zaWduZWQg
dGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldElkZW50aWZpZXJOdW1iZXIudW5zaWduZWRJbnRWYWx1
ZTsKKyAgICBUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRpZmllck51bWJl
ci51bnNpZ25lZEludFZhbHVlOwogICAgIGlmICghdGFyZ2V0SWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuOwogCkBAIC01MzcsNyArNTM3LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2Vp
dmVkRGF0YU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICBOU0RhdGEgKmRhdGEg
PSB1c2VySW5mb1tXSVJTb2NrZXREYXRhS2V5XTsKICAgICBCQUlMX0lGX1VORVhQRUNURURfVFlQ
RShkYXRhLCBbTlNEYXRhIGNsYXNzXSk7CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVy
ID0gdGFyZ2V0SWRlbnRpZmllck51bWJlci51bnNpZ25lZEludFZhbHVlOworICAgIFRhcmdldElE
IHRhcmdldElkZW50aWZpZXIgPSB0YXJnZXRJZGVudGlmaWVyTnVtYmVyLnVuc2lnbmVkSW50VmFs
dWU7CiAgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTU1
Nyw3ICs1NTcsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWREaWRDbG9zZU1lc3Nh
Z2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50
aWZpZXIgPSB1c2VySW5mb1tXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07CiAgICAgQkFJTF9J
Rl9VTkVYUEVDVEVEX1RZUEUoY29ubmVjdGlvbklkZW50aWZpZXIsIFtOU1N0cmluZyBjbGFzc10p
OwogCi0gICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IHRhcmdldElkZW50aWZpZXJOdW1i
ZXIudW5zaWduZWRJbnRWYWx1ZTsKKyAgICBUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyID0gdGFy
Z2V0SWRlbnRpZmllck51bWJlci51bnNpZ25lZEludFZhbHVlOwogICAgIGlmICghdGFyZ2V0SWRl
bnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3I6OnJlY2VpdmVkSW5kaWNhdGVNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlcklu
Zm8pCiAgICAgQkFJTF9JRl9VTkVYUEVDVEVEX1RZUEUoaW5kaWNhdGVFbmFibGVkTnVtYmVyLCBb
TlNOdW1iZXIgY2xhc3NdKTsKICAgICBCT09MIGluZGljYXRlRW5hYmxlZCA9IGluZGljYXRlRW5h
YmxlZE51bWJlci5ib29sVmFsdWU7CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0g
dGFyZ2V0SWRlbnRpZmllck51bWJlci51bnNpZ25lZEludFZhbHVlOworICAgIFRhcmdldElEIHRh
cmdldElkZW50aWZpZXIgPSB0YXJnZXRJZGVudGlmaWVyTnVtYmVyLnVuc2lnbmVkSW50VmFsdWU7
CiAgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTY3Miw3
ICs2NzIsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRBdXRvbWF0aWNJbnNwZWN0
aW9uUmVqZWN0TWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZQogICAgIE5TTnVtYmVyICp0YXJnZXRJ
ZGVudGlmaWVyTnVtYmVyID0gdXNlckluZm9bV0lSVGFyZ2V0SWRlbnRpZmllcktleV07CiAgICAg
QkFJTF9JRl9VTkVYUEVDVEVEX1RZUEUodGFyZ2V0SWRlbnRpZmllck51bWJlciwgW05TTnVtYmVy
IGNsYXNzXSk7CiAKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0SWRlbnRp
Zmllck51bWJlci51bnNpZ25lZEludFZhbHVlOworICAgIFRhcmdldElEIHRhcmdldElkZW50aWZp
ZXIgPSB0YXJnZXRJZGVudGlmaWVyTnVtYmVyLnVuc2lnbmVkSW50VmFsdWU7CiAgICAgaWYgKCF0
YXJnZXRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yR2xpYi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUlu
c3BlY3RvckdsaWIuY3BwCmluZGV4IDk5MjRhN2EzOWJkLi41YWZmOGIzZTNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNw
ZWN0b3JHbGliLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9nbGliL1JlbW90ZUluc3BlY3RvckdsaWIuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUF1dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGUoUmVtb3Rl
SW5zcGVjdGlvblRhcmdldCoKICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CiAKICAgICBB
U1NFUlQodGFyZ2V0KTsKLSAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50
YXJnZXRJZGVudGlmaWVyKCk7CisgICAgYXV0byB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LT50
YXJnZXRJZGVudGlmaWVyKCk7CiAgICAgaWYgKCF0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZEF1
dG9tYXRpY0luc3BlY3Rpb25DYW5kaWRhdGVNZXNzYWdlKCkKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGF1dG9tYXRpYyBpbnNwZWN0aW9uLgogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2Vu
ZE1lc3NhZ2VUb1JlbW90ZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZShUYXJn
ZXRJRCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgTG9j
a0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgIGlmICghbV9kYnVzQ29ubmVjdGlvbikKQEAgLTI5
MSwxMiArMjkxLDEyIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldFRhcmdldExp
c3RNZXNzYWdlKCkKICAgICBwdXNoTGlzdGluZ3NOb3coKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OnJlY2VpdmVkU2V0dXBNZXNzYWdlKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoVGFyZ2V0SUQgdGFyZ2V0
SWRlbnRpZmllcikKIHsKICAgICBzZXR1cCh0YXJnZXRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2UodW5zaWduZWQgdGFyZ2V0SWRlbnRp
ZmllciwgY29uc3QgY2hhciogbWVzc2FnZSkKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZERhdGFNZXNzYWdlKFRhcmdldElEIHRhcmdldElkZW50aWZpZXIsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpCiB7CiAgICAgUmVmUHRyPFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldD4gY29ubmVjdGlvblRv
VGFyZ2V0OwogICAgIHsKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
cmVjZWl2ZWREYXRhTWVzc2FnZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBjaGFy
KgogICAgIGNvbm5lY3Rpb25Ub1RhcmdldC0+c2VuZE1lc3NhZ2VUb1RhcmdldChTdHJpbmc6OmZy
b21VVEY4KG1lc3NhZ2UpKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQ2xv
c2VNZXNzYWdlKHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCit2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6cmVjZWl2ZWRDbG9zZU1lc3NhZ2UoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRpZmllcikKIHsKICAg
ICBSZWZQdHI8UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0PiBjb25uZWN0aW9uVG9UYXJnZXQ7CiAg
ICAgewpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZENs
b3NlTWVzc2FnZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQogICAgICAgICBjb25uZWN0aW9u
VG9UYXJnZXQtPmNsb3NlKCk7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZXR1cCh1bnNp
Z25lZCB0YXJnZXRJZGVudGlmaWVyKQordm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwKFRhcmdl
dElEIHRhcmdldElkZW50aWZpZXIpCiB7CiAgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0KiB0
YXJnZXQ7CiAgICAgewpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpz
ZXR1cCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQogICAgIHVwZGF0ZUhhc0FjdGl2ZURlYnVn
U2Vzc2lvbigpOwogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1Rhcmdl
dCh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9UYXJnZXQoVGFyZ2V0SUQgdGFyZ2V0SWRlbnRp
ZmllciwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBpZiAoYXV0byBjb25uZWN0aW9uVG9U
YXJnZXQgPSBtX3RhcmdldENvbm5lY3Rpb25NYXAuZ2V0KHRhcmdldElkZW50aWZpZXIpKQogICAg
ICAgICBjb25uZWN0aW9uVG9UYXJnZXQtPnNlbmRNZXNzYWdlVG9UYXJnZXQoU3RyaW5nOjpmcm9t
VVRGOChtZXNzYWdlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yQ29ubmVjdGlvbkNsaWVudC5jcHAKaW5kZXggNzY1YzdiNDBhMjMuLjBlOTBmMThlNzJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25D
bGllbnQuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi12
b2lkIFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmVXZWJJbnNwZWN0
b3JFdmVudChDbGllbnRJRCBjbGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3ZvaWQg
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2
ZW50KENvbm5lY3Rpb25JRCBjbGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIApAQCAtNTUsMTQgKzU1LDE0IEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50
KENsaWVudElEIGNsaWVuCiAgICAgaWYgKCFtZXNzYWdlT2JqZWN0LT5nZXRTdHJpbmcoImV2ZW50
Il9zLCBtZXRob2ROYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RydWN0IEV2ZW50IGV2
ZW50OworICAgIEV2ZW50IGV2ZW50OwogICAgIGV2ZW50LmNsaWVudElEID0gY2xpZW50SUQ7CiAK
LSAgICB1aW50NjRfdCBjb25uZWN0aW9uSUQ7CisgICAgQ29ubmVjdGlvbklEIGNvbm5lY3Rpb25J
RDsKICAgICBpZiAobWVzc2FnZU9iamVjdC0+Z2V0SW50ZWdlcigiY29ubmVjdGlvbklEIl9zLCBj
b25uZWN0aW9uSUQpKQogICAgICAgICBldmVudC5jb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uSUQ7
CiAKLSAgICB1aW50NjRfdCB0YXJnZXRJRDsKKyAgICBUYXJnZXRJRCB0YXJnZXRJRDsKICAgICBp
ZiAobWVzc2FnZU9iamVjdC0+Z2V0SW50ZWdlcigidGFyZ2V0SUQiX3MsIHRhcmdldElEKSkKICAg
ICAgICAgZXZlbnQudGFyZ2V0SUQgPSB0YXJnZXRJRDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5l
Y3Rpb25DbGllbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmgKaW5kZXggN2E2YTAyYjAwZjIu
LjM0OGUzOTE2YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JDb25uZWN0aW9uQ2xpZW50LmgKQEAgLTM1LDE4ICszNSwxOCBAQCBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAogY2xhc3MgUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50PiB7CiBwdWJsaWM6
Ci0gICAgdm9pZCBkaWRSZWNlaXZlV2ViSW5zcGVjdG9yRXZlbnQoQ2xpZW50SUQsIFZlY3Rvcjx1
aW50OF90PiYmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWNjZXB0KENsaWVudElELCBTb2NrZXQ6
OkRvbWFpbikgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDbGllbnRJRCkgPSAwOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KENvbm5lY3Rpb25JRCwgVmVjdG9y
PHVpbnQ4X3Q+JiYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRBY2NlcHQoQ29ubmVjdGlvbklELCBT
b2NrZXQ6OkRvbWFpbikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb25uZWN0aW9u
SUQpID0gMDsKIAogICAgIHN0cnVjdCBFdmVudCB7Ci0gICAgICAgIENsaWVudElEIGNsaWVudElE
OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gY29ubmVjdGlvbklEOwotICAgICAgICBPcHRp
b25hbDx1aW50NjRfdD4gdGFyZ2V0SUQ7CisgICAgICAgIENvbm5lY3Rpb25JRCBjbGllbnRJRCB7
IH07CisgICAgICAgIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gY29ubmVjdGlvbklEOworICAgICAg
ICBPcHRpb25hbDxUYXJnZXRJRD4gdGFyZ2V0SUQ7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4g
bWVzc2FnZTsKICAgICB9OwogCi0gICAgdXNpbmcgQ2FsbEhhbmRsZXIgPSB2b2lkIChSZW1vdGVJ
bnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjoqKShjb25zdCBzdHJ1Y3QgRXZlbnQmKTsKKyAgICB1
c2luZyBDYWxsSGFuZGxlciA9IHZvaWQgKFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6
OiopKGNvbnN0IEV2ZW50Jik7CiAgICAgdmlydHVhbCBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRs
ZXI+JiBkaXNwYXRjaE1hcCgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JNZXNzYWdlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JNZXNzYWdlUGFyc2VyLmNwcAppbmRleCAwNTA5ZGNhZGU5Yi4uMWJjY2Y5
ZGUxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JNZXNzYWdlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2Fn
ZVBhcnNlci5jcHAKQEAgLTQxLDggKzQxLDggQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAgICAg
ICAgICAgICAgICB8IDwtLS0tLS0tLS0tLS0gc2l6ZSAtLS0tLS0tLS0tLS0+IHwKICovCiAKLU1l
c3NhZ2VQYXJzZXI6Ok1lc3NhZ2VQYXJzZXIoQ2xpZW50SUQgY2xpZW50SUQsIHNpemVfdCBidWZm
ZXJTaXplKQotICAgIDogbV9jbGllbnRJRChjbGllbnRJRCkKK01lc3NhZ2VQYXJzZXI6Ok1lc3Nh
Z2VQYXJzZXIoQ29ubmVjdGlvbklEIGlkLCBzaXplX3QgYnVmZmVyU2l6ZSkKKyAgICA6IG1fY29u
bmVjdGlvbklEKGlkKQogewogICAgIG1fYnVmZmVyLnJlc2VydmVDYXBhY2l0eShidWZmZXJTaXpl
KTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIE1lc3NhZ2VQYXJzZXI6OnBhcnNlKCkKICAg
ICAgICAgbWVtY3B5KCZkYXRhQnVmZmVyWzBdLCAmbV9idWZmZXJbc2l6ZW9mKHVpbnQzMl90KV0s
IGRhdGFTaXplKTsKIAogICAgICAgICBpZiAobV9kaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcikKLSAg
ICAgICAgICAgIG1fZGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIobV9jbGllbnRJRCwgV1RGTW92ZShk
YXRhQnVmZmVyKSk7CisgICAgICAgICAgICBtX2RpZFBhcnNlTWVzc2FnZUxpc3RlbmVyKG1fY29u
bmVjdGlvbklELCBXVEZNb3ZlKGRhdGFCdWZmZXIpKTsKIAogICAgICAgICBtX2J1ZmZlci5yZW1v
dmUoMCwgbWVzc2FnZVNpemUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JNZXNzYWdlUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yTWVzc2FnZVBhcnNlci5oCmluZGV4IGQ1YjE5OGUyNTNkLi5hZTA1OWZkOGE5MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3Rvck1lc3NhZ2VQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yTWVzc2FnZVBhcnNlci5o
CkBAIC0zNiwxOCArMzYsMTggQEAgY2xhc3MgTWVzc2FnZVBhcnNlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFZlY3Rvcjx1aW50OF90PiBjcmVhdGVNZXNzYWdlKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOwogCi0gICAgTWVzc2FnZVBhcnNlcihDbGllbnRJRCwgc2l6ZV90KTsKKyAgICBNZXNzYWdl
UGFyc2VyKENvbm5lY3Rpb25JRCwgc2l6ZV90KTsKICAgICB2b2lkIHB1c2hSZWNlaXZlZERhdGEo
Y29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBzZXREaWRQYXJzZU1lc3NhZ2VMaXN0
ZW5lcihGdW5jdGlvbjx2b2lkKENsaWVudElELCBWZWN0b3I8dWludDhfdD4pPiYmIGxpc3RlbmVy
KSB7IG1fZGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKTsgfQorICAg
IHZvaWQgc2V0RGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIoRnVuY3Rpb248dm9pZChDb25uZWN0aW9u
SUQsIFZlY3Rvcjx1aW50OF90Pik+JiYgbGlzdGVuZXIpIHsgbV9kaWRQYXJzZU1lc3NhZ2VMaXN0
ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpOyB9CiAKICAgICB2b2lkIGNsZWFyUmVjZWl2ZWREYXRh
KCk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZSgpOwogCi0gICAgRnVuY3Rpb248dm9pZChD
bGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYpPiBtX2RpZFBhcnNlTWVzc2FnZUxpc3RlbmVyOwor
ICAgIEZ1bmN0aW9uPHZvaWQoQ29ubmVjdGlvbklELCBWZWN0b3I8dWludDhfdD4mJik+IG1fZGlk
UGFyc2VNZXNzYWdlTGlzdGVuZXI7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwotICAg
IENsaWVudElEIG1fY2xpZW50SUQ7CisgICAgQ29ubmVjdGlvbklEIG1fY29ubmVjdGlvbklEOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IDNhNDUwOTgzYzA4Li5lNjBmYzUyNzcwNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNlcnZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAKQEAgLTQ0LDcgKzQ0LDcg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmFkZFNlcnZlckNvbm5lY3Rpb24oUGxhdGZv
cm1Tb2NrZXRUeXBlIGlkZW50aWZpZXIpCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3Rv
clNlcnZlcjo6ZGlkQWNjZXB0KENsaWVudElEIGNsaWVudElELCBTb2NrZXQ6OkRvbWFpbiB0eXBl
KQordm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmRpZEFjY2VwdChDb25uZWN0aW9uSUQgaWQs
IFNvY2tldDo6RG9tYWluIHR5cGUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAK
QEAgLTUzLDE4ICs1MywxOCBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6ZGlkQWNjZXB0
KENsaWVudElEIGNsaWVudElELCBTb2NrZXQ6OkRvbWFpbiB0eXBlKQogICAgICAgICAgICAgTE9H
X0VSUk9SKCJJbnNwZWN0b3Igc2VydmVyIGNhbiBhY2NlcHQgb25seSAxIGNsaWVudCIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fY2xpZW50Q29ubmVjdGlvbiA9
IGNsaWVudElEOworICAgICAgICBtX2NsaWVudENvbm5lY3Rpb24gPSBpZDsKICAgICB9IGVsc2Ug
aWYgKHR5cGUgPT0gU29ja2V0OjpEb21haW46OkxvY2FsKSB7CiAgICAgICAgIExvY2tIb2xkZXIg
bG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7Ci0gICAgICAgIG1faW5zcGVjdG9yQ29ubmVjdGlvbnMu
YXBwZW5kKGNsaWVudElEKTsKKyAgICAgICAgbV9pbnNwZWN0b3JDb25uZWN0aW9ucy5hcHBlbmQo
aWQpOwogICAgIH0KIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmRpZENsb3NlKENs
aWVudElEIGNsaWVudElEKQordm9pZCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmRpZENsb3NlKENv
bm5lY3Rpb25JRCBpZCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGlm
IChjbGllbnRJRCA9PSBtX2NsaWVudENvbm5lY3Rpb24pIHsKKyAgICBpZiAoaWQgPT0gbV9jbGll
bnRDb25uZWN0aW9uKSB7CiAgICAgICAgIC8vIENvbm5lY3Rpb24gZnJvbSB0aGUgcmVtb3RlIGNs
aWVudCBjbG9zZWQuCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKICAgICAgICAg
ICAgIGNsaWVudENvbm5lY3Rpb25DbG9zZWQoKTsKQEAgLTczLDI5ICs3MywyOSBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvclNlcnZlcjo6ZGlkQ2xvc2UoQ2xpZW50SUQgY2xpZW50SUQpCiAgICAgfQog
CiAgICAgLy8gQ29ubmVjdGlvbiBmcm9tIFdlYlByb2Nlc3MgY2xvc2VkLgotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIGNsaWVudElEXSB7Ci0gICAgICAgIGNvbm5lY3Rpb25DbG9zZWQoY2xp
ZW50SUQpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGlkXSB7CisgICAgICAgIGNvbm5l
Y3Rpb25DbG9zZWQoaWQpOwogICAgIH0pOwogfQogCiBIYXNoTWFwPFN0cmluZywgUmVtb3RlSW5z
cGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6Q2FsbEhhbmRsZXI+JiBSZW1vdGVJbnNwZWN0b3JTZXJ2
ZXI6OmRpc3BhdGNoTWFwKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxT
dHJpbmcsIENhbGxIYW5kbGVyPj4gZGlzcGF0Y2hNYXAgPSBIYXNoTWFwPFN0cmluZywgQ2FsbEhh
bmRsZXI+KHsKLSAgICAgICAgeyJTZXRUYXJnZXRMaXN0Il9zLCBzdGF0aWNfY2FzdDxDYWxsSGFu
ZGxlcj4oJlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2V0VGFyZ2V0TGlzdCl9LAotICAgICAgICB7
IlNldHVwSW5zcGVjdG9yQ2xpZW50Il9zLCBzdGF0aWNfY2FzdDxDYWxsSGFuZGxlcj4oJlJlbW90
ZUluc3BlY3RvclNlcnZlcjo6c2V0dXBJbnNwZWN0b3JDbGllbnQpfSwKLSAgICAgICAgeyJTZXR1
cCJfcywgc3RhdGljX2Nhc3Q8Q2FsbEhhbmRsZXI+KCZSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNl
dHVwKX0sCi0gICAgICAgIHsiRnJvbnRlbmREaWRDbG9zZSJfcywgc3RhdGljX2Nhc3Q8Q2FsbEhh
bmRsZXI+KCZSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmNsb3NlKX0sCi0gICAgICAgIHsiU2VuZE1l
c3NhZ2VUb0Zyb250ZW5kIl9zLCBzdGF0aWNfY2FzdDxDYWxsSGFuZGxlcj4oJlJlbW90ZUluc3Bl
Y3RvclNlcnZlcjo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKX0sCi0gICAgICAgIHsiU2VuZE1lc3Nh
Z2VUb0JhY2tlbmQiX3MsIHN0YXRpY19jYXN0PENhbGxIYW5kbGVyPigmUmVtb3RlSW5zcGVjdG9y
U2VydmVyOjpzZW5kTWVzc2FnZVRvQmFja2VuZCl9LAorICAgICAgICB7IlNldFRhcmdldExpc3Qi
X3MsICZSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNldFRhcmdldExpc3R9LAorICAgICAgICB7IlNl
dHVwSW5zcGVjdG9yQ2xpZW50Il9zLCAmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZXR1cEluc3Bl
Y3RvckNsaWVudH0sCisgICAgICAgIHsiU2V0dXAiX3MsICZSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6
OnNldHVwfSwKKyAgICAgICAgeyJGcm9udGVuZERpZENsb3NlIl9zLCAmUmVtb3RlSW5zcGVjdG9y
U2VydmVyOjpjbG9zZX0sCisgICAgICAgIHsiU2VuZE1lc3NhZ2VUb0Zyb250ZW5kIl9zLCAmUmVt
b3RlSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmR9LAorICAgICAgICB7IlNl
bmRNZXNzYWdlVG9CYWNrZW5kIl9zLCAmUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2Fn
ZVRvQmFja2VuZH0sCiAgICAgfSk7CiAKICAgICByZXR1cm4gZGlzcGF0Y2hNYXA7CiB9CiAKLXZv
aWQgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZW5kV2ViSW5zcGVjdG9yRXZlbnQoQ2xpZW50SUQg
Y2xpZW50SUQsIGNvbnN0IFN0cmluZyYgZXZlbnQpCit2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZl
cjo6c2VuZFdlYkluc3BlY3RvckV2ZW50KENvbm5lY3Rpb25JRCBpZCwgY29uc3QgU3RyaW5nJiBl
dmVudCkKIHsKICAgICBjb25zdCBDU3RyaW5nIG1lc3NhZ2UgPSBldmVudC51dGY4KCk7Ci0gICAg
bV9zZXJ2ZXItPnNlbmQoY2xpZW50SUQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KG1lc3NhZ2UuZGF0YSgpKSwgbWVzc2FnZS5sZW5ndGgoKSk7CisgICAgbV9zZXJ2ZXItPnNlbmQo
aWQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lc3NhZ2UuZGF0YSgpKSwgbWVz
c2FnZS5sZW5ndGgoKSk7CiB9CiAKIFJlbW90ZUluc3BlY3RvclNlcnZlciYgUmVtb3RlSW5zcGVj
dG9yU2VydmVyOjpzaW5nbGV0b24oKQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yU2VydmVyOjpzZXR1cChjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgc2VuZFdlYkluc3Bl
Y3RvckV2ZW50KGV2ZW50LmNvbm5lY3Rpb25JRC52YWx1ZSgpLCBzZXR1cEV2ZW50LT50b0pTT05T
dHJpbmcoKSk7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzZW5kQ2xvc2VFdmVu
dCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElEKQordm9pZCBSZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXI6OnNlbmRDbG9zZUV2ZW50KENvbm5lY3Rpb25JRCBjb25uZWN0aW9uSUQs
IFRhcmdldElEIHRhcmdldElEKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAg
LTE4Niw3ICsxODYsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6Y2xpZW50Q29ubmVj
dGlvbkNsb3NlZCgpCiAgICAgbV9jbGllbnRDb25uZWN0aW9uID0gV1RGOjpudWxsb3B0OwogfQog
Ci12b2lkIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6Y29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBj
bGllbnRJRCkKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpjb25uZWN0aW9uQ2xvc2VkKENv
bm5lY3Rpb25JRCBjbGllbnRJRCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKaW5kZXggZTkzZjhhZTk1YzUu
LmI1MDgwYWVkNGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5o
CkBAIC00NiwzNCArNDYsMzQgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
YWRkU2VydmVyQ29ubmVjdGlvbihQbGF0Zm9ybVNvY2tldFR5cGUpOwogCiBwcml2YXRlOgotICAg
IHZvaWQgY29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBjb25uZWN0aW9uSUQpOworICAgIHZvaWQg
Y29ubmVjdGlvbkNsb3NlZChDb25uZWN0aW9uSUQpOwogCi0gICAgdm9pZCBzZXRUYXJnZXRMaXN0
KGNvbnN0IHN0cnVjdCBFdmVudCYpOwotICAgIHZvaWQgc2V0dXBJbnNwZWN0b3JDbGllbnQoY29u
c3Qgc3RydWN0IEV2ZW50Jik7Ci0gICAgdm9pZCBzZXR1cChjb25zdCBzdHJ1Y3QgRXZlbnQmKTsK
LSAgICB2b2lkIGNsb3NlKGNvbnN0IHN0cnVjdCBFdmVudCYpOwotICAgIHZvaWQgc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbnN0IHN0cnVjdCBFdmVudCYpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VU
b0JhY2tlbmQoY29uc3Qgc3RydWN0IEV2ZW50Jik7CisgICAgdm9pZCBzZXRUYXJnZXRMaXN0KGNv
bnN0IEV2ZW50Jik7CisgICAgdm9pZCBzZXR1cEluc3BlY3RvckNsaWVudChjb25zdCBFdmVudCYp
OworICAgIHZvaWQgc2V0dXAoY29uc3QgRXZlbnQmKTsKKyAgICB2b2lkIGNsb3NlKGNvbnN0IEV2
ZW50Jik7CisgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgRXZlbnQmKTsKKyAg
ICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IEV2ZW50Jik7CiAKLSAgICB2b2lkIHNl
bmRDbG9zZUV2ZW50KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQpOwor
ICAgIHZvaWQgc2VuZENsb3NlRXZlbnQoQ29ubmVjdGlvbklELCBUYXJnZXRJRCk7CiAgICAgdm9p
ZCBjbGllbnRDb25uZWN0aW9uQ2xvc2VkKCk7CiAKLSAgICB2b2lkIGRpZEFjY2VwdChDbGllbnRJ
RCwgU29ja2V0OjpEb21haW4pIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkQ2xvc2UoQ2xpZW50SUQp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkQWNjZXB0KENvbm5lY3Rpb25JRCwgU29ja2V0OjpEb21h
aW4pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2xvc2UoQ29ubmVjdGlvbklEKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgc2VuZFdlYkluc3BlY3RvckV2ZW50KENsaWVudElELCBjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNlbmRXZWJJbnNwZWN0b3JFdmVudChDb25uZWN0aW9uSUQsIGNvbnN0IFN0
cmluZyYpOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPiYgZGlzcGF0Y2hNYXAo
KTsKKyAgICBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+JiBkaXNwYXRjaE1hcCgpIG92ZXJy
aWRlOwogCi0gICAgSGFzaFNldDxzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Pj4gbV9pbnNw
ZWN0aW9uVGFyZ2V0czsKKyAgICBIYXNoU2V0PHN0ZDo6cGFpcjxDb25uZWN0aW9uSUQsIFRhcmdl
dElEPj4gbV9pbnNwZWN0aW9uVGFyZ2V0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQ+IG1fc2VydmVyOwogCiAgICAgLy8gQ29ubmVjdGlvbnMgdG8g
dGhlIFdlYlByb2Nlc3MuCi0gICAgVmVjdG9yPENsaWVudElEPiBtX2luc3BlY3RvckNvbm5lY3Rp
b25zOworICAgIFZlY3RvcjxDb25uZWN0aW9uSUQ+IG1faW5zcGVjdG9yQ29ubmVjdGlvbnM7CiAg
ICAgTG9jayBtX2Nvbm5lY3Rpb25zTG9jazsKIAogICAgIC8vIENvbm5lY3Rpb25zIGZyb20gUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LgotICAgIE9wdGlvbmFsPENsaWVudElEPiBtX2NsaWVudENvbm5l
Y3Rpb247CisgICAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBtX2NsaWVudENvbm5lY3Rpb247CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNvY2tldC5jcHAKaW5kZXggNzVkMjQ4NDY3N2EuLmI0MzFkZjBhN2Y0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcApAQCAtNTEsOSArNTEsOSBA
QCBSZW1vdGVJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvcigpCiAgICAgc3RhcnQoKTsKIH0KIAot
dm9pZCBSZW1vdGVJbnNwZWN0b3I6OmRpZENsb3NlKENsaWVudElEIGNsaWVudElEKQordm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OmRpZENsb3NlKENvbm5lY3Rpb25JRCBpZCkKIHsKLSAgICBpZiAoY2xp
ZW50SUQgIT0gbV9jbGllbnRJRC52YWx1ZSgpKQorICAgIGlmIChpZCAhPSBtX2NsaWVudElELnZh
bHVlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbPV0gewpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kQXV0
b21hdGljSW5zcGVjdGlvbkNhbmRpZGF0ZU1lc3NhZ2UoKQogewogfQogCi12b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1JlbW90ZSh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VU
b1JlbW90ZShUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgIGlmICghbV9zb2NrZXRDb25u
ZWN0aW9uKQpAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZENsb3NlTWVzc2FnZShjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgICAgIGNvbm5lY3Rpb25Ub1Rh
cmdldC0+Y2xvc2UoKTsKIH0KIAotdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVwKHVuc2lnbmVk
IHRhcmdldElkZW50aWZpZXIpCit2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c2V0dXAoVGFyZ2V0SUQg
dGFyZ2V0SWRlbnRpZmllcikKIHsKICAgICBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQqIHRhcmdl
dDsKICAgICB7CkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnNldHVw
KHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIpCiAgICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNz
aW9uKCk7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yOjpzZW5kTWVzc2FnZVRvVGFyZ2V0KHVu
c2lnbmVkIHRhcmdldElkZW50aWZpZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit2b2lkIFJlbW90
ZUluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb1RhcmdldChUYXJnZXRJRCB0YXJnZXRJZGVudGlmaWVy
LCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIGlmIChhdXRvIGNvbm5lY3Rpb25Ub1Rhcmdl
dCA9IG1fdGFyZ2V0Q29ubmVjdGlvbk1hcC5nZXQodGFyZ2V0SWRlbnRpZmllcikpCiAgICAgICAg
IGNvbm5lY3Rpb25Ub1RhcmdldC0+c2VuZE1lc3NhZ2VUb1RhcmdldChTdHJpbmc6OmZyb21VVEY4
KG1lc3NhZ2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuaAppbmRl
eCA3YmI3MDRlNmQxMC4uMmYyZGFkYjI2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yU29ja2V0LmgKQEAgLTQxLDE2ICs0MSwxNiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAordXNpbmcgQ29ubmVjdGlvbklEID0gdWludDMyX3Q7CisKICNpZiBPUyhXSU5ET1dTKQog
Ci11c2luZyBDbGllbnRJRCA9IHVuc2lnbmVkOwogdXNpbmcgUGxhdGZvcm1Tb2NrZXRUeXBlID0g
U09DS0VUOwogdXNpbmcgUG9sbGluZ0Rlc2NyaXB0b3IgPSBXU0FQT0xMRkQ7CiBjb25zdGV4cHIg
UGxhdGZvcm1Tb2NrZXRUeXBlIElOVkFMSURfU09DS0VUX1ZBTFVFID0gSU5WQUxJRF9TT0NLRVQ7
CiAKICNlbHNlCiAKLXVzaW5nIENsaWVudElEID0gdW5zaWduZWQ7CiB1c2luZyBQbGF0Zm9ybVNv
Y2tldFR5cGUgPSBpbnQ7CiB1c2luZyBQb2xsaW5nRGVzY3JpcHRvciA9IHN0cnVjdCBwb2xsZmQ7
CiBjb25zdGV4cHIgUGxhdGZvcm1Tb2NrZXRUeXBlIElOVkFMSURfU09DS0VUX1ZBTFVFID0gLTE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
LmNwcAppbmRleCA0ZDMzOWVkYjgzOC4uNjQ3ZmY2OTM1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAtNjksNyArNjks
NyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojp3YWtldXBXb3JrZXJUaHJl
YWQoKQogICAgICAgICBTb2NrZXQ6OndyaXRlKG1fd2FrZXVwU2VuZFNvY2tldCwgIjEiLCAxKTsK
IH0KIAotT3B0aW9uYWw8Q2xpZW50SUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojpj
b25uZWN0SW5ldChjb25zdCBjaGFyKiBzZXJ2ZXJBZGRyZXNzLCB1aW50MTZfdCBzZXJ2ZXJQb3J0
KQorT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6
Y29ubmVjdEluZXQoY29uc3QgY2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUG9y
dCkKIHsKICAgICBpZiAoYXV0byBzb2NrZXQgPSBTb2NrZXQ6OmNvbm5lY3Qoc2VydmVyQWRkcmVz
cywgc2VydmVyUG9ydCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVDbGllbnQoKnNvY2tldCk7CkBA
IC04Niw3ICs4Niw3IEBAIGJvb2wgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6Omxpc3Rl
bkluZXQodWludDE2X3QgcG9ydCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmlzTGlzdGVuaW5nKENsaWVudElEIGlkKQorYm9vbCBS
ZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6aXNMaXN0ZW5pbmcoQ29ubmVjdGlvbklEIGlk
KQogewogICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CiAgICAgaWYgKGNv
bnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChpZCkpCkBAIC0xMDAsNyAr
MTAwLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6d29ya2VyVGhyZWFk
KCkKIAogICAgIHdoaWxlICghbV9zaG91bGRBYm9ydFdvcmtlclRocmVhZCkgewogICAgICAgICBW
ZWN0b3I8UG9sbGluZ0Rlc2NyaXB0b3I+IHBvbGxmZHM7Ci0gICAgICAgIFZlY3RvcjxDbGllbnRJ
RD4gaWRzOworICAgICAgICBWZWN0b3I8Q29ubmVjdGlvbklEPiBpZHM7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX2Nvbm5lY3Rpb25zTG9jayk7CiAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKSB7CkBAIC0xMzIs
MTQgKzEzMiwxNCBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojp3b3JrZXJU
aHJlYWQoKQogICAgIH0KIH0KIAotT3B0aW9uYWw8Q2xpZW50SUQ+IFJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKK09w
dGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0
ZUNsaWVudChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0KQogewogICAgIGlmICghU29ja2V0Ojpp
c1ZhbGlkKHNvY2tldCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBMb2Nr
SG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOwogCi0gICAgQ2xpZW50SUQgaWQ7CisgICAg
Q29ubmVjdGlvbklEIGlkOwogICAgIGRvIHsKICAgICAgICAgaWQgPSBjcnlwdG9ncmFwaGljYWxs
eVJhbmRvbU51bWJlcigpOwogICAgIH0gd2hpbGUgKCFpZCB8fCBtX2Nvbm5lY3Rpb25zLmNvbnRh
aW5zKGlkKSk7CkBAIC0xNTEsNyArMTUxLDcgQEAgT3B0aW9uYWw8Q2xpZW50SUQ+IFJlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXAKICAg
ICBjb25uZWN0aW9uLT5wb2xsID0gU29ja2V0OjpwcmVwYXJlUG9sbGluZyhzb2NrZXQpOwogICAg
IGNvbm5lY3Rpb24tPnNvY2tldCA9IHNvY2tldDsKICAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwot
ICAgIGNvbm5lY3Rpb24tPnBhcnNlci0+c2V0RGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIoW3RoaXNd
KENsaWVudElEIGlkLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CisgICAgY29ubmVjdGlvbi0+
cGFyc2VyLT5zZXREaWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcihbdGhpc10oQ29ubmVjdGlvbklEIGlk
LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7CiAgICAgICAgIGlmIChtX2luc3BlY3RvckNsaWVu
dCkKICAgICAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9y
RXZlbnQoaWQsIFdURk1vdmUoZGF0YSkpOwogICAgIH0pOwpAQCAtMTYxLDEwICsxNjEsMTAgQEAg
T3B0aW9uYWw8Q2xpZW50SUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpjcmVhdGVD
bGllbnQoUGxhdGZvcm1Tb2NrZXRUeXAKICAgICByZXR1cm4gaWQ7CiB9CiAKLXZvaWQgUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQoQ2xpZW50SUQgY2xpZW50SUQp
Cit2b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpyZWN2SWZFbmFibGVkKENvbm5l
Y3Rpb25JRCBpZCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOwot
ICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoY2xpZW50
SUQpKSB7CisgICAgaWYgKGNvbnN0IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdl
dChpZCkpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlY3ZCdWZmZXIoU29ja2V0OjpCdWZm
ZXJTaXplKTsKICAgICAgICAgaWYgKGF1dG8gcmVhZFNpemUgPSBTb2NrZXQ6OnJlYWQoY29ubmVj
dGlvbi0+c29ja2V0LCByZWN2QnVmZmVyLmRhdGEoKSwgcmVjdkJ1ZmZlci5zaXplKCkpKSB7CiAg
ICAgICAgICAgICBpZiAoKnJlYWRTaXplID4gMCkKQEAgLTE3MywxOCArMTczLDE4IEBAIHZvaWQg
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQoQ2xpZW50SUQgY2xp
ZW50SUQpCiAgICAgICAgIH0KIAogICAgICAgICBTb2NrZXQ6OmNsb3NlKGNvbm5lY3Rpb24tPnNv
Y2tldCk7Ci0gICAgICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGNsaWVudElEKTsKKyAgICAgICAg
bV9jb25uZWN0aW9ucy5yZW1vdmUoaWQpOwogCiAgICAgICAgIGxvY2sudW5sb2NrRWFybHkoKTsK
ICAgICAgICAgaWYgKG1faW5zcGVjdG9yQ2xpZW50KQotICAgICAgICAgICAgbV9pbnNwZWN0b3JD
bGllbnQtPmRpZENsb3NlKGNsaWVudElEKTsKKyAgICAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50
LT5kaWRDbG9zZShpZCk7CiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50OjpzZW5kSWZFbmFibGVkKENsaWVudElEIGNsaWVudElEKQordm9pZCBSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludDo6c2VuZElmRW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCiB7CiAg
ICAgTG9ja0hvbGRlciBsb2NrKG1fY29ubmVjdGlvbnNMb2NrKTsKLSAgICBpZiAoY29uc3QgYXV0
byYgY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KGNsaWVudElEKSkgeworICAgIGlmIChj
b25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoaWQpKSB7CiAgICAgICAg
IFNvY2tldDo6Y2xlYXJXYWl0aW5nV3JpdGFibGUoY29ubmVjdGlvbi0+cG9sbCk7CiAKICAgICAg
ICAgYXV0byYgYnVmZmVyID0gY29ubmVjdGlvbi0+c2VuZEJ1ZmZlcjsKQEAgLTIwNiwxMCArMjA2
LDEwIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmRJZkVuYWJsZWQo
Q2xpZW50SUQgY2xpZW50SUQpCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjpzZW5kKENsaWVudElEIGNsaWVudElELCBjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQoQ29u
bmVjdGlvbklEIGlkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBM
b2NrSG9sZGVyIGxvY2sobV9jb25uZWN0aW9uc0xvY2spOwotICAgIGlmIChjb25zdCBhdXRvJiBj
b25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoY2xpZW50SUQpKSB7CisgICAgaWYgKGNvbnN0
IGF1dG8mIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChpZCkpIHsKICAgICAgICAgYXV0
byBtZXNzYWdlID0gTWVzc2FnZVBhcnNlcjo6Y3JlYXRlTWVzc2FnZShkYXRhLCBzaXplKTsKICAg
ICAgICAgaWYgKG1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM0
LDcgKzIzNCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNlbmQoQ2xp
ZW50SUQgY2xpZW50SUQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsCiAgICAgfQogfQogCi12b2lkIFJl
bW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjphY2NlcHRJbmV0U29ja2V0SWZFbmFibGVkKENs
aWVudElEIGlkKQordm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6YWNjZXB0SW5l
dFNvY2tldElmRW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCiB7CiAgICAgaWYgKCFpc0xpc3Rlbmlu
ZyhpZCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50LmgKaW5kZXggOTMzYWI5MDU3ZmMuLjY2OWE4NDg3ZjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQu
aApAQCAtNTIsMjMgKzUyLDIzIEBAIHB1YmxpYzoKICAgICBSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludChSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50KiwgY29uc3QgY2hhciopOwog
ICAgIH5SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCgpOwogCi0gICAgT3B0aW9uYWw8Q2xp
ZW50SUQ+IGNvbm5lY3RJbmV0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHIsIHVpbnQxNl90IHNlcnZl
clBvcnQpOworICAgIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gY29ubmVjdEluZXQoY29uc3QgY2hh
ciogc2VydmVyQWRkciwgdWludDE2X3Qgc2VydmVyUG9ydCk7CiAgICAgYm9vbCBsaXN0ZW5JbmV0
KHVpbnQxNl90IHBvcnQpOwogCi0gICAgdm9pZCBzZW5kKENsaWVudElELCBjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QpOworICAgIHZvaWQgc2VuZChDb25uZWN0aW9uSUQsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCk7CiAKLSAgICBPcHRpb25hbDxDbGllbnRJRD4gY3JlYXRlQ2xpZW50
KFBsYXRmb3JtU29ja2V0VHlwZSBmZCk7CisgICAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBjcmVh
dGVDbGllbnQoUGxhdGZvcm1Tb2NrZXRUeXBlIGZkKTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQg
cmVjdklmRW5hYmxlZChDbGllbnRJRCk7Ci0gICAgdm9pZCBzZW5kSWZFbmFibGVkKENsaWVudElE
KTsKKyAgICB2b2lkIHJlY3ZJZkVuYWJsZWQoQ29ubmVjdGlvbklEKTsKKyAgICB2b2lkIHNlbmRJ
ZkVuYWJsZWQoQ29ubmVjdGlvbklEKTsKICAgICB2b2lkIHdvcmtlclRocmVhZCgpOwogICAgIHZv
aWQgd2FrZXVwV29ya2VyVGhyZWFkKCk7Ci0gICAgdm9pZCBhY2NlcHRJbmV0U29ja2V0SWZFbmFi
bGVkKENsaWVudElEKTsKLSAgICBib29sIGlzTGlzdGVuaW5nKENsaWVudElEKTsKKyAgICB2b2lk
IGFjY2VwdEluZXRTb2NrZXRJZkVuYWJsZWQoQ29ubmVjdGlvbklEKTsKKyAgICBib29sIGlzTGlz
dGVuaW5nKENvbm5lY3Rpb25JRCk7CiAKICAgICBMb2NrIG1fY29ubmVjdGlvbnNMb2NrOwotICAg
IEhhc2hNYXA8Q2xpZW50SUQsIHN0ZDo6dW5pcXVlX3B0cjxTb2NrZXQ6OkNvbm5lY3Rpb24+PiBt
X2Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8Q29ubmVjdGlvbklELCBzdGQ6OnVuaXF1ZV9wdHI8
U29ja2V0OjpDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKIAogICAgIFBsYXRmb3JtU29ja2V0
VHlwZSBtX3dha2V1cFNlbmRTb2NrZXQgeyBJTlZBTElEX1NPQ0tFVF9WQUxVRSB9OwogICAgIFBs
YXRmb3JtU29ja2V0VHlwZSBtX3dha2V1cFJlY2VpdmVTb2NrZXQgeyBJTlZBTElEX1NPQ0tFVF9W
QUxVRSB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>