<?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>109329</bug_id>
          
          <creation_ts>2013-02-08 15:47:07 -0800</creation_ts>
          <short_desc>Add WKContext API to retrieve basic network process statistics</short_desc>
          <delta_ts>2013-07-26 08:07:36 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>828796</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-08 15:47:07 -0800</bug_when>
    <thetext>Add WKContext API to retrieve basic network process statistics

This will allow a UI client to monitor the workings of the NetworkProcess for debug/diagnostic purposes.

The type of data gathered can be expanded in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828797</commentid>
    <comment_count>1</comment_count>
      <attachid>187374</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-08 15:48:44 -0800</bug_when>
    <thetext>Created attachment 187374
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828814</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 16:01:17 -0800</bug_when>
    <thetext>Attachment 187374 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/NetworkProcess/HostRecord.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/HostRecord.h&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkProcess.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkProcess.h&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkProcess.messages.in&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.h&apos;, u&apos;Source/WebKit2/Shared/Authentication/AuthenticationManager.h&apos;, u&apos;Source/WebKit2/Shared/Downloads/DownloadManager.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKContext.h&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.h&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.messages.in&apos;]&quot; exit_code: 1
Source/WebKit2/NetworkProcess/NetworkProcess.cpp:233:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 15 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>828817</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-08 16:04:08 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 187374 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, 
&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:233:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Total errors found: 1 in 15 files
&gt; 

Weird...  totally seems like 4 spaces locally.  I deleted them and re-inserted them to make sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828829</commentid>
    <comment_count>4</comment_count>
      <attachid>187374</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-08 16:26:05 -0800</bug_when>
    <thetext>Comment on attachment 187374
Patch v1

Attachment 187374 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16465021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828831</commentid>
    <comment_count>5</comment_count>
      <attachid>187385</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-08 16:30:08 -0800</bug_when>
    <thetext>Created attachment 187385
Patch v2 - Use LoaderStrategy

Maybe fixed the bizarre style error, definitely fixed the qt compile error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828832</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 16:31:38 -0800</bug_when>
    <thetext>Attachment 187385 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/NetworkProcess/HostRecord.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/HostRecord.h&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkProcess.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkProcess.h&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkProcess.messages.in&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.h&apos;, u&apos;Source/WebKit2/Shared/Authentication/AuthenticationManager.h&apos;, u&apos;Source/WebKit2/Shared/Downloads/DownloadManager.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKContext.h&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.h&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.messages.in&apos;]&quot; exit_code: 1
Source/WebKit2/NetworkProcess/NetworkProcess.cpp:233:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 15 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>828837</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-08 16:48:51 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Attachment 187385 [details] did not pass style-queue:
&gt; Source/WebKit2/NetworkProcess/NetworkProcess.cpp:233:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Total errors found: 1 in 15 files

Aha, got it.  Fixed locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828977</commentid>
    <comment_count>8</comment_count>
      <attachid>187385</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-02-08 23:35:34 -0800</bug_when>
    <thetext>Comment on attachment 187385
Patch v2 - Use LoaderStrategy

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

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp:180
&gt; +    uint64_t count =  m_nonHTTPProtocolHost-&gt;pendingRequestCount() ? 1 : 0;

Extra space after the =.  This code is also not very self explanatory.  Why are you doing the ? 1 : 0 part?

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp:193
&gt; +    uint64_t count =  m_nonHTTPProtocolHost-&gt;pendingRequestCount();

Extra space after the =.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp:204
&gt; +    uint64_t count =  m_nonHTTPProtocolHost-&gt;activeLoadCount() ? 1 : 0;

Extra space after the =.

&gt; Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp:217
&gt; +    uint64_t count =  m_nonHTTPProtocolHost-&gt;activeLoadCount();

Extra space after the =.

&gt; Source/WebKit2/Shared/Authentication/AuthenticationManager.h:66
&gt; +    uint64_t outstandingAuthenticationChallengeCount() const { return m_challenges.size(); }

What makes them so outstanding? ;)

&gt; Source/WebKit2/UIProcess/API/C/WKContext.h:191
&gt; +WK_EXPORT void WKContextGetNetworkingStatistics(WKContextRef context, void* functionContext, WKContextGetStatisticsFunction function);

Why did you make the decision to use a new function, rather than just add the new stats to WKContextGetStatistics&apos;s dictionary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829072</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-09 10:41:17 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 187385 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187385&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp:180
&gt; &gt; +    uint64_t count =  m_nonHTTPProtocolHost-&gt;pendingRequestCount() ? 1 : 0;
&gt; 
&gt; Extra space after the =.  This code is also not very self explanatory.  Why are you doing the ? 1 : 0 part?
&gt;

If the host has any pending requests, then the total count of hosts with pending requests gets incremented.

I&apos;ll make it more clear.

I&apos;ll also fix all the bizarre extra spaces.

 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKContext.h:191
&gt; &gt; +WK_EXPORT void WKContextGetNetworkingStatistics(WKContextRef context, void* functionContext, WKContextGetStatisticsFunction function);
&gt; 
&gt; Why did you make the decision to use a new function, rather than just add the new stats to WKContextGetStatistics&apos;s dictionary?

We can chat on IRC or you can look at the other patch related for this to see why it made sense to have networking stats be in a separate call.

An alternative solution would be to change WKContextGetStatistics to take a mask of which statistics are wanted, but it&apos;s already shipped API...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829340</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-02-10 13:12:08 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)

&gt; &gt; &gt; Source/WebKit2/UIProcess/API/C/WKContext.h:191
&gt; &gt; &gt; +WK_EXPORT void WKContextGetNetworkingStatistics(WKContextRef context, void* functionContext, WKContextGetStatisticsFunction function);
&gt; &gt; 
&gt; &gt; Why did you make the decision to use a new function, rather than just add the new stats to WKContextGetStatistics&apos;s dictionary?
&gt; 
&gt; We can chat on IRC or you can look at the other patch related for this to see why it made sense to have networking stats be in a separate call.
&gt; 
&gt; An alternative solution would be to change WKContextGetStatistics to take a mask of which statistics are wanted, but it&apos;s already shipped API...

Well, you could always just add WKContextGetStatisticsWithOptions(), but this seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831139</commentid>
    <comment_count>11</comment_count>
      <attachid>187909</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-02-12 11:58:24 -0800</bug_when>
    <thetext>Created attachment 187909
Patch v3 - Based on Sam&apos;s feedback

A bit more complicated, this adds WKContextGetStatisticsWithOptions that allows for gathering stats from multiple processes at once.

It is both a better API going forward, and will help separately resolve the &quot;get statistics from multiple WebProcesses&quot; bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831141</commentid>
    <comment_count>12</comment_count>
      <attachid>187909</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-02-12 12:02:23 -0800</bug_when>
    <thetext>Comment on attachment 187909
Patch v3 - Based on Sam&apos;s feedback

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

&gt; Source/WebKit2/UIProcess/API/C/WKContext.h:150
&gt; +enum {
&gt; +    kWKStatisticsTypeWebContent = 0x00000001,
&gt; +    kWKStatisticsTypeNetworking = 0x00000002
&gt; +};
&gt; +typedef uint32_t WKStatisticsType;

Please use 0 &lt;&lt; 1 and such.

&gt; Source/WebKit2/UIProcess/API/C/WKContext.h:197
&gt; +WK_EXPORT void WKContextGetStatisticsWithOptions(WKContextRef context, WKStatisticsType statisticsMask, void* functionContext, WKContextGetStatisticsFunction function);

This doesn&apos;t take options.  Please rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845288</commentid>
    <comment_count>13</comment_count>
      <attachid>187385</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-01 10:38:37 -0800</bug_when>
    <thetext>Comment on attachment 187385
Patch v2 - Use LoaderStrategy

Cleared Sam Weinig&apos;s review+ from obsolete attachment 187385 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911974</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-07-26 08:07:36 -0700</bug_when>
    <thetext>It was already landed in http://trac.webkit.org/changeset/142651</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187374</attachid>
            <date>2013-02-08 15:48:44 -0800</date>
            <delta_ts>2013-02-08 16:30:08 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16377</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkZjBlZDQ1Li5hOTRmMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUg
QEAKKzIwMTMtMDItMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBXS0NvbnRleHQgQVBJIHRvIHJldHJpZXZlIGJhc2ljIG5ldHdvcmsgcHJvY2VzcyBz
dGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDkzMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpIb3N0
UmVjb3JkOjpwZW5kaW5nUmVxdWVzdENvdW50KToKKyAgICAgICAgKFdlYktpdDo6SG9zdFJlY29y
ZDo6YWN0aXZlTG9hZENvdW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3Jk
Lmg6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3Mp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdHNQZW5kaW5nQ291bnQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2Fkc1Bl
bmRpbmdDb3VudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6Omhvc3RzQWN0aXZlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpsb2Fkc0FjdGl2ZUNvdW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisKKyAgICAgICAgKiBTaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6b3V0c3RhbmRpbmdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNv
dW50KToKKworICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6YWN0aXZlRG93bmxvYWRDb3VudCk6CisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6Om5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHQ6OmdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OmRpZEdldFdlYkNvcmVTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6ZGlkR2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6
CisgICAgICAgIChXS0NvbnRleHRHZXROZXR3b3JraW5nU3RhdGlzdGljcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorCiAyMDEzLTAyLTA3ICBHYXZpbiBQZXRlcnMg
IDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNDIxNDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Ib3N0
UmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuY3Bw
CmluZGV4IDA3NzVkMjQuLmVhMDAxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0hvc3RSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL0hvc3RSZWNvcmQuY3BwCkBAIC0xMTUsNiArMTE1LDIxIEBAIGJvb2wgSG9zdFJlY29yZDo6
aGFzUmVxdWVzdHMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordWludDY0X3QgSG9z
dFJlY29yZDo6cGVuZGluZ1JlcXVlc3RDb3VudCgpIGNvbnN0Cit7CisgICAgdWludDY0X3QgY291
bnQgPSAwOworCisgICAgZm9yICh1bnNpZ25lZCBwID0gMDsgcCA8PSBSZXNvdXJjZUxvYWRQcmlv
cml0eUhpZ2hlc3Q7IHArKykKKyAgICAgICAgY291bnQgKz0gbV9sb2FkZXJzUGVuZGluZ1twXS5z
aXplKCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3VpbnQ2NF90IEhvc3RSZWNvcmQ6OmFj
dGl2ZUxvYWRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbG9hZGVyc0luUHJvZ3Jlc3Mu
c2l6ZSgpOworfQorCiB2b2lkIEhvc3RSZWNvcmQ6OnNlcnZlUGVuZGluZ1JlcXVlc3RzRm9yUXVl
dWUoTG9hZGVyUXVldWUmIHF1ZXVlLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsK
ICAgICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvSG9zdFJlY29yZC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvSG9zdFJlY29yZC5oCmluZGV4IDk0N2YwNjkuLmQ3NDk3ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmgKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25zdDsKICAgICB2b2lkIHNlcnZlUGVuZGluZ1Jl
cXVlc3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5KTsKIAorICAgIHVpbnQ2NF90IHBl
bmRpbmdSZXF1ZXN0Q291bnQoKSBjb25zdDsKKyAgICB1aW50NjRfdCBhY3RpdmVMb2FkQ291bnQo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBIb3N0UmVjb3JkKGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50IG1heFJlcXVlc3RzSW5GbGlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMGQ1MmI4Zi4uZWQxOTA1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAt
MzcsNiArMzcsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgor
I2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFn
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luaXRpYWxpemVMb2dnaW5nLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTIxNiw2ICsyMTgsMjIgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjbSkKICAgICB9CiB9CiAKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyh1aW50NjRfdCBjYWxs
YmFja0lEKQoreworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXImIHNjaGVkdWxlciA9
IE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7
CisKKyAgICBTdGF0aXN0aWNzRGF0YSBkYXRhOworCisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVy
cy5zZXQoIkhvc3RzUGVuZGluZ0NvdW50Iiwgc2NoZWR1bGVyLmhvc3RzUGVuZGluZ0NvdW50KCkp
OworICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJIb3N0c0FjdGl2ZUNvdW50Iiwgc2No
ZWR1bGVyLmhvc3RzQWN0aXZlQ291bnQoKSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5z
ZXQoIkxvYWRzUGVuZGluZ0NvdW50Iiwgc2NoZWR1bGVyLmxvYWRzUGVuZGluZ0NvdW50KCkpOwor
ICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJMb2Fkc0FjdGl2ZUNvdW50Iiwgc2NoZWR1
bGVyLmxvYWRzQWN0aXZlQ291bnQoKSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQo
IkRvd25sb2Fkc0FjdGl2ZUNvdW50Iiwgc2hhcmVkKCkuZG93bmxvYWRNYW5hZ2VyKCkuYWN0aXZl
RG93bmxvYWRDb3VudCgpKTsKKyAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldCgiT3V0c3Rh
bmRpbmdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXNDb3VudCIsIHNoYXJlZCgpLmF1dGhlbnRpY2F0
aW9uTWFuYWdlcigpLm91dHN0YW5kaW5nQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb3VudCgpKTsK
KyAgICAgCisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
Q29udGV4dDo6RGlkR2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKGRhdGEsIGNhbGxiYWNrSUQp
LCAwKTsKK30KKwogI2lmICFQTEFURk9STShNQUMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0
aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzJikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IDFiZTU1ZjcuLjM3ZjljNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTA3LDYgKzEwNyw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBQbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9zdCk7CiAKKyAgICB2b2lkIGdl
dE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKwogICAgIC8v
IFBsYXRmb3JtIEhlbHBlcnMKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1v
ZGVsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5MzU0OTNiYy4uZDVmZjk1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTQwLDYgKzQwLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICBBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZUZvckhvc3QoV2ViS2l0OjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZSwgV1RG
OjpTdHJpbmcgaG9zdCkKKyAgICAKKyAgICBHZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3ModWlu
dDY0X3QgY2FsbGJhY2tJRCkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDhjMzMzMmIuLjY1NzljNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC00LDcgKzQsOCBAQAogI2luY2x1ZGUgIkhvc3RS
ZWNvcmQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc2Nvbm5lY3Rpb25NZXNz
YWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1
ZGUgIlN5bmNOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTE3NCw2ICsxNzUsNTQgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVJlbW92ZUxvYWRlcihTY2hl
ZHVsYWJsZUxvYWRlciogbG9hZGUKICAgICB9CiB9CiAKK3VpbnQ2NF90IE5ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6Omhvc3RzUGVuZGluZ0NvdW50KCkgY29uc3QKK3sKKyAgICB1aW50NjRf
dCBjb3VudCA9ICBtX25vbkhUVFBQcm90b2NvbEhvc3QtPnBlbmRpbmdSZXF1ZXN0Q291bnQoKSA/
IDEgOiAwOworCisgICAgSG9zdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9ob3N0cy5lbmQo
KTsKKyAgICBmb3IgKEhvc3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX2hvc3RzLmJlZ2luKCk7
IGkgIT0gZW5kOyArK2kpIHsKKyAgICAgICAgaWYgKGktPnZhbHVlLT5wZW5kaW5nUmVxdWVzdENv
dW50KCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsK
K30KKwordWludDY0X3QgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9hZHNQZW5kaW5n
Q291bnQoKSBjb25zdAoreworICAgIHVpbnQ2NF90IGNvdW50ID0gIG1fbm9uSFRUUFByb3RvY29s
SG9zdC0+cGVuZGluZ1JlcXVlc3RDb3VudCgpOworCisgICAgSG9zdE1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbV9ob3N0cy5lbmQoKTsKKyAgICBmb3IgKEhvc3RNYXA6OmNvbnN0X2l0ZXJhdG9y
IGkgPSBtX2hvc3RzLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpCisgICAgICAgIGNvdW50ICs9IGkt
PnZhbHVlLT5wZW5kaW5nUmVxdWVzdENvdW50KCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisK
K3VpbnQ2NF90IE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Omhvc3RzQWN0aXZlQ291bnQo
KSBjb25zdAoreworICAgIHVpbnQ2NF90IGNvdW50ID0gIG1fbm9uSFRUUFByb3RvY29sSG9zdC0+
YWN0aXZlTG9hZENvdW50KCkgPyAxIDogMDsKKworICAgIEhvc3RNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1faG9zdHMuZW5kKCk7CisgICAgZm9yIChIb3N0TWFwOjpjb25zdF9pdGVyYXRvciBp
ID0gbV9ob3N0cy5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAgIGlmIChpLT52YWx1
ZS0+YWN0aXZlTG9hZENvdW50KCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0KKworICAg
IHJldHVybiBjb3VudDsKK30KKwordWludDY0X3QgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxl
cjo6bG9hZHNBY3RpdmVDb3VudCgpIGNvbnN0Cit7CisgICAgdWludDY0X3QgY291bnQgPSAgbV9u
b25IVFRQUHJvdG9jb2xIb3N0LT5hY3RpdmVMb2FkQ291bnQoKTsKKworICAgIEhvc3RNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IG1faG9zdHMuZW5kKCk7CisgICAgZm9yIChIb3N0TWFwOjpjb25z
dF9pdGVyYXRvciBpID0gbV9ob3N0cy5iZWdpbigpOyBpICE9IGVuZDsgKytpKQorICAgICAgICBj
b3VudCArPSBpLT52YWx1ZS0+YWN0aXZlTG9hZENvdW50KCk7CisKKyAgICByZXR1cm4gY291bnQ7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCBkNzg3M2YwLi43OGNlMjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC01Nyw3ICs1NywxMyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHJlY2VpdmVkUmVkaXJlY3QoU2NoZWR1bGFibGVMb2FkZXIqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiByZWRpcmVjdFVSTCk7CiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJD
b3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5
VmVyeUxvdyk7Ci0gICAgCisKKyAgICAvLyBGb3IgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBy
ZXBvcnRpbmcuCisgICAgdWludDY0X3QgaG9zdHNQZW5kaW5nQ291bnQoKSBjb25zdDsKKyAgICB1
aW50NjRfdCBsb2Fkc1BlbmRpbmdDb3VudCgpIGNvbnN0OworICAgIHVpbnQ2NF90IGhvc3RzQWN0
aXZlQ291bnQoKSBjb25zdDsKKyAgICB1aW50NjRfdCBsb2Fkc0FjdGl2ZUNvdW50KCkgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgZW51bSBDcmVhdGVIb3N0UG9saWN5IHsKICAgICAgICAgQ3JlYXRl
SWZOb3RGb3VuZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAppbmRleCBlODE3ZjlkLi40YzZmODFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGNv
bnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmLCBjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYp
OwogICAgIHZvaWQgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRf
dCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9pZCBjYW5jZWxDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxl
bmdlSUQpOworICAgIAorICAgIHVpbnQ2NF90IG91dHN0YW5kaW5nQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbGxlbmdlcy5zaXplKCk7IH0KIAogcHJp
dmF0ZToKICAgICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDBiOTAxZTIuLmJh
NDNmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRvd25sb2Fk
RmluaXNoZWQoRG93bmxvYWQqKTsKICAgICBib29sIGlzRG93bmxvYWRpbmcoKSBjb25zdCB7IHJl
dHVybiAhbV9kb3dubG9hZHMuaXNFbXB0eSgpOyB9CisgICAgdWludDY0X3QgYWN0aXZlRG93bmxv
YWRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRzLnNpemUoKTsgfQogCiAgICAgdm9p
ZCBkaWRDcmVhdGVEb3dubG9hZCgpOwogICAgIHZvaWQgZGlkRGVzdHJveURvd25sb2FkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDVjODM4
ZmUuLmZkY2IwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuY3BwCkBAIC0zMzQsNiArMzM0LDExIEBAIHZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGljcyhX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0R2V0CiAgICAg
dG9JbXBsKGNvbnRleHRSZWYpLT5nZXRXZWJDb3JlU3RhdGlzdGljcyhEaWN0aW9uYXJ5Q2FsbGJh
Y2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOyAgICAKIH0KIAordm9pZCBXS0NvbnRleHRH
ZXROZXR3b3JraW5nU3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm9pZCogY29u
dGV4dCwgV0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1bmN0aW9uIGNhbGxiYWNrKQoreworICAgIHRv
SW1wbChjb250ZXh0UmVmKS0+Z2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKERpY3Rpb25hcnlD
YWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV0tDb250ZXh0
R2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cyhXS0NvbnRleHRSZWYgY29udGV4dFJlZikK
IHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPmdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVj
dHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAppbmRleCA3
MmE1NDVmLi5iYmU3NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5oCkBAIC0xODgsNiArMTg4LDcgQEAgV0tfRVhQT1JUIFdLUmVzb3VyY2VDYWNoZU1hbmFn
ZXJSZWYgV0tDb250ZXh0R2V0UmVzb3VyY2VDYWNoZU1hbmFnZXIoV0tDb250ZXh0UmUKICAgICAK
IHR5cGVkZWYgdm9pZCAoKldLQ29udGV4dEdldFN0YXRpc3RpY3NGdW5jdGlvbikoV0tEaWN0aW9u
YXJ5UmVmIHN0YXRpc3RpY3MsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzKFdLQ29udGV4dFJlZiBj
b250ZXh0LCB2b2lkKiBmdW5jdGlvbkNvbnRleHQsIFdLQ29udGV4dEdldFN0YXRpc3RpY3NGdW5j
dGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXROZXR3b3JraW5nU3Rh
dGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0Nv
bnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwogICAgIAogV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0R2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cyhXS0NvbnRleHRSZWYg
Y29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFnZUNv
bGxlY3RvclRpbWVyRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBlbmFibGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGI3ZmYxMTUuLmViMGQ3
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTMwMyw5ICsz
MDMsMTQgQEAgQ29yZUlQQzo6Q29ubmVjdGlvbiogV2ViQ29udGV4dDo6bmV0d29ya2luZ1Byb2Nl
c3NDb25uZWN0aW9uKCkKIHsKICAgICBzd2l0Y2ggKG1fcHJvY2Vzc01vZGVsKSB7CiAgICAgY2Fz
ZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOgorI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCisgICAgICAgIGlmIChtX3VzZXNOZXR3b3JrUHJvY2VzcykKKyAgICAgICAgICAg
IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisjZW5kaWYKICAgICAgICAg
cmV0dXJuIG1fcHJvY2Vzc2VzWzBdLT5jb25uZWN0aW9uKCk7CiAgICAgY2FzZSBQcm9jZXNzTW9k
ZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczoKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQorICAgICAgICBBU1NFUlQobV91c2VzTmV0d29ya1Byb2Nlc3MpOwogICAgICAgICByZXR1cm4g
bV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwogI2Vsc2UKICAgICAgICAgYnJlYWs7CkBA
IC0xMDg5LDYgKzEwOTQsMjcgQEAgdm9pZCBXZWJDb250ZXh0OjpnZXRXZWJDb3JlU3RhdGlzdGlj
cyhQYXNzUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gY2FsbGJhY2spCiAgICAgfQogfQogCit2
b2lkIFdlYkNvbnRleHQ6OmdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyhQYXNzUmVmUHRyPERp
Y3Rpb25hcnlDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgYm9vbCBuZXR3b3JrUHJvY2Vzc1Vu
YXZhaWxhYmxlOworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgbmV0d29ya1Byb2Nl
c3NVbmF2YWlsYWJsZSA9ICFtX3VzZXNOZXR3b3JrUHJvY2VzcyB8fCAhbV9uZXR3b3JrUHJvY2Vz
czsKKyNlbHNlCisgICAgbmV0d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSA9IHRydWU7CisjZW5kaWYK
KworICAgIGlmIChuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxlKSB7CisgICAgICAgIExPR19FUlJP
UigiQXR0ZW1wdCB0byBnZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBidXQgdGhlIE5ldHdv
cmtQcm9jZXNzIGlzIHVuYXZhaWxhYmxlIik7CisgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRl
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX2RpY3Rpb25hcnlDYWxsYmFja3Muc2V0KGNh
bGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKGNhbGxi
YWNrSUQpLCAwKTsKKworfQorCiBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhYmxlRGljdGlvbmFyeT4g
Y3JlYXRlRGljdGlvbmFyeUZyb21IYXNoTWFwKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCB1aW50NjRf
dD4mIG1hcCkKIHsKICAgICBSZWZQdHI8TXV0YWJsZURpY3Rpb25hcnk+IHJlc3VsdCA9IE11dGFi
bGVEaWN0aW9uYXJ5OjpjcmVhdGUoKTsKQEAgLTExMDksNyArMTEzNSw3IEBAIHZvaWQgV2ViQ29u
dGV4dDo6ZGlkR2V0V2ViQ29yZVN0YXRpc3RpY3MoY29uc3QgU3RhdGlzdGljc0RhdGEmIHN0YXRp
c3RpY3NEYXRhLCB1CiB7CiAgICAgUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gY2FsbGJhY2sg
PSBtX2RpY3Rpb25hcnlDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxi
YWNrKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgorICAgICAgICBM
T0dfRVJST1IoIkNhbm5vdCByZXBvcnQgV2ViQ29yZSBzdGF0aXN0aWNzIGFzIHRoZXJlIGlzIG5v
IHZhbGlkIGNhbGxiYWNrIGZ1bmN0aW9uLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMTI1LDYgKzExNTEsMTkgQEAgdm9pZCBXZWJDb250ZXh0OjpkaWRHZXRXZWJDb3JlU3RhdGlz
dGljcyhjb25zdCBTdGF0aXN0aWNzRGF0YSYgc3RhdGlzdGljc0RhdGEsIHUKICAgICAKICAgICBj
YWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHN0YXRpc3RpY3MuZ2V0KCkp
OwogfQorCit2b2lkIFdlYkNvbnRleHQ6OmRpZEdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyhj
b25zdCBTdGF0aXN0aWNzRGF0YSYgc3RhdGlzdGljc0RhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit7CisgICAgUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gY2FsbGJhY2sgPSBtX2RpY3Rpb25h
cnlDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAg
ICAgIExPR19FUlJPUigiQ2Fubm90IHJlcG9ydCBOZXR3b3JrUHJvY2VzcyBzdGF0aXN0aWNzIGFz
IHRoZXJlIGlzIG5vIHZhbGlkIGNhbGxiYWNrIGZ1bmN0aW9uLiIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgUmVmUHRyPE11dGFibGVEaWN0aW9uYXJ5PiBzdGF0aXN0aWNzID0gY3Jl
YXRlRGljdGlvbmFyeUZyb21IYXNoTWFwKHN0YXRpc3RpY3NEYXRhLnN0YXRpc3RpY3NOdW1iZXJz
KTsKKworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoc3RhdGlz
dGljcy5nZXQoKSk7Cit9CiAgICAgCiB2b2lkIFdlYkNvbnRleHQ6OmdhcmJhZ2VDb2xsZWN0SmF2
YVNjcmlwdE9iamVjdHMoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5k
ZXggMGQ4M2Q1My4uOGE5M2RmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
CkBAIC0yNDQsNiArMjQ0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaHR0cFBpcGVsaW5pbmdFbmFi
bGVkKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBnZXRXZWJDb3JlU3RhdGlzdGljcyhQYXNzUmVm
UHRyPERpY3Rpb25hcnlDYWxsYmFjaz4pOworICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NTdGF0
aXN0aWNzKFBhc3NSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPik7CiAgICAgdm9pZCBnYXJiYWdl
Q29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0R2FyYmFn
ZUNvbGxlY3RvclRpbWVyRW5hYmxlZChib29sIGZsYWcpOwogCkBAIC0zMjgsNiArMzI5LDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBkaWRHZXRXZWJDb3JlU3RhdGlzdGljcyhjb25z
dCBTdGF0aXN0aWNzRGF0YSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkR2V0
TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFN0YXRpc3RpY3NEYXRhJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAgICAgICAgIAogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBX
ZWJDb250ZXh0TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkNvbnRl
eHRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgpp
bmRleCBhMmE1OTkwLi43YWVmNGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5tZXNzYWdlcy5pbgpAQCAtMjYsNiArMjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJD
b250ZXh0IExlZ2FjeVJlY2VpdmVyIHsKICAgICBBZGRWaXNpdGVkTGlua0hhc2godWludDY0X3Qg
bGlua0hhc2gpCiAKICAgICBEaWRHZXRXZWJDb3JlU3RhdGlzdGljcyhXZWJLaXQ6OlN0YXRpc3Rp
Y3NEYXRhIHN0YXRpc3RpY3NEYXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIERpZEdldE5l
dHdvcmtQcm9jZXNzU3RhdGlzdGljcyhXZWJLaXQ6OlN0YXRpc3RpY3NEYXRhIHN0YXRpc3RpY3NE
YXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICMgUGFz
dGVib2FyZCBtZXNzYWdlcy4K
</data>
<flag name="commit-queue"
          id="207178"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187385</attachid>
            <date>2013-02-08 16:30:08 -0800</date>
            <delta_ts>2013-03-01 10:38:37 -0800</delta_ts>
            <desc>Patch v2 - Use LoaderStrategy</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16412</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkZjBlZDQ1Li5hOTRmMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUg
QEAKKzIwMTMtMDItMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBXS0NvbnRleHQgQVBJIHRvIHJldHJpZXZlIGJhc2ljIG5ldHdvcmsgcHJvY2VzcyBz
dGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDkzMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpIb3N0
UmVjb3JkOjpwZW5kaW5nUmVxdWVzdENvdW50KToKKyAgICAgICAgKFdlYktpdDo6SG9zdFJlY29y
ZDo6YWN0aXZlTG9hZENvdW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3Jk
Lmg6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3Mp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdHNQZW5kaW5nQ291bnQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2Fkc1Bl
bmRpbmdDb3VudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6Omhvc3RzQWN0aXZlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpsb2Fkc0FjdGl2ZUNvdW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg6CisKKyAgICAgICAgKiBTaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6b3V0c3RhbmRpbmdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNv
dW50KToKKworICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6YWN0aXZlRG93bmxvYWRDb3VudCk6CisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6Om5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHQ6OmdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OmRpZEdldFdlYkNvcmVTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6ZGlkR2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6
CisgICAgICAgIChXS0NvbnRleHRHZXROZXR3b3JraW5nU3RhdGlzdGljcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorCiAyMDEzLTAyLTA3ICBHYXZpbiBQZXRlcnMg
IDxnYXZpbnBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNDIxNDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Ib3N0
UmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuY3Bw
CmluZGV4IDA3NzVkMjQuLmVhMDAxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0hvc3RSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL0hvc3RSZWNvcmQuY3BwCkBAIC0xMTUsNiArMTE1LDIxIEBAIGJvb2wgSG9zdFJlY29yZDo6
aGFzUmVxdWVzdHMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordWludDY0X3QgSG9z
dFJlY29yZDo6cGVuZGluZ1JlcXVlc3RDb3VudCgpIGNvbnN0Cit7CisgICAgdWludDY0X3QgY291
bnQgPSAwOworCisgICAgZm9yICh1bnNpZ25lZCBwID0gMDsgcCA8PSBSZXNvdXJjZUxvYWRQcmlv
cml0eUhpZ2hlc3Q7IHArKykKKyAgICAgICAgY291bnQgKz0gbV9sb2FkZXJzUGVuZGluZ1twXS5z
aXplKCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3VpbnQ2NF90IEhvc3RSZWNvcmQ6OmFj
dGl2ZUxvYWRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbG9hZGVyc0luUHJvZ3Jlc3Mu
c2l6ZSgpOworfQorCiB2b2lkIEhvc3RSZWNvcmQ6OnNlcnZlUGVuZGluZ1JlcXVlc3RzRm9yUXVl
dWUoTG9hZGVyUXVldWUmIHF1ZXVlLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsK
ICAgICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvSG9zdFJlY29yZC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvSG9zdFJlY29yZC5oCmluZGV4IDk0N2YwNjkuLmQ3NDk3ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmgKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzUmVxdWVzdHMoKSBjb25zdDsKICAgICB2b2lkIHNlcnZlUGVuZGluZ1Jl
cXVlc3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5KTsKIAorICAgIHVpbnQ2NF90IHBl
bmRpbmdSZXF1ZXN0Q291bnQoKSBjb25zdDsKKyAgICB1aW50NjRfdCBhY3RpdmVMb2FkQ291bnQo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBIb3N0UmVjb3JkKGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50IG1heFJlcXVlc3RzSW5GbGlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMGQ1MmI4Zi4uZWQxOTA1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAt
MzcsNiArMzcsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgor
I2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFn
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luaXRpYWxpemVMb2dnaW5nLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTIxNiw2ICsyMTgsMjIgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjbSkKICAgICB9CiB9CiAKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyh1aW50NjRfdCBjYWxs
YmFja0lEKQoreworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXImIHNjaGVkdWxlciA9
IE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7
CisKKyAgICBTdGF0aXN0aWNzRGF0YSBkYXRhOworCisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVy
cy5zZXQoIkhvc3RzUGVuZGluZ0NvdW50Iiwgc2NoZWR1bGVyLmhvc3RzUGVuZGluZ0NvdW50KCkp
OworICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJIb3N0c0FjdGl2ZUNvdW50Iiwgc2No
ZWR1bGVyLmhvc3RzQWN0aXZlQ291bnQoKSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5z
ZXQoIkxvYWRzUGVuZGluZ0NvdW50Iiwgc2NoZWR1bGVyLmxvYWRzUGVuZGluZ0NvdW50KCkpOwor
ICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJMb2Fkc0FjdGl2ZUNvdW50Iiwgc2NoZWR1
bGVyLmxvYWRzQWN0aXZlQ291bnQoKSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQo
IkRvd25sb2Fkc0FjdGl2ZUNvdW50Iiwgc2hhcmVkKCkuZG93bmxvYWRNYW5hZ2VyKCkuYWN0aXZl
RG93bmxvYWRDb3VudCgpKTsKKyAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldCgiT3V0c3Rh
bmRpbmdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXNDb3VudCIsIHNoYXJlZCgpLmF1dGhlbnRpY2F0
aW9uTWFuYWdlcigpLm91dHN0YW5kaW5nQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb3VudCgpKTsK
KyAgICAgCisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
Q29udGV4dDo6RGlkR2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKGRhdGEsIGNhbGxiYWNrSUQp
LCAwKTsKK30KKwogI2lmICFQTEFURk9STShNQUMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0
aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzJikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IDFiZTU1ZjcuLjM3ZjljNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTA3LDYgKzEwNyw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBQbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9zdCk7CiAKKyAgICB2b2lkIGdl
dE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKwogICAgIC8v
IFBsYXRmb3JtIEhlbHBlcnMKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1v
ZGVsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5MzU0OTNiYy4uZDVmZjk1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTQwLDYgKzQwLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICBBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0
ZUZvckhvc3QoV2ViS2l0OjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZSwgV1RG
OjpTdHJpbmcgaG9zdCkKKyAgICAKKyAgICBHZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3ModWlu
dDY0X3QgY2FsbGJhY2tJRCkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDhjMzMzMmIuLjY1NzljNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC00LDcgKzQsOCBAQAogI2luY2x1ZGUgIkhvc3RS
ZWNvcmQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc2Nvbm5lY3Rpb25NZXNz
YWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1
ZGUgIlN5bmNOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTE3NCw2ICsxNzUsNTQgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVJlbW92ZUxvYWRlcihTY2hl
ZHVsYWJsZUxvYWRlciogbG9hZGUKICAgICB9CiB9CiAKK3VpbnQ2NF90IE5ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6Omhvc3RzUGVuZGluZ0NvdW50KCkgY29uc3QKK3sKKyAgICB1aW50NjRf
dCBjb3VudCA9ICBtX25vbkhUVFBQcm90b2NvbEhvc3QtPnBlbmRpbmdSZXF1ZXN0Q291bnQoKSA/
IDEgOiAwOworCisgICAgSG9zdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9ob3N0cy5lbmQo
KTsKKyAgICBmb3IgKEhvc3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX2hvc3RzLmJlZ2luKCk7
IGkgIT0gZW5kOyArK2kpIHsKKyAgICAgICAgaWYgKGktPnZhbHVlLT5wZW5kaW5nUmVxdWVzdENv
dW50KCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsK
K30KKwordWludDY0X3QgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9hZHNQZW5kaW5n
Q291bnQoKSBjb25zdAoreworICAgIHVpbnQ2NF90IGNvdW50ID0gIG1fbm9uSFRUUFByb3RvY29s
SG9zdC0+cGVuZGluZ1JlcXVlc3RDb3VudCgpOworCisgICAgSG9zdE1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbV9ob3N0cy5lbmQoKTsKKyAgICBmb3IgKEhvc3RNYXA6OmNvbnN0X2l0ZXJhdG9y
IGkgPSBtX2hvc3RzLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpCisgICAgICAgIGNvdW50ICs9IGkt
PnZhbHVlLT5wZW5kaW5nUmVxdWVzdENvdW50KCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisK
K3VpbnQ2NF90IE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Omhvc3RzQWN0aXZlQ291bnQo
KSBjb25zdAoreworICAgIHVpbnQ2NF90IGNvdW50ID0gIG1fbm9uSFRUUFByb3RvY29sSG9zdC0+
YWN0aXZlTG9hZENvdW50KCkgPyAxIDogMDsKKworICAgIEhvc3RNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1faG9zdHMuZW5kKCk7CisgICAgZm9yIChIb3N0TWFwOjpjb25zdF9pdGVyYXRvciBp
ID0gbV9ob3N0cy5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAgIGlmIChpLT52YWx1
ZS0+YWN0aXZlTG9hZENvdW50KCkpCisgICAgICAgICAgICArK2NvdW50OworICAgIH0KKworICAg
IHJldHVybiBjb3VudDsKK30KKwordWludDY0X3QgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxl
cjo6bG9hZHNBY3RpdmVDb3VudCgpIGNvbnN0Cit7CisgICAgdWludDY0X3QgY291bnQgPSAgbV9u
b25IVFRQUHJvdG9jb2xIb3N0LT5hY3RpdmVMb2FkQ291bnQoKTsKKworICAgIEhvc3RNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IG1faG9zdHMuZW5kKCk7CisgICAgZm9yIChIb3N0TWFwOjpjb25z
dF9pdGVyYXRvciBpID0gbV9ob3N0cy5iZWdpbigpOyBpICE9IGVuZDsgKytpKQorICAgICAgICBj
b3VudCArPSBpLT52YWx1ZS0+YWN0aXZlTG9hZENvdW50KCk7CisKKyAgICByZXR1cm4gY291bnQ7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCBkNzg3M2YwLi43OGNlMjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC01Nyw3ICs1NywxMyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHJlY2VpdmVkUmVkaXJlY3QoU2NoZWR1bGFibGVMb2FkZXIqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiByZWRpcmVjdFVSTCk7CiAgICAgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJD
b3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5
VmVyeUxvdyk7Ci0gICAgCisKKyAgICAvLyBGb3IgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBy
ZXBvcnRpbmcuCisgICAgdWludDY0X3QgaG9zdHNQZW5kaW5nQ291bnQoKSBjb25zdDsKKyAgICB1
aW50NjRfdCBsb2Fkc1BlbmRpbmdDb3VudCgpIGNvbnN0OworICAgIHVpbnQ2NF90IGhvc3RzQWN0
aXZlQ291bnQoKSBjb25zdDsKKyAgICB1aW50NjRfdCBsb2Fkc0FjdGl2ZUNvdW50KCkgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgZW51bSBDcmVhdGVIb3N0UG9saWN5IHsKICAgICAgICAgQ3JlYXRl
SWZOb3RGb3VuZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAppbmRleCBlODE3ZjlkLi40YzZmODFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVzZUNyZWRlbnRpYWxGb3JDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIGNv
bnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmLCBjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYp
OwogICAgIHZvaWQgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckNoYWxsZW5nZSh1aW50NjRf
dCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9pZCBjYW5jZWxDaGFsbGVuZ2UodWludDY0X3QgY2hhbGxl
bmdlSUQpOworICAgIAorICAgIHVpbnQ2NF90IG91dHN0YW5kaW5nQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbGxlbmdlcy5zaXplKCk7IH0KIAogcHJp
dmF0ZToKICAgICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDBiOTAxZTIuLmJh
NDNmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRvd25sb2Fk
RmluaXNoZWQoRG93bmxvYWQqKTsKICAgICBib29sIGlzRG93bmxvYWRpbmcoKSBjb25zdCB7IHJl
dHVybiAhbV9kb3dubG9hZHMuaXNFbXB0eSgpOyB9CisgICAgdWludDY0X3QgYWN0aXZlRG93bmxv
YWRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRzLnNpemUoKTsgfQogCiAgICAgdm9p
ZCBkaWRDcmVhdGVEb3dubG9hZCgpOwogICAgIHZvaWQgZGlkRGVzdHJveURvd25sb2FkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDVjODM4
ZmUuLmZkY2IwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuY3BwCkBAIC0zMzQsNiArMzM0LDExIEBAIHZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGljcyhX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0R2V0CiAgICAg
dG9JbXBsKGNvbnRleHRSZWYpLT5nZXRXZWJDb3JlU3RhdGlzdGljcyhEaWN0aW9uYXJ5Q2FsbGJh
Y2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOyAgICAKIH0KIAordm9pZCBXS0NvbnRleHRH
ZXROZXR3b3JraW5nU3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm9pZCogY29u
dGV4dCwgV0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1bmN0aW9uIGNhbGxiYWNrKQoreworICAgIHRv
SW1wbChjb250ZXh0UmVmKS0+Z2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKERpY3Rpb25hcnlD
YWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV0tDb250ZXh0
R2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cyhXS0NvbnRleHRSZWYgY29udGV4dFJlZikK
IHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPmdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVj
dHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAppbmRleCA3
MmE1NDVmLi5iYmU3NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5oCkBAIC0xODgsNiArMTg4LDcgQEAgV0tfRVhQT1JUIFdLUmVzb3VyY2VDYWNoZU1hbmFn
ZXJSZWYgV0tDb250ZXh0R2V0UmVzb3VyY2VDYWNoZU1hbmFnZXIoV0tDb250ZXh0UmUKICAgICAK
IHR5cGVkZWYgdm9pZCAoKldLQ29udGV4dEdldFN0YXRpc3RpY3NGdW5jdGlvbikoV0tEaWN0aW9u
YXJ5UmVmIHN0YXRpc3RpY3MsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzKFdLQ29udGV4dFJlZiBj
b250ZXh0LCB2b2lkKiBmdW5jdGlvbkNvbnRleHQsIFdLQ29udGV4dEdldFN0YXRpc3RpY3NGdW5j
dGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXROZXR3b3JraW5nU3Rh
dGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0Nv
bnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwogICAgIAogV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0R2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cyhXS0NvbnRleHRSZWYg
Y29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFnZUNv
bGxlY3RvclRpbWVyRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBlbmFibGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGI3ZmYxMTUuLmQzNDk2
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTMwMyw5ICsz
MDMsMTQgQEAgQ29yZUlQQzo6Q29ubmVjdGlvbiogV2ViQ29udGV4dDo6bmV0d29ya2luZ1Byb2Nl
c3NDb25uZWN0aW9uKCkKIHsKICAgICBzd2l0Y2ggKG1fcHJvY2Vzc01vZGVsKSB7CiAgICAgY2Fz
ZSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOgorI2lmIEVOQUJMRShORVRXT1JL
X1BST0NFU1MpCisgICAgICAgIGlmIChtX3VzZXNOZXR3b3JrUHJvY2VzcykKKyAgICAgICAgICAg
IHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uKCk7CisjZW5kaWYKICAgICAgICAg
cmV0dXJuIG1fcHJvY2Vzc2VzWzBdLT5jb25uZWN0aW9uKCk7CiAgICAgY2FzZSBQcm9jZXNzTW9k
ZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlczoKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQorICAgICAgICBBU1NFUlQobV91c2VzTmV0d29ya1Byb2Nlc3MpOwogICAgICAgICByZXR1cm4g
bV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwogI2Vsc2UKICAgICAgICAgYnJlYWs7CkBA
IC0xMDg5LDYgKzEwOTQsMjggQEAgdm9pZCBXZWJDb250ZXh0OjpnZXRXZWJDb3JlU3RhdGlzdGlj
cyhQYXNzUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gY2FsbGJhY2spCiAgICAgfQogfQogCit2
b2lkIFdlYkNvbnRleHQ6OmdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyhQYXNzUmVmUHRyPERp
Y3Rpb25hcnlDYWxsYmFjaz4gY2FsbGJhY2spCit7CisgICAgYm9vbCBuZXR3b3JrUHJvY2Vzc1Vu
YXZhaWxhYmxlOworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgbmV0d29ya1Byb2Nl
c3NVbmF2YWlsYWJsZSA9ICFtX3VzZXNOZXR3b3JrUHJvY2VzcyB8fCAhbV9uZXR3b3JrUHJvY2Vz
czsKKyNlbHNlCisgICAgbmV0d29ya1Byb2Nlc3NVbmF2YWlsYWJsZSA9IHRydWU7CisjZW5kaWYK
KworICAgIGlmIChuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxlKSB7CisgICAgICAgIExPR19FUlJP
UigiQXR0ZW1wdCB0byBnZXQgTmV0d29ya1Byb2Nlc3Mgc3RhdGlzdGljcyBidXQgdGhlIE5ldHdv
cmtQcm9jZXNzIGlzIHVuYXZhaWxhYmxlIik7CisgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRl
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQorICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAg
IG1fZGljdGlvbmFyeUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOwor
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRO
ZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3MoY2FsbGJhY2tJRCksIDApOworI2VuZGlmCit9CisKIHN0
YXRpYyBQYXNzUmVmUHRyPE11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVEaWN0aW9uYXJ5RnJvbUhh
c2hNYXAoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiYgbWFwKQogewogICAgIFJlZlB0
cjxNdXRhYmxlRGljdGlvbmFyeT4gcmVzdWx0ID0gTXV0YWJsZURpY3Rpb25hcnk6OmNyZWF0ZSgp
OwpAQCAtMTEwOSw3ICsxMTM2LDcgQEAgdm9pZCBXZWJDb250ZXh0OjpkaWRHZXRXZWJDb3JlU3Rh
dGlzdGljcyhjb25zdCBTdGF0aXN0aWNzRGF0YSYgc3RhdGlzdGljc0RhdGEsIHUKIHsKICAgICBS
ZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPiBjYWxsYmFjayA9IG1fZGljdGlvbmFyeUNhbGxiYWNr
cy50YWtlKGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgLy8gRklY
TUU6IExvZyBlcnJvciBvciBhc3NlcnQuCisgICAgICAgIExPR19FUlJPUigiQ2Fubm90IHJlcG9y
dCBXZWJDb3JlIHN0YXRpc3RpY3MgYXMgdGhlcmUgaXMgbm8gdmFsaWQgY2FsbGJhY2sgZnVuY3Rp
b24uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMjUsNiArMTE1MiwxOSBAQCB2
b2lkIFdlYkNvbnRleHQ6OmRpZEdldFdlYkNvcmVTdGF0aXN0aWNzKGNvbnN0IFN0YXRpc3RpY3NE
YXRhJiBzdGF0aXN0aWNzRGF0YSwgdQogICAgIAogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJh
Y2tXaXRoUmV0dXJuVmFsdWUoc3RhdGlzdGljcy5nZXQoKSk7CiB9CisKK3ZvaWQgV2ViQ29udGV4
dDo6ZGlkR2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFN0YXRpc3RpY3NEYXRhJiBz
dGF0aXN0aWNzRGF0YSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBSZWZQdHI8RGljdGlv
bmFyeUNhbGxiYWNrPiBjYWxsYmFjayA9IG1fZGljdGlvbmFyeUNhbGxiYWNrcy50YWtlKGNhbGxi
YWNrSUQpOworICAgIGlmICghY2FsbGJhY2spIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3Qg
cmVwb3J0IE5ldHdvcmtQcm9jZXNzIHN0YXRpc3RpY3MgYXMgdGhlcmUgaXMgbm8gdmFsaWQgY2Fs
bGJhY2sgZnVuY3Rpb24uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8
TXV0YWJsZURpY3Rpb25hcnk+IHN0YXRpc3RpY3MgPSBjcmVhdGVEaWN0aW9uYXJ5RnJvbUhhc2hN
YXAoc3RhdGlzdGljc0RhdGEuc3RhdGlzdGljc051bWJlcnMpOworCisgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShzdGF0aXN0aWNzLmdldCgpKTsKK30KICAgICAK
IHZvaWQgV2ViQ29udGV4dDo6Z2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCAwZDgzZDUzLi44YTkzZGYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTI0NCw2ICsyNDQsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBodHRwUGlwZWxpbmluZ0VuYWJsZWQoKSBjb25zdDsKICAgICAKICAg
ICB2b2lkIGdldFdlYkNvcmVTdGF0aXN0aWNzKFBhc3NSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNr
Pik7CisgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3MoUGFzc1JlZlB0cjxEaWN0
aW9uYXJ5Q2FsbGJhY2s+KTsKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVj
dHMoKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVk
KGJvb2wgZmxhZyk7CiAKQEAgLTMyOCw2ICszMjksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICB2b2lkIGRpZEdldFdlYkNvcmVTdGF0aXN0aWNzKGNvbnN0IFN0YXRpc3RpY3NEYXRhJiwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRHZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3Rp
Y3MoY29uc3QgU3RhdGlzdGljc0RhdGEmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICAgICAg
CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkNvbnRleHRNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29udGV4dE1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluCmluZGV4IGEyYTU5OTAuLjdhZWY0ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmlu
CkBAIC0yNiw2ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYkNvbnRleHQgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIEFkZFZpc2l0ZWRMaW5rSGFzaCh1aW50NjRfdCBsaW5rSGFzaCkKIAogICAgIERpZEdl
dFdlYkNvcmVTdGF0aXN0aWNzKFdlYktpdDo6U3RhdGlzdGljc0RhdGEgc3RhdGlzdGljc0RhdGEs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRGlkR2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNz
KFdlYktpdDo6U3RhdGlzdGljc0RhdGEgc3RhdGlzdGljc0RhdGEsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgIyBQYXN0ZWJvYXJkIG1lc3NhZ2VzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187909</attachid>
            <date>2013-02-12 11:58:24 -0800</date>
            <delta_ts>2013-02-12 12:02:23 -0800</delta_ts>
            <desc>Patch v3 - Based on Sam&apos;s feedback</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>35880</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkNjc0NTc3Li42NzY2ZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkg
QEAKKzIwMTMtMDItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBXS0NvbnRleHQgQVBJIHRvIHJldHJpZXZlIGJhc2ljIG5ldHdvcmsgcHJvY2VzcyBz
dGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDkzMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgYSBXS0NvbnRleHRHZXRTdGF0aXN0aWNzV2l0aE9wdGlvbnMgd2hp
Y2ggYWxsb3dzIHRoZSBjbGllbnQgdG8gYXNrIGZvcgorICAgICAgICBjZXJ0YWluIHR5cGVzIG9m
IHN0YXRpc3RpY3MuCisKKyAgICAgICAgSXQgYWxzbyBleHBhbmRzIHRoZSAiZ2V0IHN0YXRpc3Rp
Y3MiIGNhbGxiYWNrIG1lY2hhbmlzbSB0byBhbGxvdyBmb3IgYSBzdGF0aXN0aWNzIHJlcXVlc3Qg
CisgICAgICAgIHRvIGJlIGFuc3dlcmVkIGJ5IG11bHRpcGxlIGNoaWxkIHByb2Nlc3Nlcy4KKwor
ICAgICAgICBUaGF0IG1lY2hhbmlzbSBzdGlsbCBoYXMgc29tZSByb3VnaCBlZGdlcyBidXQgd2ls
bCBldmVudHVhbGx5IGFsbG93IGZvciBnZXR0aW5nIHN0YXRpc3RpY3MKKyAgICAgICAgZnJvbSBt
dWx0aXBsZSB3ZWIgcHJvY2Vzc2VzLCBhcyB3ZWxsLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvSG9zdFJlY29yZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Okhvc3RSZWNvcmQ6OnBlbmRpbmdS
ZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpIb3N0UmVjb3JkOjphY3RpdmVMb2FkQ291
bnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuaDoKKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpob3N0c1BlbmRpbmdDb3VudCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRzUGVuZGluZ0NvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdHNBY3RpdmVD
b3VudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Omxv
YWRzQWN0aXZlQ291bnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaDoKKworICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5h
Z2VyOjpvdXRzdGFuZGluZ0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ291bnQpOgorICAgICAgICAq
IFNoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dEdldFN0YXRpc3RpY3Mp
OgorICAgICAgICAoV0tDb250ZXh0R2V0U3RhdGlzdGljc1dpdGhPcHRpb25zKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Rh
dGlzdGljc1JlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RhdGlzdGljc1Jl
cXVlc3Q6OlN0YXRpc3RpY3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3RhdGlzdGljc1Jl
cXVlc3Q6On5TdGF0aXN0aWNzUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlN0YXRpc3RpY3NS
ZXF1ZXN0OjphZGRPdXRzdGFuZGluZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjphZGRUb0Rp
Y3Rpb25hcnlGcm9tSGFzaE1hcCk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZURpY3Rpb25hcnlG
cm9tSGFzaE1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0YXRpc3RpY3NSZXF1ZXN0Ojpjb21wbGV0
ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0YXRpc3RpY3NSZXF1ZXN0OjpjcmVhdGUpOgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpuZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cmVx
dWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
cmVxdWVzdE5ldHdvcmtpbmdTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6ZGlkR2V0U3RhdGlzdGljcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbjoKKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmdldFdlYkNvcmVTdGF0aXN0aWNzKToKKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxMy0wMi0xMiAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBhZnRlciByMTQyNTQwIGFuZCByMTQyNTE4CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuY3BwCmluZGV4IDA3NzVk
MjQuLmVhMDAxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hv
c3RSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0hvc3RSZWNv
cmQuY3BwCkBAIC0xMTUsNiArMTE1LDIxIEBAIGJvb2wgSG9zdFJlY29yZDo6aGFzUmVxdWVzdHMo
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordWludDY0X3QgSG9zdFJlY29yZDo6cGVu
ZGluZ1JlcXVlc3RDb3VudCgpIGNvbnN0Cit7CisgICAgdWludDY0X3QgY291bnQgPSAwOworCisg
ICAgZm9yICh1bnNpZ25lZCBwID0gMDsgcCA8PSBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2hlc3Q7
IHArKykKKyAgICAgICAgY291bnQgKz0gbV9sb2FkZXJzUGVuZGluZ1twXS5zaXplKCk7CisKKyAg
ICByZXR1cm4gY291bnQ7Cit9CisKK3VpbnQ2NF90IEhvc3RSZWNvcmQ6OmFjdGl2ZUxvYWRDb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbG9hZGVyc0luUHJvZ3Jlc3Muc2l6ZSgpOworfQor
CiB2b2lkIEhvc3RSZWNvcmQ6OnNlcnZlUGVuZGluZ1JlcXVlc3RzRm9yUXVldWUoTG9hZGVyUXVl
dWUmIHF1ZXVlLCBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKICAgICB3aGlsZSAo
IXF1ZXVlLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvSG9zdFJlY29yZC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvSG9zdFJl
Y29yZC5oCmluZGV4IDk0N2YwNjkuLmQ3NDk3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0hvc3RSZWNvcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9Ib3N0UmVjb3JkLmgKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzUmVxdWVzdHMoKSBjb25zdDsKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNv
cmU6OlJlc291cmNlTG9hZFByaW9yaXR5KTsKIAorICAgIHVpbnQ2NF90IHBlbmRpbmdSZXF1ZXN0
Q291bnQoKSBjb25zdDsKKyAgICB1aW50NjRfdCBhY3RpdmVMb2FkQ291bnQoKSBjb25zdDsKKwog
cHJpdmF0ZToKICAgICBIb3N0UmVjb3JkKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50IG1heFJlcXVl
c3RzSW5GbGlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKaW5kZXggMGQ1MmI4Zi4uYWExNWYyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzcsNiArMzcsOCBA
QAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgorI2luY2x1ZGUgIldl
YkNvbnRleHRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0luaXRpYWxpemVMb2dnaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KQEAgLTIxNiw2ICsyMTgsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjbSkKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OmdldE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyh1aW50NjRfdCBjYWxsYmFja0lEKQorewor
ICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXImIHNjaGVkdWxlciA9IE5ldHdvcmtQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CisKKyAgICBTdGF0
aXN0aWNzRGF0YSBkYXRhOworCisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoIkhvc3Rz
UGVuZGluZ0NvdW50Iiwgc2NoZWR1bGVyLmhvc3RzUGVuZGluZ0NvdW50KCkpOworICAgIGRhdGEu
c3RhdGlzdGljc051bWJlcnMuc2V0KCJIb3N0c0FjdGl2ZUNvdW50Iiwgc2NoZWR1bGVyLmhvc3Rz
QWN0aXZlQ291bnQoKSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoIkxvYWRzUGVu
ZGluZ0NvdW50Iiwgc2NoZWR1bGVyLmxvYWRzUGVuZGluZ0NvdW50KCkpOworICAgIGRhdGEuc3Rh
dGlzdGljc051bWJlcnMuc2V0KCJMb2Fkc0FjdGl2ZUNvdW50Iiwgc2NoZWR1bGVyLmxvYWRzQWN0
aXZlQ291bnQoKSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoIkRvd25sb2Fkc0Fj
dGl2ZUNvdW50Iiwgc2hhcmVkKCkuZG93bmxvYWRNYW5hZ2VyKCkuYWN0aXZlRG93bmxvYWRDb3Vu
dCgpKTsKKyAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldCgiT3V0c3RhbmRpbmdBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZXNDb3VudCIsIHNoYXJlZCgpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigp
Lm91dHN0YW5kaW5nQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb3VudCgpKTsKKworICAgIHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkRpZEdldFN0
YXRpc3RpY3MoZGF0YSwgY2FsbGJhY2tJRCksIDApOworfQorCiAjaWYgIVBMQVRGT1JNKE1BQykK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMWJlNTVmNy4uMzdmOWM0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0x
MDcsNiArMTA3LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0KGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgU3Ry
aW5nJiBob3N0KTsKIAorICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKHVpbnQ2
NF90IGNhbGxiYWNrSUQpOworCiAgICAgLy8gUGxhdGZvcm0gSGVscGVycwogICAgIHZvaWQgcGxh
dGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDkz
NTQ5M2JjLi5kNWZmOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDAsNiArNDAsOCBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogICAgIEFs
bG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChXZWJLaXQ6OlBsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvIGNlcnRpZmljYXRlLCBXVEY6OlN0cmluZyBob3N0KQorICAgIAorICAgIEdldE5l
dHdvcmtQcm9jZXNzU3RhdGlzdGljcyh1aW50NjRfdCBjYWxsYmFja0lEKQogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5k
ZXggOGMzMzMyYi4uNjU3OWM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTQs
NyArNCw4IEBACiAjaW5jbHVkZSAiSG9zdFJlY29yZC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzY29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiU3luY05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
IgpAQCAtMTc0LDYgKzE3NSw1NCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
OnNjaGVkdWxlUmVtb3ZlTG9hZGVyKFNjaGVkdWxhYmxlTG9hZGVyKiBsb2FkZQogICAgIH0KIH0K
IAordWludDY0X3QgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdHNQZW5kaW5nQ291
bnQoKSBjb25zdAoreworICAgIHVpbnQ2NF90IGNvdW50ID0gIG1fbm9uSFRUUFByb3RvY29sSG9z
dC0+cGVuZGluZ1JlcXVlc3RDb3VudCgpID8gMSA6IDA7CisKKyAgICBIb3N0TWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBtX2hvc3RzLmVuZCgpOworICAgIGZvciAoSG9zdE1hcDo6Y29uc3RfaXRl
cmF0b3IgaSA9IG1faG9zdHMuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkgeworICAgICAgICBpZiAo
aS0+dmFsdWUtPnBlbmRpbmdSZXF1ZXN0Q291bnQoKSkKKyAgICAgICAgICAgICsrY291bnQ7Cisg
ICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCit1aW50NjRfdCBOZXR3b3JrUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpsb2Fkc1BlbmRpbmdDb3VudCgpIGNvbnN0Cit7CisgICAgdWludDY0X3Qg
Y291bnQgPSAgbV9ub25IVFRQUHJvdG9jb2xIb3N0LT5wZW5kaW5nUmVxdWVzdENvdW50KCk7CisK
KyAgICBIb3N0TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2hvc3RzLmVuZCgpOworICAgIGZv
ciAoSG9zdE1hcDo6Y29uc3RfaXRlcmF0b3IgaSA9IG1faG9zdHMuYmVnaW4oKTsgaSAhPSBlbmQ7
ICsraSkKKyAgICAgICAgY291bnQgKz0gaS0+dmFsdWUtPnBlbmRpbmdSZXF1ZXN0Q291bnQoKTsK
KworICAgIHJldHVybiBjb3VudDsKK30KKwordWludDY0X3QgTmV0d29ya1Jlc291cmNlTG9hZFNj
aGVkdWxlcjo6aG9zdHNBY3RpdmVDb3VudCgpIGNvbnN0Cit7CisgICAgdWludDY0X3QgY291bnQg
PSAgbV9ub25IVFRQUHJvdG9jb2xIb3N0LT5hY3RpdmVMb2FkQ291bnQoKSA/IDEgOiAwOworCisg
ICAgSG9zdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9ob3N0cy5lbmQoKTsKKyAgICBmb3Ig
KEhvc3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX2hvc3RzLmJlZ2luKCk7IGkgIT0gZW5kOyAr
K2kpIHsKKyAgICAgICAgaWYgKGktPnZhbHVlLT5hY3RpdmVMb2FkQ291bnQoKSkKKyAgICAgICAg
ICAgICsrY291bnQ7CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCit1aW50NjRfdCBO
ZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2Fkc0FjdGl2ZUNvdW50KCkgY29uc3QKK3sK
KyAgICB1aW50NjRfdCBjb3VudCA9ICBtX25vbkhUVFBQcm90b2NvbEhvc3QtPmFjdGl2ZUxvYWRD
b3VudCgpOworCisgICAgSG9zdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9ob3N0cy5lbmQo
KTsKKyAgICBmb3IgKEhvc3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX2hvc3RzLmJlZ2luKCk7
IGkgIT0gZW5kOyArK2kpCisgICAgICAgIGNvdW50ICs9IGktPnZhbHVlLT5hY3RpdmVMb2FkQ291
bnQoKTsKKworICAgIHJldHVybiBjb3VudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5o
CmluZGV4IGQ3ODczZjAuLjc4Y2UyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTU3
LDcgKzU3LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVjZWl2ZWRSZWRpcmVjdChTY2hlZHVs
YWJsZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lk
IHNlcnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5ID0gV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93KTsKLSAgICAKKworICAgIC8vIEZvciBO
ZXR3b3JrUHJvY2VzcyBzdGF0aXN0aWNzIHJlcG9ydGluZy4KKyAgICB1aW50NjRfdCBob3N0c1Bl
bmRpbmdDb3VudCgpIGNvbnN0OworICAgIHVpbnQ2NF90IGxvYWRzUGVuZGluZ0NvdW50KCkgY29u
c3Q7CisgICAgdWludDY0X3QgaG9zdHNBY3RpdmVDb3VudCgpIGNvbnN0OworICAgIHVpbnQ2NF90
IGxvYWRzQWN0aXZlQ291bnQoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBlbnVtIENyZWF0ZUhv
c3RQb2xpY3kgewogICAgICAgICBDcmVhdGVJZk5vdEZvdW5kLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oCmluZGV4IGU4MTdmOWQuLjRjNmY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKQEAg
LTYyLDYgKzYyLDggQEAgcHVibGljOgogICAgIHZvaWQgdXNlQ3JlZGVudGlhbEZvckNoYWxsZW5n
ZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYsIGNvbnN0
IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJik7CiAgICAgdm9pZCBjb250aW51ZVdpdGhvdXRDcmVk
ZW50aWFsRm9yQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKICAgICB2b2lkIGNhbmNl
bENoYWxsZW5nZSh1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CisgICAgCisgICAgdWludDY0X3Qgb3V0
c3RhbmRpbmdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9j
aGFsbGVuZ2VzLnNpemUoKTsgfQogCiBwcml2YXRlOgogICAgIC8vIENvcmVJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmgKaW5kZXggMGI5MDFlMi4uYmE0M2Y5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC02OSw2ICs2OSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCopOwogICAgIGJvb2wg
aXNEb3dubG9hZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX2Rvd25sb2Fkcy5pc0VtcHR5KCk7IH0K
KyAgICB1aW50NjRfdCBhY3RpdmVEb3dubG9hZENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kb3du
bG9hZHMuc2l6ZSgpOyB9CiAKICAgICB2b2lkIGRpZENyZWF0ZURvd25sb2FkKCk7CiAgICAgdm9p
ZCBkaWREZXN0cm95RG93bmxvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKaW5kZXggNWM4MzhmZS4uYjE1MDMyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTMzMSw3ICszMzEsMTIgQEAgdm9p
ZCBXS0NvbnRleHRXYXJtSW5pdGlhbFByb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiAK
IHZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm9p
ZCogY29udGV4dCwgV0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1bmN0aW9uIGNhbGxiYWNrKQogewot
ICAgIHRvSW1wbChjb250ZXh0UmVmKS0+Z2V0V2ViQ29yZVN0YXRpc3RpY3MoRGljdGlvbmFyeUNh
bGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsgICAgCisgICAgdG9JbXBsKGNvbnRl
eHRSZWYpLT5nZXRTdGF0aXN0aWNzKDB4RkZGRkZGRkYsIERpY3Rpb25hcnlDYWxsYmFjazo6Y3Jl
YXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGlj
c1dpdGhPcHRpb25zKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0YXRpc3RpY3NUeXBlIHN0
YXRpc3RpY3NNYXNrLCB2b2lkKiBjb250ZXh0LCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rp
b24gY2FsbGJhY2spCit7CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5nZXRTdGF0aXN0aWNzKHN0
YXRpc3RpY3NNYXNrLCBEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFj
aykpOwogfQogCiB2b2lkIFdLQ29udGV4dEdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmgKaW5kZXggNzJhNTQ1Zi4uNTYzZThmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaApAQCAtMTQzLDYgKzE0MywxMiBAQCBlbnVtIHsKIH07
CiB0eXBlZGVmIHVpbnQzMl90IFdLUHJvY2Vzc01vZGVsOwogCitlbnVtIHsKKyAgICBrV0tTdGF0
aXN0aWNzVHlwZVdlYkNvbnRlbnQgPSAweDAwMDAwMDAxLAorICAgIGtXS1N0YXRpc3RpY3NUeXBl
TmV0d29ya2luZyA9IDB4MDAwMDAwMDIKK307Cit0eXBlZGVmIHVpbnQzMl90IFdLU3RhdGlzdGlj
c1R5cGU7CisKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0NvbnRleHRHZXRUeXBlSUQoKTsKIAogV0tf
RVhQT1JUIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGUoKTsKQEAgLTE4OCw3ICsxOTQsOCBA
QCBXS19FWFBPUlQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRSZXNvdXJj
ZUNhY2hlTWFuYWdlcihXS0NvbnRleHRSZQogICAgIAogdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0
R2V0U3RhdGlzdGljc0Z1bmN0aW9uKShXS0RpY3Rpb25hcnlSZWYgc3RhdGlzdGljcywgV0tFcnJv
clJlZiBlcnJvciwgdm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dEdldFN0YXRpc3RpY3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQqIGZ1bmN0aW9uQ29u
dGV4dCwgV0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKLSAgICAKK1dL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dEdldFN0YXRpc3RpY3NXaXRoT3B0aW9ucyhXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tTdGF0aXN0aWNzVHlwZSBzdGF0aXN0aWNzTWFzaywgdm9pZCogZnVuY3Rp
b25Db250ZXh0LCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOworCiBX
S19FWFBPUlQgdm9pZCBXS0NvbnRleHRHYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKFdL
Q29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEphdmFTY3Jp
cHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBib29s
IGVuYWJsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdGF0aXN0
aWNzUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVl
c3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYTFmYjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVlc3Qu
Y3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlN0YXRpc3RpY3NSZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJJbW11dGFibGVBcnJh
eS5oIgorI2luY2x1ZGUgIk11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSA8d3RmL0F0b21p
Y3MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1N0YXRpc3RpY3NSZXF1ZXN0OjpTdGF0aXN0
aWNzUmVxdWVzdChQYXNzUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gY2FsbGJhY2spCisgICAg
OiBtX2NhbGxiYWNrKGNhbGxiYWNrKQoreworfQorCitTdGF0aXN0aWNzUmVxdWVzdDo6flN0YXRp
c3RpY3NSZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxsYmFj
ay0+aW52YWxpZGF0ZSgpOworfQorCit1aW50NjRfdCBTdGF0aXN0aWNzUmVxdWVzdDo6YWRkT3V0
c3RhbmRpbmdSZXF1ZXN0KCkKK3sKKyAgICBzdGF0aWMgaW50NjRfdCB1bmlxdWVSZXF1ZXN0SUQ7
CisKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBhdG9taWNJbmNyZW1lbnQoJnVuaXF1ZVJlcXVl
c3RJRCk7CisgICAgbV9vdXRzdGFuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SUQpOworICAgIHJl
dHVybiByZXF1ZXN0SUQ7Cit9CisKK3N0YXRpYyB2b2lkIGFkZFRvRGljdGlvbmFyeUZyb21IYXNo
TWFwKE11dGFibGVEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5LCBjb25zdCBIYXNoTWFwPFN0cmluZywg
dWludDY0X3Q+JiBtYXApCit7CisgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90Pjo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIHVpbnQ2
NF90Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQor
ICAgICAgICBkaWN0aW9uYXJ5LT5zZXQoaXQtPmtleSwgUmVmUHRyPFdlYlVJbnQ2ND4oV2ViVUlu
dDY0OjpjcmVhdGUoaXQtPnZhbHVlKSkuZ2V0KCkpOworfQorCitzdGF0aWMgUGFzc1JlZlB0cjxN
dXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlRGljdGlvbmFyeUZyb21IYXNoTWFwKGNvbnN0IEhhc2hN
YXA8U3RyaW5nLCB1aW50NjRfdD4mIG1hcCkKK3sKKyAgICBSZWZQdHI8TXV0YWJsZURpY3Rpb25h
cnk+IHJlc3VsdCA9IE11dGFibGVEaWN0aW9uYXJ5OjpjcmVhdGUoKTsKKyAgICBhZGRUb0RpY3Rp
b25hcnlGcm9tSGFzaE1hcChyZXN1bHQuZ2V0KCksIG1hcCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordm9pZCBTdGF0aXN0aWNzUmVxdWVzdDo6Y29tcGxldGVkUmVxdWVzdCh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IFN0YXRpc3RpY3NEYXRhJiBkYXRhKQoreworICAgIEFTU0VSVChtX291
dHN0YW5kaW5nUmVxdWVzdHMuY29udGFpbnMocmVxdWVzdElEKSk7CisgICAgbV9vdXRzdGFuZGlu
Z1JlcXVlc3RzLnJlbW92ZShyZXF1ZXN0SUQpOworCisgICAgaWYgKCFtX3Jlc3BvbnNlRGljdGlv
bmFyeSkKKyAgICAgICAgbV9yZXNwb25zZURpY3Rpb25hcnkgPSBNdXRhYmxlRGljdGlvbmFyeTo6
Y3JlYXRlKCk7CisgICAgCisgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpIDxyZGFyOi8v
cHJvYmxlbS8xMzIwMDA1OT46IFRoaXMgY29kZSBvdmVyd3JpdGVzIGFueSBwcmV2aW91cyByZXNw
b25zZSBkYXRhIHJlY2VpdmVkLgorICAgIC8vIFdoZW4gZ2V0dGluZyByZXNwb25zZXMgZnJvbSBt
dWx0aXBsZSBXZWJQcm9jZXNzZXMgd2UgbmVlZCB0byBjb21iaW5lIGl0ZW1zIGluc3RlYWQgb2Yg
Y2xvYmJlcmluZyB0aGVtLgorCisgICAgYWRkVG9EaWN0aW9uYXJ5RnJvbUhhc2hNYXAobV9yZXNw
b25zZURpY3Rpb25hcnkuZ2V0KCksIGRhdGEuc3RhdGlzdGljc051bWJlcnMpOworCisgICAgaWYg
KCFkYXRhLmphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9yZXNwb25zZURpY3Rpb25hcnktPnNldCgiSmF2YVNjcmlwdFByb3RlY3RlZE9iamVj
dFR5cGVDb3VudHMiLCBjcmVhdGVEaWN0aW9uYXJ5RnJvbUhhc2hNYXAoZGF0YS5qYXZhU2NyaXB0
UHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cykuZ2V0KCkpOworICAgIGlmICghZGF0YS5qYXZhU2Ny
aXB0T2JqZWN0VHlwZUNvdW50cy5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzcG9uc2VEaWN0aW9u
YXJ5LT5zZXQoIkphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzIiwgY3JlYXRlRGljdGlvbmFyeUZy
b21IYXNoTWFwKGRhdGEuamF2YVNjcmlwdE9iamVjdFR5cGVDb3VudHMpLmdldCgpKTsKKyAgICAK
KyAgICBzaXplX3QgY2FjaGVTdGF0aXN0aWNzQ291bnQgPSBkYXRhLndlYkNvcmVDYWNoZVN0YXRp
c3RpY3Muc2l6ZSgpOworICAgIGlmIChjYWNoZVN0YXRpc3RpY3NDb3VudCkgeworICAgICAgICBW
ZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiBjYWNoZVN0YXRpc3RpY3NWZWN0b3IoY2FjaGVTdGF0
aXN0aWNzQ291bnQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhY2hlU3RhdGlz
dGljc0NvdW50OyArK2kpCisgICAgICAgICAgICBjYWNoZVN0YXRpc3RpY3NWZWN0b3JbaV0gPSBj
cmVhdGVEaWN0aW9uYXJ5RnJvbUhhc2hNYXAoZGF0YS53ZWJDb3JlQ2FjaGVTdGF0aXN0aWNzW2ld
KTsKKyAgICAgICAgbV9yZXNwb25zZURpY3Rpb25hcnktPnNldCgiV2ViQ29yZUNhY2hlU3RhdGlz
dGljcyIsIEltbXV0YWJsZUFycmF5OjphZG9wdChjYWNoZVN0YXRpc3RpY3NWZWN0b3IpLmdldCgp
KTsKKyAgICB9CisKKyAgICBpZiAobV9vdXRzdGFuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkgewor
ICAgICAgICBtX2NhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobV9yZXNw
b25zZURpY3Rpb25hcnkuZ2V0KCkpOworICAgICAgICBtX2NhbGxiYWNrID0gMDsKKyAgICB9Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3Rh
dGlzdGljc1JlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjlj
MzdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRpc3Rp
Y3NSZXF1ZXN0LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3RhdGlz
dGljc1JlcXVlc3RfaAorI2RlZmluZSBTdGF0aXN0aWNzUmVxdWVzdF9oCisKKyNpbmNsdWRlICJH
ZW5lcmljQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgorCisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBTdGF0aXN0
aWNzRGF0YTsKKwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tEaWN0aW9uYXJ5UmVmPiBEaWN0
aW9uYXJ5Q2FsbGJhY2s7CisKK2VudW0gU3RhdGlzdGljc1JlcXVlc3RUeXBlIHsKKyAgICBTdGF0
aXN0aWNzUmVxdWVzdFR5cGVXZWJDb250ZW50ID0gMHgwMDAwMDAwMSwKKyAgICBTdGF0aXN0aWNz
UmVxdWVzdFR5cGVOZXR3b3JraW5nID0gMHgwMDAwMDAwMgorfTsKKworY2xhc3MgU3RhdGlzdGlj
c1JlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTdGF0aXN0aWNzUmVxdWVzdD4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0YXRpc3RpY3NSZXF1ZXN0PiBjcmVhdGUoUGFzc1Jl
ZlB0cjxEaWN0aW9uYXJ5Q2FsbGJhY2s+IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdGF0aXN0aWNzUmVxdWVzdChjYWxsYmFjaykpOworICAgIH0KKworICAg
IH5TdGF0aXN0aWNzUmVxdWVzdCgpOworCisgICAgdWludDY0X3QgYWRkT3V0c3RhbmRpbmdSZXF1
ZXN0KCk7CisKKyAgICB2b2lkIGNvbXBsZXRlZFJlcXVlc3QodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBTdGF0aXN0aWNzRGF0YSYpOworCitwcml2YXRlOgorICAgIFN0YXRpc3RpY3NSZXF1ZXN0
KFBhc3NSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPik7CisKKyAgICBIYXNoU2V0PHVpbnQ2NF90
PiBtX291dHN0YW5kaW5nUmVxdWVzdHM7CisgICAgUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4g
bV9jYWxsYmFjazsKKworICAgIFJlZlB0cjxNdXRhYmxlRGljdGlvbmFyeT4gbV9yZXNwb25zZURp
Y3Rpb25hcnk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFN0YXRp
c3RpY3NSZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRl
eCBiN2ZmMTE1Li5iYzc4YmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwCkBAIC0zMDMsOSArMzAzLDE0IEBAIENvcmVJUEM6OkNvbm5lY3Rpb24qIFdlYkNvbnRleHQ6
Om5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpCiB7CiAgICAgc3dpdGNoIChtX3Byb2Nlc3NN
b2RlbCkgewogICAgIGNhc2UgUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczoKKyNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgICAgICBpZiAobV91c2VzTmV0d29ya1Byb2Nl
c3MpCisgICAgICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwor
I2VuZGlmCiAgICAgICAgIHJldHVybiBtX3Byb2Nlc3Nlc1swXS0+Y29ubmVjdGlvbigpOwogICAg
IGNhc2UgUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXM6CiAjaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKKyAgICAgICAgQVNTRVJUKG1fdXNlc05ldHdvcmtQcm9jZXNzKTsK
ICAgICAgICAgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb24oKTsKICNlbHNlCiAg
ICAgICAgIGJyZWFrOwpAQCAtMTA3MSwzMiArMTA3Niw1NiBAQCBib29sIFdlYkNvbnRleHQ6Omh0
dHBQaXBlbGluaW5nRW5hYmxlZCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJDb250ZXh0
OjpnZXRXZWJDb3JlU3RhdGlzdGljcyhQYXNzUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gY2Fs
bGJhY2spCit2b2lkIFdlYkNvbnRleHQ6OmdldFN0YXRpc3RpY3ModWludDMyX3Qgc3RhdGlzdGlj
c01hc2ssIFBhc3NSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPiBjYWxsYmFjaykKK3sKKyAgICBp
ZiAoIXN0YXRpc3RpY3NNYXNrKSB7CisgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8U3RhdGlzdGljc1JlcXVlc3Q+IHJl
cXVlc3QgPSBTdGF0aXN0aWNzUmVxdWVzdDo6Y3JlYXRlKGNhbGxiYWNrKTsKKworICAgIGlmIChz
dGF0aXN0aWNzTWFzayAmIFN0YXRpc3RpY3NSZXF1ZXN0VHlwZVdlYkNvbnRlbnQpCisgICAgICAg
IHJlcXVlc3RXZWJDb250ZW50U3RhdGlzdGljcyhyZXF1ZXN0LmdldCgpKTsKKyAgICAKKyAgICBp
ZiAoc3RhdGlzdGljc01hc2sgJiBTdGF0aXN0aWNzUmVxdWVzdFR5cGVOZXR3b3JraW5nKQorICAg
ICAgICByZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MocmVxdWVzdC5nZXQoKSk7Cit9CisKK3Zv
aWQgV2ViQ29udGV4dDo6cmVxdWVzdFdlYkNvbnRlbnRTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1
ZXN0KiByZXF1ZXN0KQogewogICAgIGlmIChtX3Byb2Nlc3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxT
aGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7Ci0gICAgICAgIGlmIChtX3Byb2Nlc3Nlcy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIGlmICht
X3Byb2Nlc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgICAgICBtX2RpY3Rpb25hcnlDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxi
YWNrLmdldCgpKTsKLSAgICAgICAgbV9wcm9jZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkdldFdlYkNvcmVTdGF0aXN0aWNzKGNhbGxiYWNrSUQpLCAwKTsKKyAgICAgICAgdWlu
dDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRpbmdSZXF1ZXN0KCk7CisgICAg
ICAgIG1fc3RhdGlzdGljc1JlcXVlc3RzLnNldChyZXF1ZXN0SUQsIHJlcXVlc3QpOworICAgICAg
ICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0V2ViQ29yZVN0
YXRpc3RpY3MocmVxdWVzdElEKSwgMCk7CiAKICAgICB9IGVsc2UgewotICAgICAgICAvLyBGSVhN
RSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjIzOTQ4Mz4gTWFrZSBkb3du
bG9hZGluZyB3b3JrLgotICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOworICAgICAgICAv
LyBGSVhNRSAoTXVsdGktV2ViUHJvY2VzcykgPHJkYXI6Ly9wcm9ibGVtLzEzMjAwMDU5PjogTWFr
ZSBnZXR0aW5nIHN0YXRpc3RpY3MgZnJvbSBtdWx0aXBsZSBXZWJQcm9jZXNzZXMgd29yay4KICAg
ICB9CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPE11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVEaWN0
aW9uYXJ5RnJvbUhhc2hNYXAoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiYgbWFwKQor
dm9pZCBXZWJDb250ZXh0OjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MoU3RhdGlzdGljc1Jl
cXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgUmVmUHRyPE11dGFibGVEaWN0aW9uYXJ5PiByZXN1bHQg
PSBNdXRhYmxlRGljdGlvbmFyeTo6Y3JlYXRlKCk7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2
NF90Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxT
dHJpbmcsIHVpbnQ2NF90Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQotICAgICAgICByZXN1bHQtPnNldChpdC0+a2V5LCBSZWZQdHI8V2ViVUludDY0
PihXZWJVSW50NjQ6OmNyZWF0ZShpdC0+dmFsdWUpKS5nZXQoKSk7Ci0gICAgCi0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICBib29sIG5ldHdvcmtQcm9jZXNzVW5hdmFpbGFibGU7CisjaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKKyAgICBuZXR3b3JrUHJvY2Vzc1VuYXZhaWxhYmxlID0gIW1fdXNl
c05ldHdvcmtQcm9jZXNzIHx8ICFtX25ldHdvcmtQcm9jZXNzOworI2Vsc2UKKyAgICBuZXR3b3Jr
UHJvY2Vzc1VuYXZhaWxhYmxlID0gdHJ1ZTsKKyNlbmRpZgorCisgICAgaWYgKG5ldHdvcmtQcm9j
ZXNzVW5hdmFpbGFibGUpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBOZXR3
b3JrUHJvY2VzcyBzdGF0aXN0aWNzIGJ1dCB0aGUgTmV0d29ya1Byb2Nlc3MgaXMgdW5hdmFpbGFi
bGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCisgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+YWRkT3V0c3RhbmRpbmdSZXF1
ZXN0KCk7CisgICAgbV9zdGF0aXN0aWNzUmVxdWVzdHMuc2V0KHJlcXVlc3RJRCwgcmVxdWVzdCk7
CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okdl
dE5ldHdvcmtQcm9jZXNzU3RhdGlzdGljcyhyZXF1ZXN0SUQpLCAwKTsKKyNlbmRpZgogfQogCiAj
aWYgIVBMQVRGT1JNKE1BQykKQEAgLTExMDUsMjUgKzExMzQsMTUgQEAgdm9pZCBXZWJDb250ZXh0
OjpkdW1teShib29sJikKIH0KICNlbmRpZgogCi12b2lkIFdlYkNvbnRleHQ6OmRpZEdldFdlYkNv
cmVTdGF0aXN0aWNzKGNvbnN0IFN0YXRpc3RpY3NEYXRhJiBzdGF0aXN0aWNzRGF0YSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29udGV4dDo6ZGlkR2V0U3RhdGlzdGljcyhjb25zdCBT
dGF0aXN0aWNzRGF0YSYgc3RhdGlzdGljc0RhdGEsIHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKLSAg
ICBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPiBjYWxsYmFjayA9IG1fZGljdGlvbmFyeUNhbGxi
YWNrcy50YWtlKGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgLy8g
RklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQuCisgICAgUmVmUHRyPFN0YXRpc3RpY3NSZXF1ZXN0
PiByZXF1ZXN0ID0gbV9zdGF0aXN0aWNzUmVxdWVzdHMudGFrZShyZXF1ZXN0SUQpOworICAgIGlm
ICghcmVxdWVzdCkgeworICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCByZXBvcnQgbmV0d29ya2lu
ZyBzdGF0aXN0aWNzLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPE11
dGFibGVEaWN0aW9uYXJ5PiBzdGF0aXN0aWNzID0gY3JlYXRlRGljdGlvbmFyeUZyb21IYXNoTWFw
KHN0YXRpc3RpY3NEYXRhLnN0YXRpc3RpY3NOdW1iZXJzKTsKLSAgICBzdGF0aXN0aWNzLT5zZXQo
IkphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzIiwgY3JlYXRlRGljdGlvbmFyeUZy
b21IYXNoTWFwKHN0YXRpc3RpY3NEYXRhLmphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291
bnRzKS5nZXQoKSk7Ci0gICAgc3RhdGlzdGljcy0+c2V0KCJKYXZhU2NyaXB0T2JqZWN0VHlwZUNv
dW50cyIsIGNyZWF0ZURpY3Rpb25hcnlGcm9tSGFzaE1hcChzdGF0aXN0aWNzRGF0YS5qYXZhU2Ny
aXB0T2JqZWN0VHlwZUNvdW50cykuZ2V0KCkpOwotICAgIAotICAgIHNpemVfdCBjYWNoZVN0YXRp
c3RpY3NDb3VudCA9IHN0YXRpc3RpY3NEYXRhLndlYkNvcmVDYWNoZVN0YXRpc3RpY3Muc2l6ZSgp
OwotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IGNhY2hlU3RhdGlzdGljc1ZlY3Rvcihj
YWNoZVN0YXRpc3RpY3NDb3VudCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWNoZVN0
YXRpc3RpY3NDb3VudDsgKytpKQotICAgICAgICBjYWNoZVN0YXRpc3RpY3NWZWN0b3JbaV0gPSBj
cmVhdGVEaWN0aW9uYXJ5RnJvbUhhc2hNYXAoc3RhdGlzdGljc0RhdGEud2ViQ29yZUNhY2hlU3Rh
dGlzdGljc1tpXSk7Ci0gICAgc3RhdGlzdGljcy0+c2V0KCJXZWJDb3JlQ2FjaGVTdGF0aXN0aWNz
IiwgSW1tdXRhYmxlQXJyYXk6OmFkb3B0KGNhY2hlU3RhdGlzdGljc1ZlY3RvcikuZ2V0KCkpOwot
ICAgIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoc3RhdGlz
dGljcy5nZXQoKSk7CisgICAgcmVxdWVzdC0+Y29tcGxldGVkUmVxdWVzdChyZXF1ZXN0SUQsIHN0
YXRpc3RpY3NEYXRhKTsKIH0KICAgICAKIHZvaWQgV2ViQ29udGV4dDo6Z2FyYmFnZUNvbGxlY3RK
YXZhU2NyaXB0T2JqZWN0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRl
eCAwZDgzZDUzLi4xMTJhZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oIgog
I2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIlByb2Nlc3NNb2RlbC5oIgor
I2luY2x1ZGUgIlN0YXRpc3RpY3NSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4
dENsaWVudC5oIgpAQCAtMjQyLDggKzI0Myw5IEBAIHB1YmxpYzoKICAgICAvLyBEZWZhdWx0cyB0
byBmYWxzZS4KICAgICB2b2lkIHNldEhUVFBQaXBlbGluaW5nRW5hYmxlZChib29sKTsKICAgICBi
b29sIGh0dHBQaXBlbGluaW5nRW5hYmxlZCgpIGNvbnN0OworCisgICAgdm9pZCBnZXRTdGF0aXN0
aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBQYXNzUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFj
az4pOwogICAgIAotICAgIHZvaWQgZ2V0V2ViQ29yZVN0YXRpc3RpY3MoUGFzc1JlZlB0cjxEaWN0
aW9uYXJ5Q2FsbGJhY2s+KTsKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVj
dHMoKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVk
KGJvb2wgZmxhZyk7CiAKQEAgLTMwMCw2ICszMDIsOSBAQCBwcml2YXRlOgogCiAgICAgV2ViUHJv
Y2Vzc1Byb3h5KiBjcmVhdGVOZXdXZWJQcm9jZXNzKCk7CiAKKyAgICB2b2lkIHJlcXVlc3RXZWJD
b250ZW50U3RhdGlzdGljcyhTdGF0aXN0aWNzUmVxdWVzdCopOworICAgIHZvaWQgcmVxdWVzdE5l
dHdvcmtpbmdTdGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7CisKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICNlbmRpZgpAQCAtMzI3LDcgKzMz
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkdW1teShib29sJik7CiAjZW5kaWYKIAotICAgIHZv
aWQgZGlkR2V0V2ViQ29yZVN0YXRpc3RpY3MoY29uc3QgU3RhdGlzdGljc0RhdGEmLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldFN0YXRpc3RpY3MoY29uc3QgU3RhdGlzdGlj
c0RhdGEmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICAgICAgCiAgICAgLy8gSW1wbGVtZW50
ZWQgaW4gZ2VuZXJhdGVkIFdlYkNvbnRleHRNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBk
aWRSZWNlaXZlV2ViQ29udGV4dE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VEZWNvZGVyJik7CkBAIC00NTMsNiArNDU4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
ICAgIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxEaWN0aW9uYXJ5Q2FsbGJhY2s+ID4g
bV9kaWN0aW9uYXJ5Q2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTdGF0
aXN0aWNzUmVxdWVzdD4gPiBtX3N0YXRpc3RpY3NSZXF1ZXN0czsKIAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBib29sIG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KaW5kZXggYTJhNTk5MC4uZjNk
ZjA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2Fn
ZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViQ29udGV4dCBMZWdhY3lSZWNl
aXZlciB7CiAgICAgIyBWaXNpdGVkIGxpbmsgcHJvdmlkZXIgbWVzc2FnZXMuCiAgICAgQWRkVmlz
aXRlZExpbmtIYXNoKHVpbnQ2NF90IGxpbmtIYXNoKQogCi0gICAgRGlkR2V0V2ViQ29yZVN0YXRp
c3RpY3MoV2ViS2l0OjpTdGF0aXN0aWNzRGF0YSBzdGF0aXN0aWNzRGF0YSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKKyAgICBEaWRHZXRTdGF0aXN0aWNzKFdlYktpdDo6U3RhdGlzdGljc0RhdGEgc3Rh
dGlzdGljc0RhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgIyBQYXN0ZWJvYXJkIG1lc3NhZ2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ0MTA5NzkuLmQzYTUzOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0
OSw2ICs0NDksNyBAQAogCQk1MTNBMTYzRDE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nl
c3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTNBMTYzQjE2MzA4OEY2MDA1RDdEMjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1l
c3NhZ2VzLmggKi87IH07CiAJCTUxM0ExNjRDMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTNBMTY0OTE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwICovOyB9OwogCQk1MTNBMTY0RDE2MzBBOUJGMDA1RDdEMjIgLyog
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ExNjRBMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oICovOyB9OworCQk1MTRCREVEMzE2Qzk4RUREMDBFNEUy
NUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVx
dWVzdC5oICovOyB9OwogCQk1MTUzNTY5QzEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRl
eHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGll
bnQuY3BwICovOyB9OwogCQk1MTUzNTY5RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRl
eHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTUzNTY5QjEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50
LmggKi87IH07CiAJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VG
MDBBMzdDNEEgLyogV2ViRGF0YS5oICovOyB9OwpAQCAtNDk0LDYgKzQ5NSw3IEBACiAJCTUxOEU4
RjBEMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEU4RjA1MTZCMjA5MzcwMEU5MTQyOSAvKiBE
b3dubG9hZE1hYy5tbSAqLzsgfTsKIAkJNTE5QjRGRjQxNkE5RUE5NzAwNjY4NzREIC8qIFNjaGVk
dWxhYmxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxOUI0RkYyMTZBOUVBOTcwMDY2ODc0RCAvKiBTY2hlZHVsYWJsZUxvYWRlci5jcHAg
Ki87IH07CiAJCTUxOUI0RkY1MTZBOUVBOTcwMDY2ODc0RCAvKiBTY2hlZHVsYWJsZUxvYWRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5QjRGRjMx
NkE5RUE5NzAwNjY4NzREIC8qIFNjaGVkdWxhYmxlTG9hZGVyLmggKi87IH07CisJCTUxQTRENUE5
MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE0RDVBODE2Q0FDNEZGMDAwRTYxNUUg
LyogU3RhdGlzdGljc1JlcXVlc3QuY3BwICovOyB9OwogCQk1MUE1NTVGNTEyOEM2QzQ3MDA5QUJD
RUMgLyogV0tDb250ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFBNTU1RjMxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1l
bnVJdGVtLmNwcCAqLzsgfTsKIAkJNTFBNTU1RjYxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4
dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUE1NTVGNDEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUE1NTYwMTEyOEM2
RDkyMDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNTU2MDAxMjhDNkQ5MjAwOUFCQ0VDIC8q
IFdLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTc3NCw2ICsxNzc2LDcgQEAKIAkJNTEzQTE2NDkxNjMwQTlC
RjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzQTE2NEExNjMwQTlCRjAwNUQ3
RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTNBMTY0QjE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRp
c3RpY3NSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpc3Rp
Y3NSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTM1NjlBMTI5MUIx
RDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1MzU2OUIxMjkxQjFEMjAwMDc0OURDIC8qIFdl
YlBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTgxMyw2ICsxODE2LDcgQEAKIAkJNTE4RThGMDUxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25s
b2FkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRG93bmxv
YWRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOUI0RkYyMTZBOUVBOTcw
MDY2ODc0RCAvKiBTY2hlZHVsYWJsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBTY2hlZHVsYWJsZUxvYWRlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9TY2hlZHVsYWJsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
OUI0RkYzMTZBOUVBOTcwMDY2ODc0RCAvKiBTY2hlZHVsYWJsZUxvYWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBTY2hlZHVsYWJsZUxvYWRlci5oOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTFBNEQ1QTgxNkNBQzRGRjAwMEU2MTVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpc3RpY3NSZXF1ZXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNTU1RjMxMjhDNkM0NzAwOUFCQ0VDIC8q
IFdLQ29udGV4dE1lbnVJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdLQ29udGV4dE1lbnVJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFBNTU1RjQxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dE1lbnVJdGVtLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxQTU1NjAwMTI4QzZEOTIwMDlBQkNFQyAvKiBXS0NvbnRleHRN
ZW51SXRlbVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4
dE1lbnVJdGVtVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2ODQsNiAr
MzY4OCw4IEBACiAJCQkJQkM1OTcwNzQxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5o
ICovLAogCQkJCUJDMTExQjA4MTEyRjVFM0MwMDMzN0JBQiAvKiBSZXNwb25zaXZlbmVzc1RpbWVy
LmNwcCAqLywKIAkJCQkxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NU
aW1lci5oICovLAorCQkJCTUxQTRENUE4MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVx
dWVzdC5jcHAgKi8sCisJCQkJNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NS
ZXF1ZXN0LmggKi8sCiAJCQkJMUFBNDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2Vy
LmggKi8sCiAJCQkJMUEwRjI5RTExMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rUHJvdmlk
ZXIuY3BwICovLAogCQkJCTFBMEYyOUUyMTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1By
b3ZpZGVyLmggKi8sCkBAIC01MzY2LDYgKzUzNzIsNyBAQAogCQkJCUJDOTg5RDg1MTYxQTk4OTAw
MDBENDZEMyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMyRTZFOEUxMTQxOTcxNTAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNCRUNERTgxNkI2NDE2ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTRCREVEMzE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGlj
c1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNjQ4OCw2ICs2NDk1LDcgQEAKIAkJCQlCQzJF
NkU4RDExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDMDA5MkY4MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVldWVNYWMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNCRUNERTcxNkI2NDE2ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFBNEQ1QTkxNkNBQzRGRjAwMEU2MTVFIC8qIFN0YXRp
c3RpY3NSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggODVjOTIzZi4uODBkYTI4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC05MDEsNyArOTAxLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpnZXRXZWJDb3JlU3RhdGlzdGljcyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIC8vIEdl
dCBXZWJDb3JlIG1lbW9yeSBjYWNoZSBzdGF0aXN0aWNzCiAgICAgZ2V0V2ViQ29yZU1lbW9yeUNh
Y2hlU3RhdGlzdGljcyhkYXRhLndlYkNvcmVDYWNoZVN0YXRpc3RpY3MpOwogICAgIAotICAgIHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkRpZEdl
dFdlYkNvcmVTdGF0aXN0aWNzKGRhdGEsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpEaWRHZXRTdGF0aXN0
aWNzKGRhdGEsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpnYXJiYWdl
Q29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCkK
</data>
<flag name="review"
          id="207869"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>