<?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>158292</bug_id>
          
          <creation_ts>2016-06-01 21:26:16 -0700</creation_ts>
          <short_desc>Modernize various lambda captures</short_desc>
          <delta_ts>2016-06-02 10:58:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198438</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 21:26:16 -0700</bug_when>
    <thetext>Modernize various lambda captures, especially the ones unnecessarily allocating objects on the heap and destroying them in the lambda.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198452</commentid>
    <comment_count>1</comment_count>
      <attachid>280308</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-01 22:09:11 -0700</bug_when>
    <thetext>Created attachment 280308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198453</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-01 22:11:12 -0700</bug_when>
    <thetext>Attachment 280308 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:523:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:415:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198462</commentid>
    <comment_count>3</comment_count>
      <attachid>280308</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-01 22:58:06 -0700</bug_when>
    <thetext>Comment on attachment 280308
Patch

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

Reviewing this urged me to file https://bugs.webkit.org/show_bug.cgi?id=158293

r+ as long as cleaning up the build errors doesn&apos;t substantially change the patch.

&gt; Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:-173
&gt; -    String messageCopy = message.isolatedCopy();
&gt; -    m_pendingTasks.append(std::make_unique&lt;ScriptExecutionContext::Task&gt;([this, message] (ScriptExecutionContext&amp;) {

AGGGGH! This one was straight up wrong!!! :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198531</commentid>
    <comment_count>4</comment_count>
      <attachid>280333</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-02 08:53:01 -0700</bug_when>
    <thetext>Created attachment 280333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198533</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-02 08:54:24 -0700</bug_when>
    <thetext>Attachment 280333 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:523:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:116:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:415:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198539</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-02 09:14:07 -0700</bug_when>
    <thetext>Hmm.

  &quot;WTF::RefPtr&lt;WebKit::NetworkProcess::fetchWebsiteData(WebCore::SessionID, WTF::OptionSet&lt;WebKit::WebsiteDataType&gt;, WTF::OptionSet&lt;WebKit::WebsiteDataFetchOption&gt;, unsigned long long)::CallbackAggregator&gt;::RefPtr(WTF::RefPtr&lt;WebKit::NetworkProcess::fetchWebsiteData(WebCore::SessionID, WTF::OptionSet&lt;WebKit::WebsiteDataType&gt;, WTF::OptionSet&lt;WebKit::WebsiteDataFetchOption&gt;, unsigned long long)::CallbackAggregator&gt; const&amp;)&quot;, referenced from:
      WebKit::NetworkProcess::fetchWebsiteData(WebCore::SessionID, WTF::OptionSet&lt;WebKit::WebsiteDataType&gt;, WTF::OptionSet&lt;WebKit::WebsiteDataFetchOption&gt;, unsigned long long) in NetworkProcess.o
ld: symbol(s) not found for architecture x86_64

But I did not modify fetchWebsiteData() or any of its call sites. Weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198553</commentid>
    <comment_count>7</comment_count>
      <attachid>280335</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-02 09:45:55 -0700</bug_when>
    <thetext>Created attachment 280335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198554</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-02 09:58:26 -0700</bug_when>
    <thetext>Attachment 280335 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:524:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:415:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198555</commentid>
    <comment_count>9</comment_count>
      <attachid>280336</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-02 10:04:03 -0700</bug_when>
    <thetext>Created attachment 280336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198556</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-02 10:05:04 -0700</bug_when>
    <thetext>Attachment 280336 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:524:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.h:117:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:355:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:369:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/NetworkProcess.cpp:415:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 6 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198571</commentid>
    <comment_count>11</comment_count>
      <attachid>280336</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-02 10:58:36 -0700</bug_when>
    <thetext>Comment on attachment 280336
Patch

Clearing flags on attachment: 280336

Committed r201602: &lt;http://trac.webkit.org/changeset/201602&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198572</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-02 10:58:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280308</attachid>
            <date>2016-06-01 22:09:11 -0700</date>
            <delta_ts>2016-06-02 08:52:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158292-20160601221029.patch</filename>
            <type>text/plain</type>
            <size>30137</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU4YTRkOGZmMGMzMzg5
NTlmZjE0M2JiZTAzY2NmNTdjMGVkMGQ5YS4uNDBkZTNjMzE3MmIwMjQ3NWY0YzJlZDc4OGE2ZDdj
NzNmN2M4NzExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE2LTA2LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIHZhcmlvdXMg
bGFtYmRhIGNhcHR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTgyOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNb2Rlcm5pemUgdmFyaW91cyBsYW1iZGEgY2FwdHVyZXMsIGVzcGVjaWFsbHkgdGhl
IG9uZXMgdW5uZWNlc3NhcmlseQorICAgICAgICBhbGxvY2F0aW5nIG9iamVjdHMgb24gdGhlIGhl
YXAgYW5kIGRlc3Ryb3lpbmcgdGhlbSBpbiB0aGUgbGFtYmRhLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVCaW5h
cnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdI
YW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpw
cm9jZXNzUGVuZGluZ1Rhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6
ZGlzY29ubmVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGV0ZUNhbGxiYWNrRGF0YVRhc2s6OkRlbGV0ZUNhbGxiYWNrRGF0
YVRhc2spOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRTZW5kRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
ZGlkRmFpbFJlZGlyZWN0Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKTogRGVsZXRlZC4KKwogMjAxNi0wNi0w
MSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIExheW91
dFRlc3QgYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2F0dHJpYnV0ZWQtc3RyaW5nLWZvci1y
YW5nZS5odG1sIGZhaWxpbmcgb24gaW9zLXNpbXVsYXRvciBkZWJ1ZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDNm
ZDdlOGZiMDg0ZTA4NDE5NjlkNjM0Yjc4MGE0MTU5YjYwNzNkNmMuLjIyYWM3ZDVlZDM0NTE4Y2Jm
NzRhZGE1NzA0NWVhZmNhZTBkNzU2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
Ni0wNi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVy
bml6ZSB2YXJpb3VzIGxhbWJkYSBjYXB0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW9kZXJuaXplIHZhcmlvdXMgbGFtYmRhIGNhcHR1cmVzLCBl
c3BlY2lhbGx5IHRoZSBvbmVzIHVubmVjZXNzYXJpbHkKKyAgICAgICAgYWxsb2NhdGluZyBvYmpl
Y3RzIG9uIHRoZSBoZWFwIGFuZCBkZXN0cm95aW5nIHRoZW0gaW4gdGhlIGxhbWJkYS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6ZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6Y2xlYXJEaXNrQ2Fj
aGVFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0
ZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnRyYXZlcnNl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpUcmF2ZXJzZU9wZXJhdGlvbjo6VHJh
dmVyc2VPcGVyYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuaDoKKwogMjAxNi0wNi0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTW9kZXJuaXplIGxhbWJkYSB1c2FnZSBmb3IgYWxsIGNhbGxlcnMg
b2YgUnVuTG9vcDo6ZGlzcGF0Y2goKSAodGFrZSAyKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggMTIyNDgwNWM4ZmJmOWExMWI1
NzJmZmFmMDRmM2U0MWY5OWY5MmMyNi4uN2RiYWEwZmRmNjNmNzhmNjBlNTQ4MDZjMGI5YmZlNjQ3
ZWIxNzkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlci5jcHAKQEAgLTE1NSwxMSArMTU1LDkgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OmNsZWFyQ2xpZW50KCkKIAogdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QoKQogewotICAgIHJlZigpOwot
ICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+KFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBt
X3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb25uZWN0
KCk7Ci0gICAgICAgIGRlcmVmKCk7CiAgICAgfSkpOwogCiAgICAgaWYgKCFtX3N1c3BlbmRlZCkK
QEAgLTE2OCwxMiArMTY2LDkgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZENvbm5lY3QoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewotICAgIHJlZigpOwotICAgIFN0cmluZyBtZXNzYWdlQ29weSA9IG1lc3NhZ2UuaXNvbGF0ZWRD
b3B5KCk7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIG1lc3NhZ2VdIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4oKnRoaXMpLCBtZXNzYWdlID0g
bWVzc2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2Fn
ZShtZXNzYWdlKTsKLSAgICAgICAgZGVyZWYoKTsKICAgICB9KSk7CiAKICAgICBpZiAoIW1fc3Vz
cGVuZGVkKQpAQCAtMTgyLDEzICsxNzcsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZQogCiB2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJp
bmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKIHsKLSAgICByZWYoKTsKLSAg
ICBWZWN0b3I8dWludDhfdD4qIGNhcHR1cmVkRGF0YSA9IG5ldyBWZWN0b3I8dWludDhfdD4oV1RG
TW92ZShiaW5hcnlEYXRhKSk7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIGNhcHR1cmVkRGF0YV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWY8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPigq
dGhpcyksIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIG11dGFibGUgewogICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZSgqY2FwdHVyZWREYXRhKSk7Ci0g
ICAgICAgIGRlbGV0ZSBjYXB0dXJlZERhdGE7Ci0gICAgICAgIGRlcmVmKCk7CisgICAgICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZShiaW5hcnlEYXRhKSk7CiAg
ICAgfSkpOwogCiAgICAgaWYgKCFtX3N1c3BlbmRlZCkKQEAgLTE5NywxMSArMTg4LDkgQEAgdm9p
ZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVCaW5h
cnlEYXRhKFZlY3Rvcjx1aW50OF8KIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcgYnVmZmVy
ZWRBbW91bnQpCiB7Ci0gICAgcmVmKCk7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIGJ1ZmZlcmVk
QW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI+KCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
ewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkVXBkYXRl
QnVmZmVyZWRBbW91bnQoYnVmZmVyZWRBbW91bnQpOwotICAgICAgICBkZXJlZigpOwogICAgIH0p
KTsKIAogICAgIGlmICghbV9zdXNwZW5kZWQpCkBAIC0yMTAsMTEgKzE5OSw5IEBAIHZvaWQgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJlZEFt
b3VudCh1bnNpZ25lZCBsCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogewotICAgIHJlZigpOwotICAgIG1f
cGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+KFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRp
bmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI+KCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdI
YW5kc2hha2UoKTsKLSAgICAgICAgZGVyZWYoKTsKICAgICB9KSk7CiAKICAgICBpZiAoIW1fc3Vz
cGVuZGVkKQpAQCAtMjIzLDEzICsyMTAsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIAogdm9pZCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIGxv
bmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3Np
bmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1
bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICByZWYoKTsK
LSAgICBTdHJpbmcgcmVhc29uQ29weSA9IHJlYXNvbi5pc29sYXRlZENvcHkoKTsKLSAgICBtX3Bl
bmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPigKLSAgICAgICAgW3RoaXMsIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5n
SGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uQ29weV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPigqdGhpcyksIHVuaGFuZGxlZEJ1
ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0g
cmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAg
ICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ2xvc2Uo
dW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2Rl
LCByZWFzb25Db3B5KTsKLSAgICAgICAgICAgIGRlcmVmKCk7CisgICAgICAgICAgICAgICAgbV9j
bGllbnQtPmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtl
Q29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsKICAgICAgICAgfSkpOwogCiAgICAgaWYgKCFtX3N1
c3BlbmRlZCkKQEAgLTIzOCwxMSArMjIxLDkgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnUKIAog
dm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVN
ZXNzYWdlRXJyb3IoKQogewotICAgIHJlZigpOwotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlz
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7Ci0gICAgICAgIGRl
cmVmKCk7CiAgICAgfSkpOwogCiAgICAgaWYgKCFtX3N1c3BlbmRlZCkKQEAgLTI2NywxMSArMjQ4
LDkgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nl
c3NQZW5kaW5nVGFza3MoKQogICAgIGlmICghbV9zeW5jTWV0aG9kRG9uZSkgewogICAgICAgICAv
LyBXaGVuIGEgc3luY2hyb25vdXMgb3BlcmF0aW9uIGlzIGluIHByb2dyZXNzIChpLmUuIHRoZSBl
eGVjdXRpb24gc3RhY2sgY29udGFpbnMKICAgICAgICAgLy8gV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OndhaXRGb3JNZXRob2RDb21wbGV0aW9uKCkpLCB3ZSBjYW5ub3QgaW52b2tl
IGNhbGxiYWNrcyBpbiB0aGlzIHJ1biBsb29wLgotICAgICAgICByZWYoKTsKLSAgICAgICAgbV9j
b250ZXh0LT5wb3N0VGFzayhbdGhpc10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKKyAgICAgICAgbV9jb250ZXh0LT5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlzKV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
Y29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgcHJv
Y2Vzc1BlbmRpbmdUYXNrcygpOwotICAgICAgICAgICAgZGVyZWYoKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmNwcAppbmRleCA1NGNmNTdkZmI1YzE2M2Q4YzkxZjcyYTMzZjQ3ZmRlZTI4ZGE3NmMwLi4x
ZWVkYmFlOWQ2N2FhYjkwN2E2NzQ4ZDRkY2I2ZWI2MWQ4MjRjN2NiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU0NCwxMCArNTQ0LDkgQEAgdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpkaXNjb25uZWN0KCkKIHsK
ICAgICBjbGVhckNsaWVudFdyYXBwZXIoKTsKICAgICBpZiAobV9wZWVyKSB7Ci0gICAgICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9IG1fcGVlcl0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1Rv
TG9hZGVyKFtwZWVyID0gc3RkOjp1bmlxdWVfcHRyPFBlZXI+KG1fcGVlcildIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzRG9jdW1l
bnQoKSk7Ci0gICAgICAgICAgICBkZWxldGUgcGVlcjsKICAgICAgICAgfSk7CiAgICAgICAgIG1f
cGVlciA9IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDYWxsYmFja0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2Fs
bGJhY2tEYXRhLmgKaW5kZXggN2FjZjkyMWY0OGUzNWJjMGY4MGE1NzE3YjVkZTI1ZDViODM4MThh
My4uOWJlMzFmMTkzOTVlYTU4OGZjMTYzOWZmNjA4YWJiZmQxNzY2ZTFmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCkBAIC0xMTYsOCArMTE2LDcgQEAg
Y2xhc3MgRGVsZXRlQ2FsbGJhY2tEYXRhVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tEYXRh
VHlwZT4KICAgICBleHBsaWNpdCBEZWxldGVDYWxsYmFja0RhdGFUYXNrKENhbGxiYWNrRGF0YVR5
cGUqIGRhdGEpCi0gICAgICAgIDogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW2RhdGFdIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewotICAgICAgICAgICAgZGVsZXRlIGRhdGE7CisgICAgICAgIDogU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVh
bnVwVGFzaywgW2RhdGEgPSBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGJhY2tEYXRhVHlwZT4oZGF0YSld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICB9KQogICAgIHsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5k
ZXggZWJkNjBmZjFiMDM0YTk3MjJiZTJkZTE5YmMxODc4MjBlNTU4ZGZmYi4uMzQ2MTAwZTIzM2Vm
YjU4ODlhMDA5ZjU0MGFhMzQ0MzQ3Y2Y1NDExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtOTAsMjggKzkwLDIyIEBAIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhy
ZWFkYWJsZUxvYWRlckNsaWVuCiAgICAgLCBtX2xvYWRlclByb3h5KGxvYWRlclByb3h5KQogICAg
ICwgbV90YXNrTW9kZSh0YXNrTW9kZS5pc29sYXRlZENvcHkoKSkKIHsKLSAgICBhdXRvKiByZXF1
ZXN0RGF0YSA9IHJlcXVlc3QuY29weURhdGEoKS5yZWxlYXNlKCk7Ci0gICAgYXV0byogb3B0aW9u
c0NvcHkgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpLnJlbGVhc2UoKTsKLQogICAgIEFTU0VSVChz
ZWN1cml0eU9yaWdpbik7CiAgICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7Ci0gICAg
YXV0byogY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVu
dFNlY3VyaXR5UG9saWN5Pigqc2VjdXJpdHlPcmlnaW4pLnJlbGVhc2UoKTsKKyAgICBhdXRvIGNv
bnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0
eVBvbGljeT4oKnNlY3VyaXR5T3JpZ2luKTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5
LT5jb3B5U3RhdGVGcm9tKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKLSAgICBTdHJpbmdDYXB0
dXJlIGNhcHR1cmVkT3V0Z29pbmdSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVyKTsKLSAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHJlcXVlc3REYXRhLCBvcHRpb25zQ29w
eSwgY29udGVudFNlY3VyaXR5UG9saWN5Q29weSwgY2FwdHVyZWRPdXRnb2luZ1JlZmVycmVyXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0RGF0YSA9IHJlcXVlc3QuY29weURhdGEoKSwgb3B0
aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkg
PSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpLCBvdXRnb2luZ1JlZmVycmVyID0g
b3V0Z29pbmdSZWZlcnJlci5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
ICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKIAot
ICAgICAgICBhdXRvIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3Q6OmFkb3B0KHN0ZDo6dW5pcXVl
X3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KHJlcXVlc3REYXRhKSk7Ci0gICAg
ICAgIHJlcXVlc3QtPnNldEhUVFBSZWZlcnJlcihjYXB0dXJlZE91dGdvaW5nUmVmZXJyZXIuc3Ry
aW5nKCkpOwotCi0gICAgICAgIGF1dG8gb3B0aW9ucyA9IHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucz4ob3B0aW9uc0NvcHkpOworICAgICAgICBhdXRvIHJlcXVlc3QgPSBS
ZXNvdXJjZVJlcXVlc3Q6OmFkb3B0KFdURk1vdmUocmVxdWVzdERhdGEpKTsKKyAgICAgICAgcmVx
dWVzdC0+c2V0SFRUUFJlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGUgYSBzaXRlIHJlcXVlc3RzIGEgbG9jYWwgcmVzb3VyY2UsIHRoZW4gdGhpcyB3
aWxsIHJldHVybiBhIG5vbi16ZXJvIHZhbHVlIGJ1dCB0aGUgc3luYyBwYXRoCiAgICAgICAgIC8v
IHdpbGwgcmV0dXJuIGEgMCB2YWx1ZS4gRWl0aGVyIHRoaXMgc2hvdWxkIHJldHVybiAwIG9yIHRo
ZSBvdGhlciBjb2RlIHBhdGggc2hvdWxkIGRvIGEgY2FsbGJhY2sgd2l0aAogICAgICAgICAvLyBh
IGZhaWx1cmUuCi0gICAgICAgIG1fbWFpblRocmVhZExvYWRlciA9IERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6Y3JlYXRlKGRvY3VtZW50LCAqdGhpcywgKnJlcXVlc3QsICpvcHRpb25zLCBzdGQ6
OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5Pihjb250ZW50U2VjdXJpdHlQb2xpY3lD
b3B5KSk7CisgICAgICAgIG1fbWFpblRocmVhZExvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6Y3JlYXRlKGRvY3VtZW50LCAqdGhpcywgKnJlcXVlc3QsICpvcHRpb25zLCBXVEZNb3Zl
KGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpKTsKICAgICAgICAgQVNTRVJUKG1fbWFpblRocmVh
ZExvYWRlciB8fCBtX2xvYWRpbmdGaW5pc2hlZCk7CiAgICAgfSk7CiB9CkBAIC0xMjIsMTAgKzEx
Niw5IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGVz
dHJveSgpCiAgICAgY2xlYXJDbGllbnRXcmFwcGVyKCk7CiAKICAgICAvLyAiZGVsZXRlIHRoaXMi
IGFuZCBtX21haW5UaHJlYWRMb2FkZXI6OmRlcmVmKCkgb24gdGhlIHdvcmtlciBvYmplY3QncyB0
aHJlYWQuCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tU
b0xvYWRlcihbc2VsZiA9IHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlPih0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwog
ICAgIH0pOwogfQogCkBAIC0xNTksODEgKzE1Miw3MSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNsZWFyQ2xpZW50V3JhcHBlcigpCiAKIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkKIHsKLSAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVy
LCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKKyAgICBSZWY8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHByb3Rl
Y3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSAqbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlciA9IFdURk1vdmUocHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBl
ciksIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVy
LT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgICAgIHBy
b3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxC
eXRlc1RvQmVTZW50KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
LSAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdy
YXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgYXV0byogcmVzcG9uc2VEYXRhID0g
cmVzcG9uc2UuY29weURhdGEoKS5yZWxlYXNlKCk7Ci0gICAgaWYgKCFtX2xvYWRlclByb3h5LnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIGlk
ZW50aWZpZXIsIHJlc3BvbnNlRGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKKyAgICBSZWY8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHByb3RlY3RlZFdvcmtl
ckNsaWVudFdyYXBwZXIgPSAqbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xp
ZW50V3JhcHBlciA9IFdURk1vdmUocHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciksIGlkZW50
aWZpZXIsIHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmNvcHlEYXRhKCldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250
ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIGF1dG8gcmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZTo6YWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXNwb25zZURhdGE+KHJlc3BvbnNlRGF0YSkpKTsKLSAgICAgICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsICpyZXNwb25zZSk7Ci0gICAg
fSwgbV90YXNrTW9kZSkpCi0gICAgICAgIGRlbGV0ZSByZXNwb25zZURhdGE7CisgICAgICAgIGF1
dG8gcmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZTo6YWRvcHQoV1RGTW92ZShyZXNwb25zZURhdGEp
KSk7CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVSZXNw
b25zZShpZGVudGlmaWVyLCAqcmVzcG9uc2UpOworICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewotICAgIFJlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2Vy
Q2xpZW50V3JhcHBlcjsKLSAgICBWZWN0b3I8Y2hhcj4qIHZlY3RvclB0ciA9IG5ldyBWZWN0b3I8
Y2hhcj4oZGF0YUxlbmd0aCk7Ci0gICAgbWVtY3B5KHZlY3RvclB0ci0+ZGF0YSgpLCBkYXRhLCBk
YXRhTGVuZ3RoKTsKLSAgICBpZiAoIW1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgdmVjdG9yUHRyXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIFJlZjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlcj4gcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9ICptX3dvcmtlckNsaWVudFdy
YXBwZXI7CisgICAgVmVjdG9yPGNoYXI+IHZlY3RvcihkYXRhTGVuZ3RoKTsKKyAgICBtZW1jcHko
dmVjdG9yLmRhdGEoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFw
cGVyID0gV1RGTW92ZShwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyKSwgdmVjdG9yID0gV1RG
TW92ZSh2ZWN0b3IpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0
b3JQdHItPmRhdGEoKSwgdmVjdG9yUHRyLT5zaXplKCkpOwotICAgICAgICBkZWxldGUgdmVjdG9y
UHRyOwotICAgIH0sIG1fdGFza01vZGUpKQotICAgICAgICBkZWxldGUgdmVjdG9yUHRyOworICAg
ICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3Iu
ZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5n
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgbV9s
b2FkaW5nRmluaXNoZWQgPSB0cnVlOwotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtl
ckNsaWVudFdyYXBwZXIsIGlkZW50aWZpZXIsIGZpbmlzaFRpbWVdIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgUmVmPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVy
PiBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gKm1fd29ya2VyQ2xpZW50V3JhcHBlcjsK
KyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3By
b3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBXVEZNb3ZlKHByb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIpLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVy
LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworICAgICAgICBwcm90
ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZp
bmlzaFRpbWUpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB7CiAgICAgbV9sb2FkaW5nRmluaXNoZWQgPSB0cnVlOwotICAgIFJlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2Vy
Q2xpZW50V3JhcHBlcjsKLSAgICBSZXNvdXJjZUVycm9yKiBjYXB0dXJlZEVycm9yID0gbmV3IFJl
c291cmNlRXJyb3IoZXJyb3IuY29weSgpKTsKLSAgICBpZiAoIW1fbG9hZGVyUHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgY2FwdHVy
ZWRFcnJvcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBSZWY8VGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIg
PSAqbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFdU
Rk1vdmUocHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciksIGVycm9yID0gZXJyb3IuY29weSgp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAg
ICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKCpjYXB0dXJlZEVycm9yKTsKLSAgICAg
ICAgZGVsZXRlIGNhcHR1cmVkRXJyb3I7Ci0gICAgfSwgbV90YXNrTW9kZSkpCi0gICAgICAgIGRl
bGV0ZSBjYXB0dXJlZEVycm9yOworICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVy
LT5kaWRGYWlsKGVycm9yKTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsQWNjZXNzQ29udHJvbENo
ZWNrKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIG1fbG9hZGluZ0ZpbmlzaGVk
ID0gdHJ1ZTsKLSAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgUmVzb3VyY2VFcnJv
ciogY2FwdHVyZWRFcnJvciA9IG5ldyBSZXNvdXJjZUVycm9yKGVycm9yLmNvcHkoKSk7Ci0gICAg
aWYgKCFtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dv
cmtlckNsaWVudFdyYXBwZXIsIGNhcHR1cmVkRXJyb3JdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7CisgICAgUmVmPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBwcm90
ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gKm1fd29ya2VyQ2xpZW50V3JhcHBlcjsKKyAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3Rl
ZFdvcmtlckNsaWVudFdyYXBwZXIgPSBXVEZNb3ZlKHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBw
ZXIpLCBlcnJvciA9IGVycm9yLmNvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFp
bEFjY2Vzc0NvbnRyb2xDaGVjaygqY2FwdHVyZWRFcnJvcik7Ci0gICAgICAgIGRlbGV0ZSBjYXB0
dXJlZEVycm9yOwotICAgIH0sIG1fdGFza01vZGUpKQotICAgICAgICBkZWxldGUgY2FwdHVyZWRF
cnJvcjsKKyAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbEFjY2Vz
c0NvbnRyb2xDaGVjayhlcnJvcik7CisgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbFJlZGlyZWN0Q2hl
Y2soKQogewogICAgIG1fbG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAgICBSZWZQdHI8VGhyZWFk
YWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNs
aWVudFdyYXBwZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckds
b2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgIFJlZjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9ICptX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRX
b3JrZXJDbGllbnRXcmFwcGVyID0gV1RGTW92ZShwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVy
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAg
ICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKKyAgICAg
ICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsK
ICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDdlMTkyYjEwNjYyYTBhNzA5ODBkZjIwNjFj
ZWYyZGU4YzNmN2I3YzkuLmJkNjRhZjAwN2UxZDdjNWU5NTcwNmRkNGZhODJkZjYzMjRlN2EzMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTMwOCwzMiArMzA4LDI2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZEdyYW50U2Fu
ZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90CiAgICAgICAg
IGhhbmRsZXIoKTsKIH0KIAotc3RhdGljIHZvaWQgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKFNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9w
dGlvbnMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiBj
b21wbGV0aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hP
cHRpb25zLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50
cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkK
ICAgICBpZiAoTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5pc0VuYWJsZWQoKSkgewotICAgICAg
ICBhdXRvKiBvcmlnaW5zQW5kU2l6ZXMgPSBuZXcgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+LCB1aW50NjRfdD4oKTsKLQotICAgICAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLnRy
YXZlcnNlKFtmZXRjaE9wdGlvbnMsIGNvbXBsZXRpb25IYW5kbGVyLCBvcmlnaW5zQW5kU2l6ZXNd
KGF1dG8qIHRyYXZlcnNhbEVudHJ5KSB7CisgICAgICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgdWludDY0X3Q+IG9yaWdpbnNBbmRTaXplczsKKyAgICAgICAgTmV0d29ya0NhY2hl
OjpzaW5nbGV0b24oKS50cmF2ZXJzZShbZmV0Y2hPcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvcmlnaW5zQW5kU2l6ZXMgPSBXVEZNb3ZlKG9y
aWdpbnNBbmRTaXplcyldKGF1dG8qIHRyYXZlcnNhbEVudHJ5KSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmICghdHJhdmVyc2FsRW50cnkpIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8V2Vic2l0
ZURhdGE6OkVudHJ5PiBlbnRyaWVzOwogCi0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmln
aW5BbmRTaXplIDogKm9yaWdpbnNBbmRTaXplcykgewotICAgICAgICAgICAgICAgICAgICBXZWJz
aXRlRGF0YTo6RW50cnkgZW50cnkgeyBvcmlnaW5BbmRTaXplLmtleSwgV2Vic2l0ZURhdGFUeXBl
OjpEaXNrQ2FjaGUsIG9yaWdpbkFuZFNpemUudmFsdWUgfTsKLQotICAgICAgICAgICAgICAgICAg
ICBlbnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7Ci0gICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luQW5kU2l6ZSA6IG9yaWdpbnNBbmRTaXplcykK
KyAgICAgICAgICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsg
b3JpZ2luQW5kU2l6ZS5rZXksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCBvcmlnaW5BbmRT
aXplLnZhbHVlIH0pOwogCi0gICAgICAgICAgICAgICAgZGVsZXRlIG9yaWdpbnNBbmRTaXplczsK
LQotICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhh
bmRsZXIsIGVudHJpZXMgPSBXVEZNb3ZlKGVudHJpZXMpXSB7CisgICAgICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBlbnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKV0gewogICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyaWVzKTsKICAgICAgICAgICAgICAgICB9KTsK
IAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBvcmlnaW5zQW5kU2l6ZXMtPmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHRyYXZlcnNhbEVudHJ5LT5lbnRyeS5yZXNwb25zZSgpLnVybCgpKSwgMCk7CisgICAgICAgICAg
ICBhdXRvIHJlc3VsdCA9IG9yaWdpbnNBbmRTaXplcy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSh0cmF2ZXJzYWxFbnRyeS0+ZW50cnkucmVzcG9uc2UoKS51cmwoKSksIDApOwogCiAgICAgICAg
ICAgICBpZiAoZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNv
bXB1dGVTaXplcykpCiAgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSB0
cmF2ZXJzYWxFbnRyeS0+ZW50cnkuc291cmNlU3RvcmFnZVJlY29yZCgpLmhlYWRlci5zaXplKCkg
KyB0cmF2ZXJzYWxFbnRyeS0+cmVjb3JkSW5mby5ib2R5U2l6ZTsKQEAgLTM1MCw3ICszNDQsNyBA
QCBzdGF0aWMgdm9pZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0YwogICAgICAgICBlbnRyaWVzLmFwcGVuZChXZWJzaXRl
RGF0YTo6RW50cnkgeyBXVEZNb3ZlKG9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hl
LCAwIH0pOwogI2VuZGlmCiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRp
b25IYW5kbGVyLCBlbnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKV0geworICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgZW50cmllcyA9IFdURk1vdmUoZW50cmllcyldIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZW50cmllcyk7CiAgICAgfSk7CiB9CkBAIC00MTgsMzEgKzQxMiwyNSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRh
PiYgb3JpZ2lucywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
c3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9y
aWdpbkRhdGE+JiBvcmlnaW5zLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgaWYgKE5ldHdv
cmtDYWNoZTo6c2luZ2xldG9uKCkuaXNFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byogb3JpZ2lu
c1RvRGVsZXRlID0gbmV3IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4oKTsKLQorICAg
ICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNUb0RlbGV0ZTsKICAg
ICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQotICAgICAgICAgICAgb3JpZ2luc1Rv
RGVsZXRlLT5hZGQob3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICAgICAgb3JpZ2lu
c1RvRGVsZXRlLmFkZChvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CiAKLSAgICAgICAgYXV0byog
Y2FjaGVLZXlzVG9EZWxldGUgPSBuZXcgVmVjdG9yPE5ldHdvcmtDYWNoZTo6S2V5PjsKLQotICAg
ICAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLnRyYXZlcnNlKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvcmlnaW5zVG9EZWxldGUsIGNhY2hlS2V5
c1RvRGVsZXRlXShhdXRvKiB0cmF2ZXJzYWxFbnRyeSkgbXV0YWJsZSB7CisgICAgICAgIFZlY3Rv
cjxOZXR3b3JrQ2FjaGU6OktleT4gY2FjaGVLZXlzVG9EZWxldGU7CisgICAgICAgIE5ldHdvcmtD
YWNoZTo6c2luZ2xldG9uKCkudHJhdmVyc2UoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIG9yaWdpbnNUb0RlbGV0ZSA9IFdURk1vdmUob3JpZ2luc1RvRGVs
ZXRlKSwgY2FjaGVLZXlzVG9EZWxldGUgPSBXVEZNb3ZlKGNhY2hlS2V5c1RvRGVsZXRlKV0oYXV0
byogdHJhdmVyc2FsRW50cnkpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHRyYXZlcnNhbEVu
dHJ5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9yaWdpbnNUb0RlbGV0ZS0+Y29udGFpbnMoU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSh0cmF2ZXJzYWxFbnRyeS0+ZW50cnkucmVzcG9uc2UoKS51cmwo
KSkpKQotICAgICAgICAgICAgICAgICAgICBjYWNoZUtleXNUb0RlbGV0ZS0+YXBwZW5kKHRyYXZl
cnNhbEVudHJ5LT5lbnRyeS5rZXkoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9yaWdpbnNUb0Rl
bGV0ZS5jb250YWlucyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRyYXZlcnNhbEVudHJ5LT5lbnRy
eS5yZXNwb25zZSgpLnVybCgpKSkpCisgICAgICAgICAgICAgICAgICAgIGNhY2hlS2V5c1RvRGVs
ZXRlLmFwcGVuZCh0cmF2ZXJzYWxFbnRyeS0+ZW50cnkua2V5KCkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZGVsZXRlIG9yaWdpbnNUb0Rl
bGV0ZTsKLQotICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiAqY2FjaGVLZXlzVG9EZWxldGUp
CisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGNhY2hlS2V5c1RvRGVsZXRlKQogICAgICAg
ICAgICAgICAgIE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGtleSk7CiAKLSAgICAg
ICAgICAgIGRlbGV0ZSBjYWNoZUtleXNUb0RlbGV0ZTsKLQogICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCAyN2I1YWIwNDQ4MDE2MWVmMmU5YWM2
Y2E4YmVkYzI0NjdlYjIwOGJhLi4wNmQ3N2JkY2ZmMDRkYzE3MGEyZWVhMTZkMjlmYmQzNjg3NjNi
ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIENhY2hlOjpyZW1vdmUoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHJlbW92ZShtYWtlQ2Fj
aGVLZXkocmVxdWVzdCkpOwogfQogCi12b2lkIENhY2hlOjp0cmF2ZXJzZShzdGQ6OmZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQordm9pZCBD
YWNoZTo6dHJhdmVyc2UoTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBUcmF2ZXJzYWxF
bnRyeSopPiYmIHRyYXZlcnNlSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNFbmFibGVkKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5oCmluZGV4IGFlZTVkMmZhMzIxN2FhOTVlZjIwMDBjZDNmZjk2YTJmMTMzOGU4YjkuLmRiZDEz
YTYzMDUyNmM5MjZhNzE4NDcxYjBhZTM0NGVmNTBlNTVjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0xMTMsNyArMTEz
LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBFbnRyeSYgZW50cnk7CiAgICAgICAgIGNvbnN0
IFN0b3JhZ2U6OlJlY29yZEluZm8mIHJlY29yZEluZm87CiAgICAgfTsKLSAgICB2b2lkIHRyYXZl
cnNlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVHJhdmVyc2FsRW50cnkqKT4mJik7CisgICAg
dm9pZCB0cmF2ZXJzZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVu
dHJ5Kik+JiYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleSYpOwogICAgIHZvaWQgcmVtb3Zl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
CmluZGV4IDliNDczOWQ3YzcyMGY4OWE3ZWUwZTE2NzlmMzcxYzNkNTAwMWNjOTAuLmJiZWE0Yzlk
OWIyYzBlZDBjYWRjYTkwY2M3ZDQ5NDA2OTI4MGNlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
CkBAIC0xMTMsMTAgKzExMywxMCBAQCBwdWJsaWM6CiBzdHJ1Y3QgU3RvcmFnZTo6VHJhdmVyc2VP
cGVyYXRpb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFRy
YXZlcnNlT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgdHlwZSwgVHJhdmVyc2VGbGFncyBmbGFncywg
Y29uc3QgVHJhdmVyc2VIYW5kbGVyJiBoYW5kbGVyKQorICAgIFRyYXZlcnNlT3BlcmF0aW9uKGNv
bnN0IFN0cmluZyYgdHlwZSwgVHJhdmVyc2VGbGFncyBmbGFncywgVHJhdmVyc2VIYW5kbGVyJiYg
aGFuZGxlcikKICAgICAgICAgOiB0eXBlKHR5cGUpCiAgICAgICAgICwgZmxhZ3MoZmxhZ3MpCi0g
ICAgICAgICwgaGFuZGxlcihoYW5kbGVyKQorICAgICAgICAsIGhhbmRsZXIoV1RGTW92ZShoYW5k
bGVyKSkKICAgICB7IH0KIAogICAgIGNvbnN0IFN0cmluZyB0eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
CmluZGV4IDhmNWViYjVkODE2NjQyOTU3MDg2MzY0Y2YwYzIzMWFhOTVhMWQxNGIuLjAyZDAzODU5
ZTMyYTEzNGU5NzA2NjYxZmE4NzUxMmZlOThmNjVjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKQEAg
LTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICBTaGFyZUNvdW50ID0gMSA8PCAxLAogICAg
IH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBUcmF2ZXJzZUZsYWdzOwotICAgIHR5cGVkZWYgc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBSZWNvcmQqLCBjb25zdCBSZWNvcmRJbmZvJik+IFRyYXZl
cnNlSGFuZGxlcjsKKyAgICB0eXBlZGVmIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3Qg
UmVjb3JkKiwgY29uc3QgUmVjb3JkSW5mbyYpPiBUcmF2ZXJzZUhhbmRsZXI7CiAgICAgLy8gTnVs
bCByZWNvcmQgc2lnbmFscyBlbmQuCiAgICAgdm9pZCB0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5
cGUsIFRyYXZlcnNlRmxhZ3MsIFRyYXZlcnNlSGFuZGxlciYmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280333</attachid>
            <date>2016-06-02 08:53:01 -0700</date>
            <delta_ts>2016-06-02 09:45:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158292-20160602085424.patch</filename>
            <type>text/plain</type>
            <size>27842</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE1YTFlMDRlMjYyNGVk
YmYxYWY5MGYxZjY4MzhkYjQwZjU4OWVjNC4uMTBkODhmMjhhOTQyY2FhNTZkZDg1Mzg1NTllN2Q2
NTcxNjMwZjgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE2LTA2LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIHZhcmlvdXMg
bGFtYmRhIGNhcHR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTgyOTIKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAg
ICAgICAgTW9kZXJuaXplIHZhcmlvdXMgbGFtYmRhIGNhcHR1cmVzLCBlc3BlY2lhbGx5IHRoZSBv
bmVzIHVubmVjZXNzYXJpbHkKKyAgICAgICAgYWxsb2NhdGluZyBvYmplY3RzIG9uIHRoZSBoZWFw
IGFuZCBkZXN0cm95aW5nIHRoZW0gaW4gdGhlIGxhbWJkYS4KKworICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJv
Y2Vzc1BlbmRpbmdUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRp
c2Nvbm5lY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEZWxldGVDYWxsYmFja0RhdGFUYXNrOjpEZWxldGVDYWxsYmFja0RhdGFU
YXNrKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpN
YWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVh
ZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRp
ZEZhaWxSZWRpcmVjdENoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCk6IERlbGV0ZWQuCisKIDIwMTYtMDYtMDIg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBV
c2UgbW9yZSByZWZlcmVuY2VzIGluIFJlc291cmNlTG9hZGVyIHJlbGF0ZWQgY29kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDU4N2FhMjVjMDUxNDA3ZWQzOTg0MDk2ZmU3NGNiNTNkNjlhOGIxM2UuLjg3MTg2NmU4
YjM1NmZlYzg5NTU3OTVlYmRkNzI2MjJiZDU4NDk2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAxNi0wNi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybml6ZSB2YXJpb3VzIGxhbWJkYSBjYXB0dXJlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjkyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIE1vZGVybml6ZSB2YXJpb3VzIGxhbWJkYSBjYXB0
dXJlcywgZXNwZWNpYWxseSB0aGUgb25lcyB1bm5lY2Vzc2FyaWx5CisgICAgICAgIGFsbG9jYXRp
bmcgb2JqZWN0cyBvbiB0aGUgaGVhcCBhbmQgZGVzdHJveWluZyB0aGVtIGluIHRoZSBsYW1iZGEu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmZldGNoRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OmNsZWFy
RGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRj
aFdlYnNpdGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjp0
cmF2ZXJzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6VHJhdmVyc2VPcGVyYXRp
b246OlRyYXZlcnNlT3BlcmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisKIDIwMTYtMDYtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGlu
IFJlc291cmNlTG9hZGVyIHJlbGF0ZWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCAxMjI0ODA1YzhmYmY5YTExYjU3MmZm
YWYwNGYzZTQxZjk5ZjkyYzI2Li43ZGJhYTBmZGY2M2Y3OGY2MGU1NDgwNmMwYjliZmU2NDdlYjE3
OTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyLmNwcApAQCAtMTU1LDExICsxNTUsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiB7Ci0gICAgcmVmKCk7Ci0gICAg
bV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4oW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVu
ZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcj4oKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAg
ICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsK
LSAgICAgICAgZGVyZWYoKTsKICAgICB9KSk7CiAKICAgICBpZiAoIW1fc3VzcGVuZGVkKQpAQCAt
MTY4LDEyICsxNjYsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6ZGlkQ29ubmVjdCgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgcmVmKCk7Ci0gICAgU3RyaW5nIG1lc3NhZ2VDb3B5ID0gbWVzc2FnZS5pc29sYXRlZENvcHko
KTsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgbWVzc2FnZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPigqdGhpcyksIG1lc3NhZ2UgPSBtZXNz
YWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1l
c3NhZ2UpOwotICAgICAgICBkZXJlZigpOwogICAgIH0pKTsKIAogICAgIGlmICghbV9zdXNwZW5k
ZWQpCkBAIC0xODIsMTMgKzE3Nyw5IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lCiAKIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5
RGF0YShWZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQogewotICAgIHJlZigpOwotICAgIFZl
Y3Rvcjx1aW50OF90PiogY2FwdHVyZWREYXRhID0gbmV3IFZlY3Rvcjx1aW50OF90PihXVEZNb3Zl
KGJpbmFyeURhdGEpKTsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgY2FwdHVyZWREYXRhXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlz
KSwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKCpjYXB0dXJlZERhdGEpKTsKLSAgICAg
ICAgZGVsZXRlIGNhcHR1cmVkRGF0YTsKLSAgICAgICAgZGVyZWYoKTsKKyAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9
KSk7CiAKICAgICBpZiAoIW1fc3VzcGVuZGVkKQpAQCAtMTk3LDExICsxODgsOSBAQCB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEoVmVjdG9yPHVpbnQ4XwogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFt
b3VudCkKIHsKLSAgICByZWYoKTsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgYnVmZmVyZWRBbW91
bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4oKnRoaXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGRhdGVCdWZm
ZXJlZEFtb3VudChidWZmZXJlZEFtb3VudCk7Ci0gICAgICAgIGRlcmVmKCk7CiAgICAgfSkpOwog
CiAgICAgaWYgKCFtX3N1c3BlbmRlZCkKQEAgLTIxMCwxMSArMTk5LDkgQEAgdm9pZCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50
KHVuc2lnbmVkIGwKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgcmVmKCk7Ci0gICAgbV9wZW5k
aW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4oW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rh
c2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcj4oKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRz
aGFrZSgpOwotICAgICAgICBkZXJlZigpOwogICAgIH0pKTsKIAogICAgIGlmICghbV9zdXNwZW5k
ZWQpCkBAIC0yMjMsMTMgKzIxMCw5IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogCiB2b2lkIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1
bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2ln
bmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAgIHJlZigpOwotICAg
IFN0cmluZyByZWFzb25Db3B5ID0gcmVhc29uLmlzb2xhdGVkQ29weSgpOwotICAgIG1fcGVuZGlu
Z1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KAotICAgICAgICBbdGhpcywgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5k
c2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb25Db3B5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVy
ZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFz
b24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICAg
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDbG9zZSh1bmhh
bmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJl
YXNvbkNvcHkpOwotICAgICAgICAgICAgZGVyZWYoKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21w
bGV0aW9uLCBjb2RlLCByZWFzb24pOwogICAgICAgICB9KSk7CiAKICAgICBpZiAoIW1fc3VzcGVu
ZGVkKQpAQCAtMjM4LDExICsyMjEsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdQogCiB2b2lk
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VFcnJvcigpCiB7Ci0gICAgcmVmKCk7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXNdIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4oKnRoaXMpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKLSAgICAgICAgZGVyZWYo
KTsKICAgICB9KSk7CiAKICAgICBpZiAoIW1fc3VzcGVuZGVkKQpAQCAtMjY3LDExICsyNDgsOSBA
QCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJvY2Vzc1Bl
bmRpbmdUYXNrcygpCiAgICAgaWYgKCFtX3N5bmNNZXRob2REb25lKSB7CiAgICAgICAgIC8vIFdo
ZW4gYSBzeW5jaHJvbm91cyBvcGVyYXRpb24gaXMgaW4gcHJvZ3Jlc3MgKGkuZS4gdGhlIGV4ZWN1
dGlvbiBzdGFjayBjb250YWlucwogICAgICAgICAvLyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6d2FpdEZvck1ldGhvZENvbXBsZXRpb24oKSksIHdlIGNhbm5vdCBpbnZva2UgY2Fs
bGJhY2tzIGluIHRoaXMgcnVuIGxvb3AuCi0gICAgICAgIHJlZigpOwotICAgICAgICBtX2NvbnRl
eHQtPnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBtX2NvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4oKnRoaXMpXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250
ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgICAgICBwcm9jZXNz
UGVuZGluZ1Rhc2tzKCk7Ci0gICAgICAgICAgICBkZXJlZigpOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDU0Y2Y1N2RmYjVjMTYzZDhjOTFmNzJhMzNmNDdmZGVlMjhkYTc2YzAuLjFlZWRi
YWU5ZDY3YWFiOTA3YTY3NDhkNGRjYjZlYjYxZDgyNGM3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTQ0LDEwICs1NDQsOSBAQCB2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRpc2Nvbm5lY3QoKQogewogICAg
IGNsZWFyQ2xpZW50V3JhcHBlcigpOwogICAgIGlmIChtX3BlZXIpIHsKLSAgICAgICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyID0gbV9wZWVyXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoW3BlZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGVlcj4obV9wZWVyKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNEb2N1bWVudCgp
KTsKLSAgICAgICAgICAgIGRlbGV0ZSBwZWVyOwogICAgICAgICB9KTsKICAgICAgICAgbV9wZWVy
ID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuaAppbmRleCA3YWNmOTIxZjQ4ZTM1YmMwZjgwYTU3MTdiNWRlMjVkNWI4MzgxOGEzLi45
YmUzMWYxOTM5NWVhNTg4ZmMxNjM5ZmY2MDhhYmJmZDE3NjZlMWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTExNiw4ICsxMTYsNyBAQCBjbGFz
cyBEZWxldGVDYWxsYmFja0RhdGFUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFja0RhdGFUeXBl
PgogICAgIGV4cGxpY2l0IERlbGV0ZUNhbGxiYWNrRGF0YVRhc2soQ2FsbGJhY2tEYXRhVHlwZSog
ZGF0YSkKLSAgICAgICAgOiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbZGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7Ci0gICAgICAgICAgICBkZWxldGUgZGF0YTsKKyAgICAgICAgOiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBU
YXNrLCBbZGF0YSA9IHN0ZDo6dW5pcXVlX3B0cjxDYWxsYmFja0RhdGFUeXBlPihkYXRhKV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIH0pCiAgICAgewogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA0
MTAxMThiNTUxMTc2ODNlOTQxY2M3ZTRlOTA2ZmRhMDI0MTFmZWE3Li41MmUxZjJhZjJjMTE4NTE3
MTM3YmNhOTEzOTgxMTYwZjYzYmYwOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMTcsMTAgKzExNyw5IEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGVzdHJveSgpCiAgICAgY2xl
YXJDbGllbnRXcmFwcGVyKCk7CiAKICAgICAvLyAiZGVsZXRlIHRoaXMiIGFuZCBtX21haW5UaHJl
YWRMb2FkZXI6OmRlcmVmKCkgb24gdGhlIHdvcmtlciBvYmplY3QncyB0aHJlYWQuCi0gICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbc2VsZiA9
IHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
Pih0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzRG9jdW1lbnQoKSk7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0pOwogfQogCkBA
IC0xNTQsODEgKzE1Myw3MSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6OmNsZWFyQ2xpZW50V3JhcHBlcigpCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5
dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKIHsKLSAgICBS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyLCBieXRlc1NlbnQsIHRv
dGFsQnl0ZXNUb0JlU2VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICBSZWY8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHByb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSAqbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3Jh
cHBlciA9IFdURk1vdmUocHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciksIGJ5dGVzU2VudCwg
dG90YWxCeXRlc1RvQmVTZW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRTZW5kRGF0YShi
eXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXItPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsK
ICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSZWZQdHI8VGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXI7Ci0gICAgYXV0byogcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuY29weURh
dGEoKS5yZWxlYXNlKCk7Ci0gICAgaWYgKCFtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIGlkZW50aWZpZXIsIHJlc3Bv
bnNlRGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBSZWY8VGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIg
PSAqbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFdU
Rk1vdmUocHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciksIGlkZW50aWZpZXIsIHJlc3BvbnNl
RGF0YSA9IHJlc3BvbnNlLmNvcHlEYXRhKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIGF1dG8gcmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZTo6YWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURh
dGE+KHJlc3BvbnNlRGF0YSkpKTsKLSAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsICpyZXNwb25zZSk7Ci0gICAgfSwgbV90YXNrTW9kZSkp
Ci0gICAgICAgIGRlbGV0ZSByZXNwb25zZURhdGE7CisgICAgICAgIGF1dG8gcmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZTo6YWRvcHQoV1RGTW92ZShyZXNwb25zZURhdGEpKSk7CisgICAgICAgIHBy
b3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCAqcmVzcG9uc2UpOworICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsK
LSAgICBWZWN0b3I8Y2hhcj4qIHZlY3RvclB0ciA9IG5ldyBWZWN0b3I8Y2hhcj4oZGF0YUxlbmd0
aCk7Ci0gICAgbWVtY3B5KHZlY3RvclB0ci0+ZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKLSAg
ICBpZiAoIW1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShb
d29ya2VyQ2xpZW50V3JhcHBlciwgdmVjdG9yUHRyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgIFJlZjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9ICptX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAgVmVj
dG9yPGNoYXI+IHZlY3RvcihkYXRhTGVuZ3RoKTsKKyAgICBtZW1jcHkodmVjdG9yLmRhdGEoKSwg
ZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gV1RGTW92ZShw
cm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyKSwgdmVjdG9yID0gV1RGTW92ZSh2ZWN0b3IpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3JQdHItPmRhdGEoKSwg
dmVjdG9yUHRyLT5zaXplKCkpOwotICAgICAgICBkZWxldGUgdmVjdG9yUHRyOwotICAgIH0sIG1f
dGFza01vZGUpKQotICAgICAgICBkZWxldGUgdmVjdG9yUHRyOworICAgICAgICBwcm90ZWN0ZWRX
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iu
c2l6ZSgpKTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgbV9sb2FkaW5nRmluaXNoZWQg
PSB0cnVlOwotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2Vy
Q2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIs
IGlkZW50aWZpZXIsIGZpbmlzaFRpbWVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CisgICAgUmVmPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyID0gKm1fd29ya2VyQ2xpZW50V3JhcHBlcjsKKyAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXIgPSBXVEZNb3ZlKHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIpLCBpZGVu
dGlmaWVyLCBmaW5pc2hUaW1lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5pc2hMb2Fk
aW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGll
bnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogICAg
IH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAg
bV9sb2FkaW5nRmluaXNoZWQgPSB0cnVlOwotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsK
LSAgICBSZXNvdXJjZUVycm9yKiBjYXB0dXJlZEVycm9yID0gbmV3IFJlc291cmNlRXJyb3IoZXJy
b3IuY29weSgpKTsKLSAgICBpZiAoIW1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgY2FwdHVyZWRFcnJvcl0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBSZWY8VGhyZWFkYWJsZUxvYWRlckNs
aWVudFdyYXBwZXI+IHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSAqbV93b3JrZXJDbGll
bnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFdURk1vdmUocHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlciksIGVycm9yID0gZXJyb3IuY29weSgpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGll
bnRXcmFwcGVyLT5kaWRGYWlsKCpjYXB0dXJlZEVycm9yKTsKLSAgICAgICAgZGVsZXRlIGNhcHR1
cmVkRXJyb3I7Ci0gICAgfSwgbV90YXNrTW9kZSkpCi0gICAgICAgIGRlbGV0ZSBjYXB0dXJlZEVy
cm9yOworICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9y
KTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewogICAgIG1fbG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAgICBS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgUmVzb3VyY2VFcnJvciogY2FwdHVyZWRFcnJv
ciA9IG5ldyBSZXNvdXJjZUVycm9yKGVycm9yLmNvcHkoKSk7Ci0gICAgaWYgKCFtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBw
ZXIsIGNhcHR1cmVkRXJyb3JdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgUmVmPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBwcm90ZWN0ZWRXb3JrZXJDbGll
bnRXcmFwcGVyID0gKm1fd29ya2VyQ2xpZW50V3JhcHBlcjsKKyAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdy
YXBwZXIgPSBXVEZNb3ZlKHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIpLCBlcnJvciA9IGVy
cm9yLmNvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpKTsKLSAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xD
aGVjaygqY2FwdHVyZWRFcnJvcik7Ci0gICAgICAgIGRlbGV0ZSBjYXB0dXJlZEVycm9yOwotICAg
IH0sIG1fdGFza01vZGUpKQotICAgICAgICBkZWxldGUgY2FwdHVyZWRFcnJvcjsKKyAgICAgICAg
cHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhl
cnJvcik7CisgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKQogewogICAgIG1f
bG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3Jr
ZXJDbGllbnRXcmFwcGVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
IFJlZjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gcHJvdGVjdGVkV29ya2VyQ2xpZW50
V3JhcHBlciA9ICptX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFw
cGVyID0gV1RGTW92ZShwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgd29ya2VyQ2xp
ZW50V3JhcHBlci0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKKyAgICAgICAgcHJvdGVjdGVkV29y
a2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICB9LCBtX3Rhc2tN
b2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDdlMTkyYjEwNjYyYTBhNzA5ODBkZjIwNjFjZWYyZGU4YzNmN2I3Yzku
LmJkNjRhZjAwN2UxZDdjNWU5NTcwNmRkNGZhODJkZjYzMjRlN2EzMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTMwOCwzMiAr
MzA4LDI2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90CiAgICAgICAgIGhhbmRsZXIoKTsKIH0K
IAotc3RhdGljIHZvaWQgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiBjb21wbGV0aW9uSGFuZGxl
cikKK3N0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBpZiAoTmV0d29y
a0NhY2hlOjpzaW5nbGV0b24oKS5pc0VuYWJsZWQoKSkgewotICAgICAgICBhdXRvKiBvcmlnaW5z
QW5kU2l6ZXMgPSBuZXcgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCB1aW50NjRfdD4o
KTsKLQotICAgICAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLnRyYXZlcnNlKFtmZXRjaE9w
dGlvbnMsIGNvbXBsZXRpb25IYW5kbGVyLCBvcmlnaW5zQW5kU2l6ZXNdKGF1dG8qIHRyYXZlcnNh
bEVudHJ5KSB7CisgICAgICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgdWludDY0
X3Q+IG9yaWdpbnNBbmRTaXplczsKKyAgICAgICAgTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS50
cmF2ZXJzZShbZmV0Y2hPcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBvcmlnaW5zQW5kU2l6ZXMgPSBXVEZNb3ZlKG9yaWdpbnNBbmRTaXplcyld
KGF1dG8qIHRyYXZlcnNhbEVudHJ5KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghdHJhdmVy
c2FsRW50cnkpIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBl
bnRyaWVzOwogCi0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5BbmRTaXplIDogKm9y
aWdpbnNBbmRTaXplcykgewotICAgICAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkg
ZW50cnkgeyBvcmlnaW5BbmRTaXplLmtleSwgV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIG9y
aWdpbkFuZFNpemUudmFsdWUgfTsKLQotICAgICAgICAgICAgICAgICAgICBlbnRyaWVzLmFwcGVu
ZChXVEZNb3ZlKGVudHJ5KSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luQW5kU2l6ZSA6IG9yaWdpbnNBbmRTaXplcykKKyAgICAgICAgICAgICAg
ICAgICAgZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luQW5kU2l6ZS5r
ZXksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCBvcmlnaW5BbmRTaXplLnZhbHVlIH0pOwog
Ci0gICAgICAgICAgICAgICAgZGVsZXRlIG9yaWdpbnNBbmRTaXplczsKLQotICAgICAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIsIGVudHJpZXMg
PSBXVEZNb3ZlKGVudHJpZXMpXSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBl
bnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKV0gewogICAgICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihlbnRyaWVzKTsKICAgICAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBv
cmlnaW5zQW5kU2l6ZXMtPmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRyYXZlcnNhbEVudHJ5
LT5lbnRyeS5yZXNwb25zZSgpLnVybCgpKSwgMCk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IG9yaWdpbnNBbmRTaXplcy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0cmF2ZXJzYWxFbnRy
eS0+ZW50cnkucmVzcG9uc2UoKS51cmwoKSksIDApOwogCiAgICAgICAgICAgICBpZiAoZmV0Y2hP
cHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcykpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSB0cmF2ZXJzYWxFbnRyeS0+
ZW50cnkuc291cmNlU3RvcmFnZVJlY29yZCgpLmhlYWRlci5zaXplKCkgKyB0cmF2ZXJzYWxFbnRy
eS0+cmVjb3JkSW5mby5ib2R5U2l6ZTsKQEAgLTM1MCw3ICszNDQsNyBAQCBzdGF0aWMgdm9pZCBm
ZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhRmV0YwogICAgICAgICBlbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBX
VEZNb3ZlKG9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCAwIH0pOwogI2VuZGlm
CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCBlbnRy
aWVzID0gV1RGTW92ZShlbnRyaWVzKV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZW50cmllcyA9
IFdURk1vdmUoZW50cmllcyldIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cmllcyk7
CiAgICAgfSk7CiB9CkBAIC00MTgsMzEgKzQxMiwyNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNsZWFyRGlza0Nh
Y2hlRW50cmllcyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RhdGljIHZvaWQgY2xl
YXJEaXNrQ2FjaGVFbnRyaWVzKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmln
aW5zLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgaWYgKE5ldHdvcmtDYWNoZTo6c2luZ2xl
dG9uKCkuaXNFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byogb3JpZ2luc1RvRGVsZXRlID0gbmV3
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4oKTsKLQorICAgICAgICBIYXNoU2V0PFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNUb0RlbGV0ZTsKICAgICAgICAgZm9yIChhdXRv
JiBvcmlnaW4gOiBvcmlnaW5zKQotICAgICAgICAgICAgb3JpZ2luc1RvRGVsZXRlLT5hZGQob3Jp
Z2luLnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICAgICAgb3JpZ2luc1RvRGVsZXRlLmFkZChv
cmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CiAKLSAgICAgICAgYXV0byogY2FjaGVLZXlzVG9EZWxl
dGUgPSBuZXcgVmVjdG9yPE5ldHdvcmtDYWNoZTo6S2V5PjsKLQotICAgICAgICBOZXR3b3JrQ2Fj
aGU6OnNpbmdsZXRvbigpLnRyYXZlcnNlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBvcmlnaW5zVG9EZWxldGUsIGNhY2hlS2V5c1RvRGVsZXRlXShhdXRv
KiB0cmF2ZXJzYWxFbnRyeSkgbXV0YWJsZSB7CisgICAgICAgIFZlY3RvcjxOZXR3b3JrQ2FjaGU6
OktleT4gY2FjaGVLZXlzVG9EZWxldGU7CisgICAgICAgIE5ldHdvcmtDYWNoZTo6c2luZ2xldG9u
KCkudHJhdmVyc2UoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG9yaWdpbnNUb0RlbGV0ZSA9IFdURk1vdmUob3JpZ2luc1RvRGVsZXRlKSwgY2FjaGVLZXlz
VG9EZWxldGUgPSBXVEZNb3ZlKGNhY2hlS2V5c1RvRGVsZXRlKV0oYXV0byogdHJhdmVyc2FsRW50
cnkpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHRyYXZlcnNhbEVudHJ5KSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG9yaWdpbnNUb0RlbGV0ZS0+Y29udGFpbnMoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSh0cmF2ZXJzYWxFbnRyeS0+ZW50cnkucmVzcG9uc2UoKS51cmwoKSkpKQotICAgICAgICAg
ICAgICAgICAgICBjYWNoZUtleXNUb0RlbGV0ZS0+YXBwZW5kKHRyYXZlcnNhbEVudHJ5LT5lbnRy
eS5rZXkoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9yaWdpbnNUb0RlbGV0ZS5jb250YWlucyhT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRyYXZlcnNhbEVudHJ5LT5lbnRyeS5yZXNwb25zZSgpLnVy
bCgpKSkpCisgICAgICAgICAgICAgICAgICAgIGNhY2hlS2V5c1RvRGVsZXRlLmFwcGVuZCh0cmF2
ZXJzYWxFbnRyeS0+ZW50cnkua2V5KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgZGVsZXRlIG9yaWdpbnNUb0RlbGV0ZTsKLQotICAgICAg
ICAgICAgZm9yIChhdXRvJiBrZXkgOiAqY2FjaGVLZXlzVG9EZWxldGUpCisgICAgICAgICAgICBm
b3IgKGF1dG8mIGtleSA6IGNhY2hlS2V5c1RvRGVsZXRlKQogICAgICAgICAgICAgICAgIE5ldHdv
cmtDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGtleSk7CiAKLSAgICAgICAgICAgIGRlbGV0ZSBj
YWNoZUtleXNUb0RlbGV0ZTsKLQogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcAppbmRleCAyN2I1YWIwNDQ4MDE2MWVmMmU5YWM2Y2E4YmVkYzI0NjdlYjIw
OGJhLi4wNmQ3N2JkY2ZmMDRkYzE3MGEyZWVhMTZkMjlmYmQzNjg3NjNiZmE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAK
QEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIENhY2hlOjpyZW1vdmUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHJlbW92ZShtYWtlQ2FjaGVLZXkocmVxdWVzdCkp
OwogfQogCi12b2lkIENhY2hlOjp0cmF2ZXJzZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRy
YXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQordm9pZCBDYWNoZTo6dHJhdmVyc2Uo
Tm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZl
cnNlSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNFbmFibGVkKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGFlZTVk
MmZhMzIxN2FhOTVlZjIwMDBjZDNmZjk2YTJmMTMzOGU4YjkuLmRiZDEzYTYzMDUyNmM5MjZhNzE4
NDcxYjBhZTM0NGVmNTBlNTVjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgog
ICAgICAgICBjb25zdCBFbnRyeSYgZW50cnk7CiAgICAgICAgIGNvbnN0IFN0b3JhZ2U6OlJlY29y
ZEluZm8mIHJlY29yZEluZm87CiAgICAgfTsKLSAgICB2b2lkIHRyYXZlcnNlKHN0ZDo6ZnVuY3Rp
b248dm9pZCAoY29uc3QgVHJhdmVyc2FsRW50cnkqKT4mJik7CisgICAgdm9pZCB0cmF2ZXJzZShO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYpOwogICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IEtleSYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDliNDczOWQ3
YzcyMGY4OWE3ZWUwZTE2NzlmMzcxYzNkNTAwMWNjOTAuLmJiZWE0YzlkOWIyYzBlZDBjYWRjYTkw
Y2M3ZDQ5NDA2OTI4MGNlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMTMsMTAgKzEx
MywxMCBAQCBwdWJsaWM6CiBzdHJ1Y3QgU3RvcmFnZTo6VHJhdmVyc2VPcGVyYXRpb24gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFRyYXZlcnNlT3BlcmF0aW9u
KGNvbnN0IFN0cmluZyYgdHlwZSwgVHJhdmVyc2VGbGFncyBmbGFncywgY29uc3QgVHJhdmVyc2VI
YW5kbGVyJiBoYW5kbGVyKQorICAgIFRyYXZlcnNlT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgdHlw
ZSwgVHJhdmVyc2VGbGFncyBmbGFncywgVHJhdmVyc2VIYW5kbGVyJiYgaGFuZGxlcikKICAgICAg
ICAgOiB0eXBlKHR5cGUpCiAgICAgICAgICwgZmxhZ3MoZmxhZ3MpCi0gICAgICAgICwgaGFuZGxl
cihoYW5kbGVyKQorICAgICAgICAsIGhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7IH0K
IAogICAgIGNvbnN0IFN0cmluZyB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4IDhmNWViYjVk
ODE2NjQyOTU3MDg2MzY0Y2YwYzIzMWFhOTVhMWQxNGIuLjAyZDAzODU5ZTMyYTEzNGU5NzA2NjYx
ZmE4NzUxMmZlOThmNjVjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKQEAgLTc4LDcgKzc4LDcgQEAg
cHVibGljOgogICAgICAgICBTaGFyZUNvdW50ID0gMSA8PCAxLAogICAgIH07CiAgICAgdHlwZWRl
ZiB1bnNpZ25lZCBUcmF2ZXJzZUZsYWdzOwotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBSZWNvcmQqLCBjb25zdCBSZWNvcmRJbmZvJik+IFRyYXZlcnNlSGFuZGxlcjsKKyAg
ICB0eXBlZGVmIE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoY29uc3QgUmVjb3JkKiwgY29uc3Qg
UmVjb3JkSW5mbyYpPiBUcmF2ZXJzZUhhbmRsZXI7CiAgICAgLy8gTnVsbCByZWNvcmQgc2lnbmFs
cyBlbmQuCiAgICAgdm9pZCB0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIFRyYXZlcnNlRmxh
Z3MsIFRyYXZlcnNlSGFuZGxlciYmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280335</attachid>
            <date>2016-06-02 09:45:55 -0700</date>
            <delta_ts>2016-06-02 10:03:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158292-20160602094714.patch</filename>
            <type>text/plain</type>
            <size>28777</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE1YTFlMDRlMjYyNGVk
YmYxYWY5MGYxZjY4MzhkYjQwZjU4OWVjNC4uMTBkODhmMjhhOTQyY2FhNTZkZDg1Mzg1NTllN2Q2
NTcxNjMwZjgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE2LTA2LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIHZhcmlvdXMg
bGFtYmRhIGNhcHR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTgyOTIKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAg
ICAgICAgTW9kZXJuaXplIHZhcmlvdXMgbGFtYmRhIGNhcHR1cmVzLCBlc3BlY2lhbGx5IHRoZSBv
bmVzIHVubmVjZXNzYXJpbHkKKyAgICAgICAgYWxsb2NhdGluZyBvYmplY3RzIG9uIHRoZSBoZWFw
IGFuZCBkZXN0cm95aW5nIHRoZW0gaW4gdGhlIGxhbWJkYS4KKworICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJv
Y2Vzc1BlbmRpbmdUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRp
c2Nvbm5lY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEZWxldGVDYWxsYmFja0RhdGFUYXNrOjpEZWxldGVDYWxsYmFja0RhdGFU
YXNrKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpN
YWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVh
ZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRp
ZEZhaWxSZWRpcmVjdENoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCk6IERlbGV0ZWQuCisKIDIwMTYtMDYtMDIg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBV
c2UgbW9yZSByZWZlcmVuY2VzIGluIFJlc291cmNlTG9hZGVyIHJlbGF0ZWQgY29kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDU4N2FhMjVjMDUxNDA3ZWQzOTg0MDk2ZmU3NGNiNTNkNjlhOGIxM2UuLjg3MTg2NmU4
YjM1NmZlYzg5NTU3OTVlYmRkNzI2MjJiZDU4NDk2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAxNi0wNi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybml6ZSB2YXJpb3VzIGxhbWJkYSBjYXB0dXJlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjkyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIE1vZGVybml6ZSB2YXJpb3VzIGxhbWJkYSBjYXB0
dXJlcywgZXNwZWNpYWxseSB0aGUgb25lcyB1bm5lY2Vzc2FyaWx5CisgICAgICAgIGFsbG9jYXRp
bmcgb2JqZWN0cyBvbiB0aGUgaGVhcCBhbmQgZGVzdHJveWluZyB0aGVtIGluIHRoZSBsYW1iZGEu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmZldGNoRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OmNsZWFy
RGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRj
aFdlYnNpdGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjp0
cmF2ZXJzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6VHJhdmVyc2VPcGVyYXRp
b246OlRyYXZlcnNlT3BlcmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisKIDIwMTYtMDYtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGlu
IFJlc291cmNlTG9hZGVyIHJlbGF0ZWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCAxMjI0ODA1YzhmYmY5YTExYjU3MmZm
YWYwNGYzZTQxZjk5ZjkyYzI2Li43ZGJhYTBmZGY2M2Y3OGY2MGU1NDgwNmMwYjliZmU2NDdlYjE3
OTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyLmNwcApAQCAtMTU1LDExICsxNTUsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiB7Ci0gICAgcmVmKCk7Ci0gICAg
bV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4oW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVu
ZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcj4oKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAg
ICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsK
LSAgICAgICAgZGVyZWYoKTsKICAgICB9KSk7CiAKICAgICBpZiAoIW1fc3VzcGVuZGVkKQpAQCAt
MTY4LDEyICsxNjYsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6ZGlkQ29ubmVjdCgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgcmVmKCk7Ci0gICAgU3RyaW5nIG1lc3NhZ2VDb3B5ID0gbWVzc2FnZS5pc29sYXRlZENvcHko
KTsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgbWVzc2FnZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPigqdGhpcyksIG1lc3NhZ2UgPSBtZXNz
YWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1l
c3NhZ2UpOwotICAgICAgICBkZXJlZigpOwogICAgIH0pKTsKIAogICAgIGlmICghbV9zdXNwZW5k
ZWQpCkBAIC0xODIsMTMgKzE3Nyw5IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lCiAKIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5
RGF0YShWZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQogewotICAgIHJlZigpOwotICAgIFZl
Y3Rvcjx1aW50OF90PiogY2FwdHVyZWREYXRhID0gbmV3IFZlY3Rvcjx1aW50OF90PihXVEZNb3Zl
KGJpbmFyeURhdGEpKTsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgY2FwdHVyZWREYXRhXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlz
KSwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKCpjYXB0dXJlZERhdGEpKTsKLSAgICAg
ICAgZGVsZXRlIGNhcHR1cmVkRGF0YTsKLSAgICAgICAgZGVyZWYoKTsKKyAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9
KSk7CiAKICAgICBpZiAoIW1fc3VzcGVuZGVkKQpAQCAtMTk3LDExICsxODgsOSBAQCB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEoVmVjdG9yPHVpbnQ4XwogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFt
b3VudCkKIHsKLSAgICByZWYoKTsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgYnVmZmVyZWRBbW91
bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4oKnRoaXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGRhdGVCdWZm
ZXJlZEFtb3VudChidWZmZXJlZEFtb3VudCk7Ci0gICAgICAgIGRlcmVmKCk7CiAgICAgfSkpOwog
CiAgICAgaWYgKCFtX3N1c3BlbmRlZCkKQEAgLTIxMCwxMSArMTk5LDkgQEAgdm9pZCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50
KHVuc2lnbmVkIGwKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgcmVmKCk7Ci0gICAgbV9wZW5k
aW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4oW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rh
c2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcj4oKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRz
aGFrZSgpOwotICAgICAgICBkZXJlZigpOwogICAgIH0pKTsKIAogICAgIGlmICghbV9zdXNwZW5k
ZWQpCkBAIC0yMjMsMTMgKzIxMCw5IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogCiB2b2lkIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1
bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2ln
bmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAgIHJlZigpOwotICAg
IFN0cmluZyByZWFzb25Db3B5ID0gcmVhc29uLmlzb2xhdGVkQ29weSgpOwotICAgIG1fcGVuZGlu
Z1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KAotICAgICAgICBbdGhpcywgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5k
c2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb25Db3B5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVy
ZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFz
b24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICAg
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDbG9zZSh1bmhh
bmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJl
YXNvbkNvcHkpOwotICAgICAgICAgICAgZGVyZWYoKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21w
bGV0aW9uLCBjb2RlLCByZWFzb24pOwogICAgICAgICB9KSk7CiAKICAgICBpZiAoIW1fc3VzcGVu
ZGVkKQpAQCAtMjM4LDExICsyMjEsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdQogCiB2b2lk
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VFcnJvcigpCiB7Ci0gICAgcmVmKCk7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXNdIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4oKnRoaXMpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKLSAgICAgICAgZGVyZWYo
KTsKICAgICB9KSk7CiAKICAgICBpZiAoIW1fc3VzcGVuZGVkKQpAQCAtMjY3LDExICsyNDgsOSBA
QCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJvY2Vzc1Bl
bmRpbmdUYXNrcygpCiAgICAgaWYgKCFtX3N5bmNNZXRob2REb25lKSB7CiAgICAgICAgIC8vIFdo
ZW4gYSBzeW5jaHJvbm91cyBvcGVyYXRpb24gaXMgaW4gcHJvZ3Jlc3MgKGkuZS4gdGhlIGV4ZWN1
dGlvbiBzdGFjayBjb250YWlucwogICAgICAgICAvLyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6d2FpdEZvck1ldGhvZENvbXBsZXRpb24oKSksIHdlIGNhbm5vdCBpbnZva2UgY2Fs
bGJhY2tzIGluIHRoaXMgcnVuIGxvb3AuCi0gICAgICAgIHJlZigpOwotICAgICAgICBtX2NvbnRl
eHQtPnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBtX2NvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4oKnRoaXMpXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250
ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgICAgICBwcm9jZXNz
UGVuZGluZ1Rhc2tzKCk7Ci0gICAgICAgICAgICBkZXJlZigpOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDU0Y2Y1N2RmYjVjMTYzZDhjOTFmNzJhMzNmNDdmZGVlMjhkYTc2YzAuLjFlZWRi
YWU5ZDY3YWFiOTA3YTY3NDhkNGRjYjZlYjYxZDgyNGM3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTQ0LDEwICs1NDQsOSBAQCB2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRpc2Nvbm5lY3QoKQogewogICAg
IGNsZWFyQ2xpZW50V3JhcHBlcigpOwogICAgIGlmIChtX3BlZXIpIHsKLSAgICAgICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyID0gbV9wZWVyXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoW3BlZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGVlcj4obV9wZWVyKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNEb2N1bWVudCgp
KTsKLSAgICAgICAgICAgIGRlbGV0ZSBwZWVyOwogICAgICAgICB9KTsKICAgICAgICAgbV9wZWVy
ID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuaAppbmRleCA3YWNmOTIxZjQ4ZTM1YmMwZjgwYTU3MTdiNWRlMjVkNWI4MzgxOGEzLi45
YmUzMWYxOTM5NWVhNTg4ZmMxNjM5ZmY2MDhhYmJmZDE3NjZlMWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTExNiw4ICsxMTYsNyBAQCBjbGFz
cyBEZWxldGVDYWxsYmFja0RhdGFUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFja0RhdGFUeXBl
PgogICAgIGV4cGxpY2l0IERlbGV0ZUNhbGxiYWNrRGF0YVRhc2soQ2FsbGJhY2tEYXRhVHlwZSog
ZGF0YSkKLSAgICAgICAgOiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbZGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7Ci0gICAgICAgICAgICBkZWxldGUgZGF0YTsKKyAgICAgICAgOiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBU
YXNrLCBbZGF0YSA9IHN0ZDo6dW5pcXVlX3B0cjxDYWxsYmFja0RhdGFUeXBlPihkYXRhKV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIH0pCiAgICAgewogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA0
MTAxMThiNTUxMTc2ODNlOTQxY2M3ZTRlOTA2ZmRhMDI0MTFmZWE3Li41MmUxZjJhZjJjMTE4NTE3
MTM3YmNhOTEzOTgxMTYwZjYzYmYwOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMTcsMTAgKzExNyw5IEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGVzdHJveSgpCiAgICAgY2xl
YXJDbGllbnRXcmFwcGVyKCk7CiAKICAgICAvLyAiZGVsZXRlIHRoaXMiIGFuZCBtX21haW5UaHJl
YWRMb2FkZXI6OmRlcmVmKCkgb24gdGhlIHdvcmtlciBvYmplY3QncyB0aHJlYWQuCi0gICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbc2VsZiA9
IHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
Pih0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzRG9jdW1lbnQoKSk7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0pOwogfQogCkBA
IC0xNTQsODEgKzE1Myw3MSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6OmNsZWFyQ2xpZW50V3JhcHBlcigpCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5
dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKIHsKLSAgICBS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyLCBieXRlc1NlbnQsIHRv
dGFsQnl0ZXNUb0JlU2VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICBSZWY8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHByb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSAqbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3Jh
cHBlciA9IFdURk1vdmUocHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciksIGJ5dGVzU2VudCwg
dG90YWxCeXRlc1RvQmVTZW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRTZW5kRGF0YShi
eXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXItPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsK
ICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSZWZQdHI8VGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXI7Ci0gICAgYXV0byogcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuY29weURh
dGEoKS5yZWxlYXNlKCk7Ci0gICAgaWYgKCFtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIGlkZW50aWZpZXIsIHJlc3Bv
bnNlRGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBSZWY8VGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIg
PSAqbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFdU
Rk1vdmUocHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciksIGlkZW50aWZpZXIsIHJlc3BvbnNl
RGF0YSA9IHJlc3BvbnNlLmNvcHlEYXRhKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIGF1dG8gcmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZTo6YWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURh
dGE+KHJlc3BvbnNlRGF0YSkpKTsKLSAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsICpyZXNwb25zZSk7Ci0gICAgfSwgbV90YXNrTW9kZSkp
Ci0gICAgICAgIGRlbGV0ZSByZXNwb25zZURhdGE7CisgICAgICAgIGF1dG8gcmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZTo6YWRvcHQoV1RGTW92ZShyZXNwb25zZURhdGEpKSk7CisgICAgICAgIHBy
b3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCAqcmVzcG9uc2UpOworICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsK
LSAgICBWZWN0b3I8Y2hhcj4qIHZlY3RvclB0ciA9IG5ldyBWZWN0b3I8Y2hhcj4oZGF0YUxlbmd0
aCk7Ci0gICAgbWVtY3B5KHZlY3RvclB0ci0+ZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKLSAg
ICBpZiAoIW1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShb
d29ya2VyQ2xpZW50V3JhcHBlciwgdmVjdG9yUHRyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgIFJlZjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9ICptX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAgVmVj
dG9yPGNoYXI+IHZlY3RvcihkYXRhTGVuZ3RoKTsKKyAgICBtZW1jcHkodmVjdG9yLmRhdGEoKSwg
ZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gV1RGTW92ZShw
cm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyKSwgdmVjdG9yID0gV1RGTW92ZSh2ZWN0b3IpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3JQdHItPmRhdGEoKSwg
dmVjdG9yUHRyLT5zaXplKCkpOwotICAgICAgICBkZWxldGUgdmVjdG9yUHRyOwotICAgIH0sIG1f
dGFza01vZGUpKQotICAgICAgICBkZWxldGUgdmVjdG9yUHRyOworICAgICAgICBwcm90ZWN0ZWRX
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iu
c2l6ZSgpKTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgbV9sb2FkaW5nRmluaXNoZWQg
PSB0cnVlOwotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2Vy
Q2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIs
IGlkZW50aWZpZXIsIGZpbmlzaFRpbWVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CisgICAgUmVmPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyID0gKm1fd29ya2VyQ2xpZW50V3JhcHBlcjsKKyAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXIgPSBXVEZNb3ZlKHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIpLCBpZGVu
dGlmaWVyLCBmaW5pc2hUaW1lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5pc2hMb2Fk
aW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGll
bnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogICAg
IH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAg
bV9sb2FkaW5nRmluaXNoZWQgPSB0cnVlOwotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsK
LSAgICBSZXNvdXJjZUVycm9yKiBjYXB0dXJlZEVycm9yID0gbmV3IFJlc291cmNlRXJyb3IoZXJy
b3IuY29weSgpKTsKLSAgICBpZiAoIW1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgY2FwdHVyZWRFcnJvcl0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBSZWY8VGhyZWFkYWJsZUxvYWRlckNs
aWVudFdyYXBwZXI+IHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSAqbV93b3JrZXJDbGll
bnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFdURk1vdmUocHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlciksIGVycm9yID0gZXJyb3IuY29weSgpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGll
bnRXcmFwcGVyLT5kaWRGYWlsKCpjYXB0dXJlZEVycm9yKTsKLSAgICAgICAgZGVsZXRlIGNhcHR1
cmVkRXJyb3I7Ci0gICAgfSwgbV90YXNrTW9kZSkpCi0gICAgICAgIGRlbGV0ZSBjYXB0dXJlZEVy
cm9yOworICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9y
KTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewogICAgIG1fbG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAgICBS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgUmVzb3VyY2VFcnJvciogY2FwdHVyZWRFcnJv
ciA9IG5ldyBSZXNvdXJjZUVycm9yKGVycm9yLmNvcHkoKSk7Ci0gICAgaWYgKCFtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBw
ZXIsIGNhcHR1cmVkRXJyb3JdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgUmVmPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBwcm90ZWN0ZWRXb3JrZXJDbGll
bnRXcmFwcGVyID0gKm1fd29ya2VyQ2xpZW50V3JhcHBlcjsKKyAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdy
YXBwZXIgPSBXVEZNb3ZlKHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIpLCBlcnJvciA9IGVy
cm9yLmNvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpKTsKLSAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xD
aGVjaygqY2FwdHVyZWRFcnJvcik7Ci0gICAgICAgIGRlbGV0ZSBjYXB0dXJlZEVycm9yOwotICAg
IH0sIG1fdGFza01vZGUpKQotICAgICAgICBkZWxldGUgY2FwdHVyZWRFcnJvcjsKKyAgICAgICAg
cHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhl
cnJvcik7CisgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKQogewogICAgIG1f
bG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3Jr
ZXJDbGllbnRXcmFwcGVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
IFJlZjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gcHJvdGVjdGVkV29ya2VyQ2xpZW50
V3JhcHBlciA9ICptX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFw
cGVyID0gV1RGTW92ZShwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgd29ya2VyQ2xp
ZW50V3JhcHBlci0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKKyAgICAgICAgcHJvdGVjdGVkV29y
a2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICB9LCBtX3Rhc2tN
b2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDdlMTkyYjEwNjYyYTBhNzA5ODBkZjIwNjFjZWYyZGU4YzNmN2I3Yzku
LmJkNjRhZjAwN2UxZDdjNWU5NTcwNmRkNGZhODJkZjYzMjRlN2EzMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTMwOCwzMiAr
MzA4LDI2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90CiAgICAgICAgIGhhbmRsZXIoKTsKIH0K
IAotc3RhdGljIHZvaWQgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiBjb21wbGV0aW9uSGFuZGxl
cikKK3N0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBpZiAoTmV0d29y
a0NhY2hlOjpzaW5nbGV0b24oKS5pc0VuYWJsZWQoKSkgewotICAgICAgICBhdXRvKiBvcmlnaW5z
QW5kU2l6ZXMgPSBuZXcgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCB1aW50NjRfdD4o
KTsKLQotICAgICAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLnRyYXZlcnNlKFtmZXRjaE9w
dGlvbnMsIGNvbXBsZXRpb25IYW5kbGVyLCBvcmlnaW5zQW5kU2l6ZXNdKGF1dG8qIHRyYXZlcnNh
bEVudHJ5KSB7CisgICAgICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgdWludDY0
X3Q+IG9yaWdpbnNBbmRTaXplczsKKyAgICAgICAgTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS50
cmF2ZXJzZShbZmV0Y2hPcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBvcmlnaW5zQW5kU2l6ZXMgPSBXVEZNb3ZlKG9yaWdpbnNBbmRTaXplcyld
KGF1dG8qIHRyYXZlcnNhbEVudHJ5KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghdHJhdmVy
c2FsRW50cnkpIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBl
bnRyaWVzOwogCi0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5BbmRTaXplIDogKm9y
aWdpbnNBbmRTaXplcykgewotICAgICAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkg
ZW50cnkgeyBvcmlnaW5BbmRTaXplLmtleSwgV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIG9y
aWdpbkFuZFNpemUudmFsdWUgfTsKLQotICAgICAgICAgICAgICAgICAgICBlbnRyaWVzLmFwcGVu
ZChXVEZNb3ZlKGVudHJ5KSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luQW5kU2l6ZSA6IG9yaWdpbnNBbmRTaXplcykKKyAgICAgICAgICAgICAg
ICAgICAgZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luQW5kU2l6ZS5r
ZXksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCBvcmlnaW5BbmRTaXplLnZhbHVlIH0pOwog
Ci0gICAgICAgICAgICAgICAgZGVsZXRlIG9yaWdpbnNBbmRTaXplczsKLQotICAgICAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIsIGVudHJpZXMg
PSBXVEZNb3ZlKGVudHJpZXMpXSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBl
bnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKV0gewogICAgICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihlbnRyaWVzKTsKICAgICAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBv
cmlnaW5zQW5kU2l6ZXMtPmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRyYXZlcnNhbEVudHJ5
LT5lbnRyeS5yZXNwb25zZSgpLnVybCgpKSwgMCk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IG9yaWdpbnNBbmRTaXplcy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0cmF2ZXJzYWxFbnRy
eS0+ZW50cnkucmVzcG9uc2UoKS51cmwoKSksIDApOwogCiAgICAgICAgICAgICBpZiAoZmV0Y2hP
cHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcykpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSB0cmF2ZXJzYWxFbnRyeS0+
ZW50cnkuc291cmNlU3RvcmFnZVJlY29yZCgpLmhlYWRlci5zaXplKCkgKyB0cmF2ZXJzYWxFbnRy
eS0+cmVjb3JkSW5mby5ib2R5U2l6ZTsKQEAgLTM1MCw3ICszNDQsNyBAQCBzdGF0aWMgdm9pZCBm
ZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhRmV0YwogICAgICAgICBlbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBX
VEZNb3ZlKG9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCAwIH0pOwogI2VuZGlm
CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCBlbnRy
aWVzID0gV1RGTW92ZShlbnRyaWVzKV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZW50cmllcyA9
IFdURk1vdmUoZW50cmllcyldIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cmllcyk7
CiAgICAgfSk7CiB9CkBAIC00MTgsMzEgKzQxMiwyNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNsZWFyRGlza0Nh
Y2hlRW50cmllcyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RhdGljIHZvaWQgY2xl
YXJEaXNrQ2FjaGVFbnRyaWVzKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmln
aW5zLCBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgaWYgKE5ldHdvcmtDYWNoZTo6c2luZ2xl
dG9uKCkuaXNFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byogb3JpZ2luc1RvRGVsZXRlID0gbmV3
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4oKTsKLQorICAgICAgICBIYXNoU2V0PFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNUb0RlbGV0ZTsKICAgICAgICAgZm9yIChhdXRv
JiBvcmlnaW4gOiBvcmlnaW5zKQotICAgICAgICAgICAgb3JpZ2luc1RvRGVsZXRlLT5hZGQob3Jp
Z2luLnNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICAgICAgb3JpZ2luc1RvRGVsZXRlLmFkZChv
cmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CiAKLSAgICAgICAgYXV0byogY2FjaGVLZXlzVG9EZWxl
dGUgPSBuZXcgVmVjdG9yPE5ldHdvcmtDYWNoZTo6S2V5PjsKLQotICAgICAgICBOZXR3b3JrQ2Fj
aGU6OnNpbmdsZXRvbigpLnRyYXZlcnNlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBvcmlnaW5zVG9EZWxldGUsIGNhY2hlS2V5c1RvRGVsZXRlXShhdXRv
KiB0cmF2ZXJzYWxFbnRyeSkgbXV0YWJsZSB7CisgICAgICAgIFZlY3RvcjxOZXR3b3JrQ2FjaGU6
OktleT4gY2FjaGVLZXlzVG9EZWxldGU7CisgICAgICAgIE5ldHdvcmtDYWNoZTo6c2luZ2xldG9u
KCkudHJhdmVyc2UoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG9yaWdpbnNUb0RlbGV0ZSA9IFdURk1vdmUob3JpZ2luc1RvRGVsZXRlKSwgY2FjaGVLZXlz
VG9EZWxldGUgPSBXVEZNb3ZlKGNhY2hlS2V5c1RvRGVsZXRlKV0oYXV0byogdHJhdmVyc2FsRW50
cnkpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHRyYXZlcnNhbEVudHJ5KSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG9yaWdpbnNUb0RlbGV0ZS0+Y29udGFpbnMoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSh0cmF2ZXJzYWxFbnRyeS0+ZW50cnkucmVzcG9uc2UoKS51cmwoKSkpKQotICAgICAgICAg
ICAgICAgICAgICBjYWNoZUtleXNUb0RlbGV0ZS0+YXBwZW5kKHRyYXZlcnNhbEVudHJ5LT5lbnRy
eS5rZXkoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9yaWdpbnNUb0RlbGV0ZS5jb250YWlucyhT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRyYXZlcnNhbEVudHJ5LT5lbnRyeS5yZXNwb25zZSgpLnVy
bCgpKSkpCisgICAgICAgICAgICAgICAgICAgIGNhY2hlS2V5c1RvRGVsZXRlLmFwcGVuZCh0cmF2
ZXJzYWxFbnRyeS0+ZW50cnkua2V5KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgZGVsZXRlIG9yaWdpbnNUb0RlbGV0ZTsKLQotICAgICAg
ICAgICAgZm9yIChhdXRvJiBrZXkgOiAqY2FjaGVLZXlzVG9EZWxldGUpCisgICAgICAgICAgICBm
b3IgKGF1dG8mIGtleSA6IGNhY2hlS2V5c1RvRGVsZXRlKQogICAgICAgICAgICAgICAgIE5ldHdv
cmtDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGtleSk7CiAKLSAgICAgICAgICAgIGRlbGV0ZSBj
YWNoZUtleXNUb0RlbGV0ZTsKLQogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAppbmRleCBjMjgwZjk2NWQyMmVjNDYyMmVmYmNkYWU5M2Q5YWNjNzUyMjVhZDA4Li42NTA0ZTc1
YTlkZmQ2MTQzNjBlMjVlMTQwZTM5ZGVmZjE0ZjQ0OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4
IDI3YjVhYjA0NDgwMTYxZWYyZTlhYzZjYThiZWRjMjQ2N2ViMjA4YmEuLjA2ZDc3YmRjZmYwNGRj
MTcwYTJlZWExNmQyOWZiZDM2ODc2M2JmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNTIwLDcgKzUyMCw3IEBA
IHZvaWQgQ2FjaGU6OnJlbW92ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiAgICAgcmVtb3ZlKG1ha2VDYWNoZUtleShyZXF1ZXN0KSk7CiB9CiAKLXZvaWQgQ2FjaGU6
OnRyYXZlcnNlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVHJhdmVyc2FsRW50cnkqKT4mJiB0
cmF2ZXJzZUhhbmRsZXIpCit2b2lkIENhY2hlOjp0cmF2ZXJzZShOb25jb3B5YWJsZUZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQogewogICAg
IEFTU0VSVChpc0VuYWJsZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggYWVlNWQyZmEzMjE3YWE5NWVmMjAwMGNk
M2ZmOTZhMmYxMzM4ZThiOS4uOGUyM2RjMTZiYjkxNDVlMjEzNGM4YjM1ZTliYWEyNjliYWFjNGRi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdl
LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMTMsNyArMTE0LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBFbnRyeSYgZW50cnk7CiAg
ICAgICAgIGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mIHJlY29yZEluZm87CiAgICAgfTsKLSAg
ICB2b2lkIHRyYXZlcnNlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVHJhdmVyc2FsRW50cnkq
KT4mJik7CisgICAgdm9pZCB0cmF2ZXJzZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFRyYXZlcnNhbEVudHJ5Kik+JiYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleSYpOwogICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwCmluZGV4IDliNDczOWQ3YzcyMGY4OWE3ZWUwZTE2NzlmMzcxYzNkNTAwMWNj
OTAuLmJiZWE0YzlkOWIyYzBlZDBjYWRjYTkwY2M3ZDQ5NDA2OTI4MGNlMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwCkBAIC0xMTMsMTAgKzExMywxMCBAQCBwdWJsaWM6CiBzdHJ1Y3QgU3RvcmFn
ZTo6VHJhdmVyc2VPcGVyYXRpb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIFRyYXZlcnNlT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgdHlwZSwgVHJhdmVyc2VG
bGFncyBmbGFncywgY29uc3QgVHJhdmVyc2VIYW5kbGVyJiBoYW5kbGVyKQorICAgIFRyYXZlcnNl
T3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgdHlwZSwgVHJhdmVyc2VGbGFncyBmbGFncywgVHJhdmVy
c2VIYW5kbGVyJiYgaGFuZGxlcikKICAgICAgICAgOiB0eXBlKHR5cGUpCiAgICAgICAgICwgZmxh
Z3MoZmxhZ3MpCi0gICAgICAgICwgaGFuZGxlcihoYW5kbGVyKQorICAgICAgICAsIGhhbmRsZXIo
V1RGTW92ZShoYW5kbGVyKSkKICAgICB7IH0KIAogICAgIGNvbnN0IFN0cmluZyB0eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5oCmluZGV4IDhmNWViYjVkODE2NjQyOTU3MDg2MzY0Y2YwYzIzMWFhOTVhMWQx
NGIuLmUyNWQzOGM2OGNhNTA1OTI0OTMwYTk3NDI3ODllNTAxZmU4ZDJjMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvQmxvb21GaWx0ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIFNoYXJlQ291bnQgPSAxIDw8
IDEsCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIFRyYXZlcnNlRmxhZ3M7Ci0gICAgdHlw
ZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlY29yZCosIGNvbnN0IFJlY29yZEluZm8m
KT4gVHJhdmVyc2VIYW5kbGVyOworICAgIHR5cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
IChjb25zdCBSZWNvcmQqLCBjb25zdCBSZWNvcmRJbmZvJik+IFRyYXZlcnNlSGFuZGxlcjsKICAg
ICAvLyBOdWxsIHJlY29yZCBzaWduYWxzIGVuZC4KICAgICB2b2lkIHRyYXZlcnNlKGNvbnN0IFN0
cmluZyYgdHlwZSwgVHJhdmVyc2VGbGFncywgVHJhdmVyc2VIYW5kbGVyJiYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280336</attachid>
            <date>2016-06-02 10:04:03 -0700</date>
            <delta_ts>2016-06-02 10:58:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158292-20160602100522.patch</filename>
            <type>text/plain</type>
            <size>30595</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE1YTFlMDRlMjYyNGVk
YmYxYWY5MGYxZjY4MzhkYjQwZjU4OWVjNC4uMTBkODhmMjhhOTQyY2FhNTZkZDg1Mzg1NTllN2Q2
NTcxNjMwZjgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE2LTA2LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIHZhcmlvdXMg
bGFtYmRhIGNhcHR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTgyOTIKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAg
ICAgICAgTW9kZXJuaXplIHZhcmlvdXMgbGFtYmRhIGNhcHR1cmVzLCBlc3BlY2lhbGx5IHRoZSBv
bmVzIHVubmVjZXNzYXJpbHkKKyAgICAgICAgYWxsb2NhdGluZyBvYmplY3RzIG9uIHRoZSBoZWFw
IGFuZCBkZXN0cm95aW5nIHRoZW0gaW4gdGhlIGxhbWJkYS4KKworICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJv
Y2Vzc1BlbmRpbmdUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRp
c2Nvbm5lY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEZWxldGVDYWxsYmFja0RhdGFUYXNrOjpEZWxldGVDYWxsYmFja0RhdGFU
YXNrKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpN
YWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVh
ZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRp
ZEZhaWxSZWRpcmVjdENoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCk6IERlbGV0ZWQuCisKIDIwMTYtMDYtMDIg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBV
c2UgbW9yZSByZWZlcmVuY2VzIGluIFJlc291cmNlTG9hZGVyIHJlbGF0ZWQgY29kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDU4N2FhMjVjMDUxNDA3ZWQzOTg0MDk2ZmU3NGNiNTNkNjlhOGIxM2UuLjg3MTg2NmU4
YjM1NmZlYzg5NTU3OTVlYmRkNzI2MjJiZDU4NDk2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAxNi0wNi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybml6ZSB2YXJpb3VzIGxhbWJkYSBjYXB0dXJlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjkyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIE1vZGVybml6ZSB2YXJpb3VzIGxhbWJkYSBjYXB0
dXJlcywgZXNwZWNpYWxseSB0aGUgb25lcyB1bm5lY2Vzc2FyaWx5CisgICAgICAgIGFsbG9jYXRp
bmcgb2JqZWN0cyBvbiB0aGUgaGVhcCBhbmQgZGVzdHJveWluZyB0aGVtIGluIHRoZSBsYW1iZGEu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmZldGNoRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OmNsZWFy
RGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRj
aFdlYnNpdGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjp0
cmF2ZXJzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6VHJhdmVyc2VPcGVyYXRp
b246OlRyYXZlcnNlT3BlcmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisKIDIwMTYtMDYtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGlu
IFJlc291cmNlTG9hZGVyIHJlbGF0ZWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCAxMjI0ODA1YzhmYmY5YTExYjU3MmZm
YWYwNGYzZTQxZjk5ZjkyYzI2Li43ZGJhYTBmZGY2M2Y3OGY2MGU1NDgwNmMwYjliZmU2NDdlYjE3
OTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyLmNwcApAQCAtMTU1LDExICsxNTUsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiB7Ci0gICAgcmVmKCk7Ci0gICAg
bV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4oW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVu
ZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcj4oKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAg
ICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsK
LSAgICAgICAgZGVyZWYoKTsKICAgICB9KSk7CiAKICAgICBpZiAoIW1fc3VzcGVuZGVkKQpAQCAt
MTY4LDEyICsxNjYsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6ZGlkQ29ubmVjdCgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgcmVmKCk7Ci0gICAgU3RyaW5nIG1lc3NhZ2VDb3B5ID0gbWVzc2FnZS5pc29sYXRlZENvcHko
KTsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgbWVzc2FnZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWY8VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPigqdGhpcyksIG1lc3NhZ2UgPSBtZXNz
YWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1l
c3NhZ2UpOwotICAgICAgICBkZXJlZigpOwogICAgIH0pKTsKIAogICAgIGlmICghbV9zdXNwZW5k
ZWQpCkBAIC0xODIsMTMgKzE3Nyw5IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lCiAKIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5
RGF0YShWZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQogewotICAgIHJlZigpOwotICAgIFZl
Y3Rvcjx1aW50OF90PiogY2FwdHVyZWREYXRhID0gbmV3IFZlY3Rvcjx1aW50OF90PihXVEZNb3Zl
KGJpbmFyeURhdGEpKTsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgY2FwdHVyZWREYXRhXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlz
KSwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKCpjYXB0dXJlZERhdGEpKTsKLSAgICAg
ICAgZGVsZXRlIGNhcHR1cmVkRGF0YTsKLSAgICAgICAgZGVyZWYoKTsKKyAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9
KSk7CiAKICAgICBpZiAoIW1fc3VzcGVuZGVkKQpAQCAtMTk3LDExICsxODgsOSBAQCB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEoVmVjdG9yPHVpbnQ4XwogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFt
b3VudCkKIHsKLSAgICByZWYoKTsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgYnVmZmVyZWRBbW91
bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4oKnRoaXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGRhdGVCdWZm
ZXJlZEFtb3VudChidWZmZXJlZEFtb3VudCk7Ci0gICAgICAgIGRlcmVmKCk7CiAgICAgfSkpOwog
CiAgICAgaWYgKCFtX3N1c3BlbmRlZCkKQEAgLTIxMCwxMSArMTk5LDkgQEAgdm9pZCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50
KHVuc2lnbmVkIGwKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgcmVmKCk7Ci0gICAgbV9wZW5k
aW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4oW3RoaXNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rh
c2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcj4oKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRz
aGFrZSgpOwotICAgICAgICBkZXJlZigpOwogICAgIH0pKTsKIAogICAgIGlmICghbV9zdXNwZW5k
ZWQpCkBAIC0yMjMsMTMgKzIxMCw5IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogCiB2b2lkIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1
bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2ln
bmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAgIHJlZigpOwotICAg
IFN0cmluZyByZWFzb25Db3B5ID0gcmVhc29uLmlzb2xhdGVkQ29weSgpOwotICAgIG1fcGVuZGlu
Z1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KAotICAgICAgICBbdGhpcywgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5k
c2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb25Db3B5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVy
ZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFz
b24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICAg
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDbG9zZSh1bmhh
bmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJl
YXNvbkNvcHkpOwotICAgICAgICAgICAgZGVyZWYoKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21w
bGV0aW9uLCBjb2RlLCByZWFzb24pOwogICAgICAgICB9KSk7CiAKICAgICBpZiAoIW1fc3VzcGVu
ZGVkKQpAQCAtMjM4LDExICsyMjEsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdQogCiB2b2lk
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VFcnJvcigpCiB7Ci0gICAgcmVmKCk7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXNdIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4oKnRoaXMpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKLSAgICAgICAgZGVyZWYo
KTsKICAgICB9KSk7CiAKICAgICBpZiAoIW1fc3VzcGVuZGVkKQpAQCAtMjY3LDExICsyNDgsOSBA
QCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJvY2Vzc1Bl
bmRpbmdUYXNrcygpCiAgICAgaWYgKCFtX3N5bmNNZXRob2REb25lKSB7CiAgICAgICAgIC8vIFdo
ZW4gYSBzeW5jaHJvbm91cyBvcGVyYXRpb24gaXMgaW4gcHJvZ3Jlc3MgKGkuZS4gdGhlIGV4ZWN1
dGlvbiBzdGFjayBjb250YWlucwogICAgICAgICAvLyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6d2FpdEZvck1ldGhvZENvbXBsZXRpb24oKSksIHdlIGNhbm5vdCBpbnZva2UgY2Fs
bGJhY2tzIGluIHRoaXMgcnVuIGxvb3AuCi0gICAgICAgIHJlZigpOwotICAgICAgICBtX2NvbnRl
eHQtPnBvc3RUYXNrKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBtX2NvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4oKnRoaXMpXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250
ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgICAgICBwcm9jZXNz
UGVuZGluZ1Rhc2tzKCk7Ci0gICAgICAgICAgICBkZXJlZigpOwogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDU0Y2Y1N2RmYjVjMTYzZDhjOTFmNzJhMzNmNDdmZGVlMjhkYTc2YzAuLjFlZWRi
YWU5ZDY3YWFiOTA3YTY3NDhkNGRjYjZlYjYxZDgyNGM3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTQ0LDEwICs1NDQsOSBAQCB2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRpc2Nvbm5lY3QoKQogewogICAg
IGNsZWFyQ2xpZW50V3JhcHBlcigpOwogICAgIGlmIChtX3BlZXIpIHsKLSAgICAgICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyID0gbV9wZWVyXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoW3BlZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8UGVlcj4obV9wZWVyKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNEb2N1bWVudCgp
KTsKLSAgICAgICAgICAgIGRlbGV0ZSBwZWVyOwogICAgICAgICB9KTsKICAgICAgICAgbV9wZWVy
ID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuaAppbmRleCA3YWNmOTIxZjQ4ZTM1YmMwZjgwYTU3MTdiNWRlMjVkNWI4MzgxOGEzLi45
YmUzMWYxOTM5NWVhNTg4ZmMxNjM5ZmY2MDhhYmJmZDE3NjZlMWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTExNiw4ICsxMTYsNyBAQCBjbGFz
cyBEZWxldGVDYWxsYmFja0RhdGFUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFja0RhdGFUeXBl
PgogICAgIGV4cGxpY2l0IERlbGV0ZUNhbGxiYWNrRGF0YVRhc2soQ2FsbGJhY2tEYXRhVHlwZSog
ZGF0YSkKLSAgICAgICAgOiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbZGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7Ci0gICAgICAgICAgICBkZWxldGUgZGF0YTsKKyAgICAgICAgOiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBU
YXNrLCBbZGF0YSA9IHN0ZDo6dW5pcXVlX3B0cjxDYWxsYmFja0RhdGFUeXBlPihkYXRhKV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIH0pCiAgICAgewogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA0
MTAxMThiNTUxMTc2ODNlOTQxY2M3ZTRlOTA2ZmRhMDI0MTFmZWE3Li41MmUxZjJhZjJjMTE4NTE3
MTM3YmNhOTEzOTgxMTYwZjYzYmYwOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMTcsMTAgKzExNyw5IEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGVzdHJveSgpCiAgICAgY2xl
YXJDbGllbnRXcmFwcGVyKCk7CiAKICAgICAvLyAiZGVsZXRlIHRoaXMiIGFuZCBtX21haW5UaHJl
YWRMb2FkZXI6OmRlcmVmKCkgb24gdGhlIHdvcmtlciBvYmplY3QncyB0aHJlYWQuCi0gICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbc2VsZiA9
IHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
Pih0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzRG9jdW1lbnQoKSk7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0pOwogfQogCkBA
IC0xNTQsODEgKzE1Myw3MSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6OmNsZWFyQ2xpZW50V3JhcHBlcigpCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5
dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKIHsKLSAgICBS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyLCBieXRlc1NlbnQsIHRv
dGFsQnl0ZXNUb0JlU2VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICBSZWY8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHByb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSAqbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3Jh
cHBlciA9IFdURk1vdmUocHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciksIGJ5dGVzU2VudCwg
dG90YWxCeXRlc1RvQmVTZW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRTZW5kRGF0YShi
eXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXItPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsK
ICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSZWZQdHI8VGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXI7Ci0gICAgYXV0byogcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuY29weURh
dGEoKS5yZWxlYXNlKCk7Ci0gICAgaWYgKCFtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIGlkZW50aWZpZXIsIHJlc3Bv
bnNlRGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBSZWY8VGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIg
PSAqbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFdU
Rk1vdmUocHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciksIGlkZW50aWZpZXIsIHJlc3BvbnNl
RGF0YSA9IHJlc3BvbnNlLmNvcHlEYXRhKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIGF1dG8gcmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZTo6YWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURh
dGE+KHJlc3BvbnNlRGF0YSkpKTsKLSAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsICpyZXNwb25zZSk7Ci0gICAgfSwgbV90YXNrTW9kZSkp
Ci0gICAgICAgIGRlbGV0ZSByZXNwb25zZURhdGE7CisgICAgICAgIGF1dG8gcmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZTo6YWRvcHQoV1RGTW92ZShyZXNwb25zZURhdGEpKSk7CisgICAgICAgIHBy
b3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCAqcmVzcG9uc2UpOworICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsK
LSAgICBWZWN0b3I8Y2hhcj4qIHZlY3RvclB0ciA9IG5ldyBWZWN0b3I8Y2hhcj4oZGF0YUxlbmd0
aCk7Ci0gICAgbWVtY3B5KHZlY3RvclB0ci0+ZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKLSAg
ICBpZiAoIW1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShb
d29ya2VyQ2xpZW50V3JhcHBlciwgdmVjdG9yUHRyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgeworICAgIFJlZjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlciA9ICptX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAgVmVj
dG9yPGNoYXI+IHZlY3RvcihkYXRhTGVuZ3RoKTsKKyAgICBtZW1jcHkodmVjdG9yLmRhdGEoKSwg
ZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gV1RGTW92ZShw
cm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyKSwgdmVjdG9yID0gV1RGTW92ZSh2ZWN0b3IpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3JQdHItPmRhdGEoKSwg
dmVjdG9yUHRyLT5zaXplKCkpOwotICAgICAgICBkZWxldGUgdmVjdG9yUHRyOwotICAgIH0sIG1f
dGFza01vZGUpKQotICAgICAgICBkZWxldGUgdmVjdG9yUHRyOworICAgICAgICBwcm90ZWN0ZWRX
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iu
c2l6ZSgpKTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgbV9sb2FkaW5nRmluaXNoZWQg
PSB0cnVlOwotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2Vy
Q2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIs
IGlkZW50aWZpZXIsIGZpbmlzaFRpbWVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CisgICAgUmVmPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyID0gKm1fd29ya2VyQ2xpZW50V3JhcHBlcjsKKyAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXIgPSBXVEZNb3ZlKHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIpLCBpZGVu
dGlmaWVyLCBmaW5pc2hUaW1lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5pc2hMb2Fk
aW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGll
bnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogICAg
IH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAg
bV9sb2FkaW5nRmluaXNoZWQgPSB0cnVlOwotICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsK
LSAgICBSZXNvdXJjZUVycm9yKiBjYXB0dXJlZEVycm9yID0gbmV3IFJlc291cmNlRXJyb3IoZXJy
b3IuY29weSgpKTsKLSAgICBpZiAoIW1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgY2FwdHVyZWRFcnJvcl0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBSZWY8VGhyZWFkYWJsZUxvYWRlckNs
aWVudFdyYXBwZXI+IHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSAqbV93b3JrZXJDbGll
bnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFdURk1vdmUocHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlciksIGVycm9yID0gZXJyb3IuY29weSgpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGll
bnRXcmFwcGVyLT5kaWRGYWlsKCpjYXB0dXJlZEVycm9yKTsKLSAgICAgICAgZGVsZXRlIGNhcHR1
cmVkRXJyb3I7Ci0gICAgfSwgbV90YXNrTW9kZSkpCi0gICAgICAgIGRlbGV0ZSBjYXB0dXJlZEVy
cm9yOworICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9y
KTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewogICAgIG1fbG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAgICBS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgUmVzb3VyY2VFcnJvciogY2FwdHVyZWRFcnJv
ciA9IG5ldyBSZXNvdXJjZUVycm9yKGVycm9yLmNvcHkoKSk7Ci0gICAgaWYgKCFtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBw
ZXIsIGNhcHR1cmVkRXJyb3JdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgUmVmPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBwcm90ZWN0ZWRXb3JrZXJDbGll
bnRXcmFwcGVyID0gKm1fd29ya2VyQ2xpZW50V3JhcHBlcjsKKyAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdy
YXBwZXIgPSBXVEZNb3ZlKHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIpLCBlcnJvciA9IGVy
cm9yLmNvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpKTsKLSAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xD
aGVjaygqY2FwdHVyZWRFcnJvcik7Ci0gICAgICAgIGRlbGV0ZSBjYXB0dXJlZEVycm9yOwotICAg
IH0sIG1fdGFza01vZGUpKQotICAgICAgICBkZWxldGUgY2FwdHVyZWRFcnJvcjsKKyAgICAgICAg
cHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhl
cnJvcik7CisgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKQogewogICAgIG1f
bG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3Jr
ZXJDbGllbnRXcmFwcGVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
IFJlZjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gcHJvdGVjdGVkV29ya2VyQ2xpZW50
V3JhcHBlciA9ICptX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFw
cGVyID0gV1RGTW92ZShwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgd29ya2VyQ2xp
ZW50V3JhcHBlci0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKKyAgICAgICAgcHJvdGVjdGVkV29y
a2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICB9LCBtX3Rhc2tN
b2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDdlMTkyYjEwNjYyYTBhNzA5ODBkZjIwNjFjZWYyZGU4YzNmN2I3Yzku
LjNmZmQ1NDFjMTRiNjc3N2VjNjNlZDRhZWNlNzllNzRhZWYwMDBmYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTMwOCwzMiAr
MzA4LDI2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90CiAgICAgICAgIGhhbmRsZXIoKTsKIH0K
IAotc3RhdGljIHZvaWQgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiBjb21wbGV0aW9uSGFuZGxl
cikKK3N0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBOb25jb3B5
YWJsZUZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICBpZiAoTmV0d29y
a0NhY2hlOjpzaW5nbGV0b24oKS5pc0VuYWJsZWQoKSkgewotICAgICAgICBhdXRvKiBvcmlnaW5z
QW5kU2l6ZXMgPSBuZXcgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCB1aW50NjRfdD4o
KTsKLQotICAgICAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLnRyYXZlcnNlKFtmZXRjaE9w
dGlvbnMsIGNvbXBsZXRpb25IYW5kbGVyLCBvcmlnaW5zQW5kU2l6ZXNdKGF1dG8qIHRyYXZlcnNh
bEVudHJ5KSB7CisgICAgICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgdWludDY0
X3Q+IG9yaWdpbnNBbmRTaXplczsKKyAgICAgICAgTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS50
cmF2ZXJzZShbZmV0Y2hPcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBvcmlnaW5zQW5kU2l6ZXMgPSBXVEZNb3ZlKG9yaWdpbnNBbmRTaXplcyld
KGF1dG8qIHRyYXZlcnNhbEVudHJ5KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghdHJhdmVy
c2FsRW50cnkpIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBl
bnRyaWVzOwogCi0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5BbmRTaXplIDogKm9y
aWdpbnNBbmRTaXplcykgewotICAgICAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkg
ZW50cnkgeyBvcmlnaW5BbmRTaXplLmtleSwgV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIG9y
aWdpbkFuZFNpemUudmFsdWUgfTsKLQotICAgICAgICAgICAgICAgICAgICBlbnRyaWVzLmFwcGVu
ZChXVEZNb3ZlKGVudHJ5KSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luQW5kU2l6ZSA6IG9yaWdpbnNBbmRTaXplcykKKyAgICAgICAgICAgICAg
ICAgICAgZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luQW5kU2l6ZS5r
ZXksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCBvcmlnaW5BbmRTaXplLnZhbHVlIH0pOwog
Ci0gICAgICAgICAgICAgICAgZGVsZXRlIG9yaWdpbnNBbmRTaXplczsKLQotICAgICAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIsIGVudHJpZXMg
PSBXVEZNb3ZlKGVudHJpZXMpXSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBl
bnRyaWVzID0gV1RGTW92ZShlbnRyaWVzKV0gewogICAgICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihlbnRyaWVzKTsKICAgICAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBv
cmlnaW5zQW5kU2l6ZXMtPmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRyYXZlcnNhbEVudHJ5
LT5lbnRyeS5yZXNwb25zZSgpLnVybCgpKSwgMCk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IG9yaWdpbnNBbmRTaXplcy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0cmF2ZXJzYWxFbnRy
eS0+ZW50cnkucmVzcG9uc2UoKS51cmwoKSksIDApOwogCiAgICAgICAgICAgICBpZiAoZmV0Y2hP
cHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcykpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSB0cmF2ZXJzYWxFbnRyeS0+
ZW50cnkuc291cmNlU3RvcmFnZVJlY29yZCgpLmhlYWRlci5zaXplKCkgKyB0cmF2ZXJzYWxFbnRy
eS0+cmVjb3JkSW5mby5ib2R5U2l6ZTsKQEAgLTM1MCw3ICszNDQsNyBAQCBzdGF0aWMgdm9pZCBm
ZXRjaERpc2tDYWNoZUVudHJpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhRmV0YwogICAgICAgICBlbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBX
VEZNb3ZlKG9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCAwIH0pOwogI2VuZGlm
CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCBlbnRy
aWVzID0gV1RGTW92ZShlbnRyaWVzKV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZW50cmllcyA9
IFdURk1vdmUoZW50cmllcyldIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cmllcyk7
CiAgICAgfSk7CiB9CkBAIC0zNTgsNyArMzUyLDcgQEAgc3RhdGljIHZvaWQgZmV0Y2hEaXNrQ2Fj
aGVFbnRyaWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGMK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7Ci0gICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdn
cmVnYXRvcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVnYXRvcihOb25jb3B5YWJsZUZ1bmN0
aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgICAg
IDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAg
ICAgewogICAgICAgICB9CkBAIC0zNzIsMTEgKzM2NiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRl
RGF0YQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKFdlYnNpdGVEYXRhKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAgTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IG1fY29tcGxldGlvbkhhbmRsZXI7CiAg
ICAgICAgIFdlYnNpdGVEYXRhIG1fd2Vic2l0ZURhdGE7CiAgICAgfTsKIAotICAgIFJlZlB0cjxD
YWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxs
YmFja0FnZ3JlZ2F0b3IoW3RoaXMsIGNhbGxiYWNrSURdIChXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0
YSkgeworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYoKm5ldyBDYWxsYmFj
a0FnZ3JlZ2F0b3IoW3RoaXMsIGNhbGxiYWNrSURdIChXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkg
ewogICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpEaWRGZXRjaFdlYnNpdGVEYXRhKGNhbGxiYWNrSUQsIHdlYnNpdGVE
YXRhKSwgMCk7CiAgICAgfSkpOwogCkBAIC0zODYsNyArMzgwLDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGEKICAgICB9CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKLSAgICAgICAgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVz
KHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGVudHJp
ZXMpIHsKKyAgICAgICAgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKHNlc3Npb25JRCwgZmV0Y2hPcHRp
b25zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXShh
dXRvIGVudHJpZXMpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMpOwogICAgICAgICB9KTsK
ICAgICB9CkBAIC00MTgsMzEgKzQxMiwyNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdAogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50
cmllcyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RhdGljIHZvaWQgY2xlYXJEaXNr
Q2FjaGVFbnRyaWVzKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYg
RU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgaWYgKE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCku
aXNFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byogb3JpZ2luc1RvRGVsZXRlID0gbmV3IEhhc2hT
ZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4oKTsKLQorICAgICAgICBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNUb0RlbGV0ZTsKICAgICAgICAgZm9yIChhdXRvJiBvcmln
aW4gOiBvcmlnaW5zKQotICAgICAgICAgICAgb3JpZ2luc1RvRGVsZXRlLT5hZGQob3JpZ2luLnNl
Y3VyaXR5T3JpZ2luKCkpOworICAgICAgICAgICAgb3JpZ2luc1RvRGVsZXRlLmFkZChvcmlnaW4u
c2VjdXJpdHlPcmlnaW4oKSk7CiAKLSAgICAgICAgYXV0byogY2FjaGVLZXlzVG9EZWxldGUgPSBu
ZXcgVmVjdG9yPE5ldHdvcmtDYWNoZTo6S2V5PjsKLQotICAgICAgICBOZXR3b3JrQ2FjaGU6OnNp
bmdsZXRvbigpLnRyYXZlcnNlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBvcmlnaW5zVG9EZWxldGUsIGNhY2hlS2V5c1RvRGVsZXRlXShhdXRvKiB0cmF2
ZXJzYWxFbnRyeSkgbXV0YWJsZSB7CisgICAgICAgIFZlY3RvcjxOZXR3b3JrQ2FjaGU6OktleT4g
Y2FjaGVLZXlzVG9EZWxldGU7CisgICAgICAgIE5ldHdvcmtDYWNoZTo6c2luZ2xldG9uKCkudHJh
dmVyc2UoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9y
aWdpbnNUb0RlbGV0ZSA9IFdURk1vdmUob3JpZ2luc1RvRGVsZXRlKSwgY2FjaGVLZXlzVG9EZWxl
dGUgPSBXVEZNb3ZlKGNhY2hlS2V5c1RvRGVsZXRlKV0oYXV0byogdHJhdmVyc2FsRW50cnkpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKHRyYXZlcnNhbEVudHJ5KSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKG9yaWdpbnNUb0RlbGV0ZS0+Y29udGFpbnMoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0
cmF2ZXJzYWxFbnRyeS0+ZW50cnkucmVzcG9uc2UoKS51cmwoKSkpKQotICAgICAgICAgICAgICAg
ICAgICBjYWNoZUtleXNUb0RlbGV0ZS0+YXBwZW5kKHRyYXZlcnNhbEVudHJ5LT5lbnRyeS5rZXko
KSk7CisgICAgICAgICAgICAgICAgaWYgKG9yaWdpbnNUb0RlbGV0ZS5jb250YWlucyhTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHRyYXZlcnNhbEVudHJ5LT5lbnRyeS5yZXNwb25zZSgpLnVybCgpKSkp
CisgICAgICAgICAgICAgICAgICAgIGNhY2hlS2V5c1RvRGVsZXRlLmFwcGVuZCh0cmF2ZXJzYWxF
bnRyeS0+ZW50cnkua2V5KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgZGVsZXRlIG9yaWdpbnNUb0RlbGV0ZTsKLQotICAgICAgICAgICAg
Zm9yIChhdXRvJiBrZXkgOiAqY2FjaGVLZXlzVG9EZWxldGUpCisgICAgICAgICAgICBmb3IgKGF1
dG8mIGtleSA6IGNhY2hlS2V5c1RvRGVsZXRlKQogICAgICAgICAgICAgICAgIE5ldHdvcmtDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlKGtleSk7CiAKLSAgICAgICAgICAgIGRlbGV0ZSBjYWNoZUtl
eXNUb0RlbGV0ZTsKLQogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCBjMjgwZjk2NWQyMmVjNDYyMmVmYmNkYWU5M2Q5YWNjNzUyMjVhZDA4Li42NTA0ZTc1YTlkZmQ2
MTQzNjBlMjVlMTQwZTM5ZGVmZjE0ZjQ0OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDI3YjVh
YjA0NDgwMTYxZWYyZTlhYzZjYThiZWRjMjQ2N2ViMjA4YmEuLjA2ZDc3YmRjZmYwNGRjMTcwYTJl
ZWExNmQyOWZiZDM2ODc2M2JmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNTIwLDcgKzUyMCw3IEBAIHZvaWQg
Q2FjaGU6OnJlbW92ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAg
ICAgcmVtb3ZlKG1ha2VDYWNoZUtleShyZXF1ZXN0KSk7CiB9CiAKLXZvaWQgQ2FjaGU6OnRyYXZl
cnNlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVHJhdmVyc2FsRW50cnkqKT4mJiB0cmF2ZXJz
ZUhhbmRsZXIpCit2b2lkIENhY2hlOjp0cmF2ZXJzZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQogewogICAgIEFTU0VS
VChpc0VuYWJsZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggYWVlNWQyZmEzMjE3YWE5NWVmMjAwMGNkM2ZmOTZh
MmYxMzM4ZThiOS4uOGUyM2RjMTZiYjkxNDVlMjEzNGM4YjM1ZTliYWEyNjliYWFjNGRiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCiAj
aW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTMs
NyArMTE0LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBFbnRyeSYgZW50cnk7CiAgICAgICAg
IGNvbnN0IFN0b3JhZ2U6OlJlY29yZEluZm8mIHJlY29yZEluZm87CiAgICAgfTsKLSAgICB2b2lk
IHRyYXZlcnNlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVHJhdmVyc2FsRW50cnkqKT4mJik7
CisgICAgdm9pZCB0cmF2ZXJzZShOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZl
cnNhbEVudHJ5Kik+JiYpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleSYpOwogICAgIHZvaWQg
cmVtb3ZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IDliNDczOWQ3YzcyMGY4OWE3ZWUwZTE2NzlmMzcxYzNkNTAwMWNjOTAuLmJi
ZWE0YzlkOWIyYzBlZDBjYWRjYTkwY2M3ZDQ5NDA2OTI4MGNlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwCkBAIC0xMTMsMTAgKzExMywxMCBAQCBwdWJsaWM6CiBzdHJ1Y3QgU3RvcmFnZTo6VHJh
dmVyc2VPcGVyYXRpb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFRyYXZlcnNlT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgdHlwZSwgVHJhdmVyc2VGbGFncyBm
bGFncywgY29uc3QgVHJhdmVyc2VIYW5kbGVyJiBoYW5kbGVyKQorICAgIFRyYXZlcnNlT3BlcmF0
aW9uKGNvbnN0IFN0cmluZyYgdHlwZSwgVHJhdmVyc2VGbGFncyBmbGFncywgVHJhdmVyc2VIYW5k
bGVyJiYgaGFuZGxlcikKICAgICAgICAgOiB0eXBlKHR5cGUpCiAgICAgICAgICwgZmxhZ3MoZmxh
Z3MpCi0gICAgICAgICwgaGFuZGxlcihoYW5kbGVyKQorICAgICAgICAsIGhhbmRsZXIoV1RGTW92
ZShoYW5kbGVyKSkKICAgICB7IH0KIAogICAgIGNvbnN0IFN0cmluZyB0eXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5oCmluZGV4IDhmNWViYjVkODE2NjQyOTU3MDg2MzY0Y2YwYzIzMWFhOTVhMWQxNGIuLmUy
NWQzOGM2OGNhNTA1OTI0OTMwYTk3NDI3ODllNTAxZmU4ZDJjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvQmxvb21GaWx0ZXIuaD4KICNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZUZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5j
bHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIFNoYXJlQ291bnQgPSAxIDw8IDEsCiAg
ICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIFRyYXZlcnNlRmxhZ3M7Ci0gICAgdHlwZWRlZiBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlY29yZCosIGNvbnN0IFJlY29yZEluZm8mKT4gVHJh
dmVyc2VIYW5kbGVyOworICAgIHR5cGVkZWYgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkIChjb25z
dCBSZWNvcmQqLCBjb25zdCBSZWNvcmRJbmZvJik+IFRyYXZlcnNlSGFuZGxlcjsKICAgICAvLyBO
dWxsIHJlY29yZCBzaWduYWxzIGVuZC4KICAgICB2b2lkIHRyYXZlcnNlKGNvbnN0IFN0cmluZyYg
dHlwZSwgVHJhdmVyc2VGbGFncywgVHJhdmVyc2VIYW5kbGVyJiYpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>