<?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>96374</bug_id>
          
          <creation_ts>2012-09-11 04:16:00 -0700</creation_ts>
          <short_desc>[WK2][WKTR] TestRunner needs to implement dumpApplicationCacheDelegateCallbacks</short_desc>
          <delta_ts>2012-09-12 09:38:00 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96379</dependson>
    
    <dependson>96498</dependson>
          <blocked>96496</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>717041</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-11 04:16:00 -0700</bug_when>
    <thetext>TestRunner needs to implement dumpApplicationCacheDelegateCallbacks.

This is needed by the following test cases:
  http/tests/appcache/origin-delete.html
  http/tests/appcache/origin-quota.html
  http/tests/appcache/origin-quota-continued-download.html
  http/tests/appcache/origin-quota-continued-download-multiple-manifests.html
  http/tests/appcache/origin-usage.html
  http/tests/appcache/origins-with-appcache.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717984</commentid>
    <comment_count>1</comment_count>
      <attachid>163531</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-12 00:19:57 -0700</bug_when>
    <thetext>Created attachment 163531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718011</commentid>
    <comment_count>2</comment_count>
      <attachid>163531</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-12 00:47:32 -0700</bug_when>
    <thetext>Comment on attachment 163531
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp:254
&gt; +void WKBundleResetApplicationCacheOriginQuota(WKBundleRef bundleRef, WKStringRef origin)

We always use strings for security origin?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:260
&gt; +    WKBundlePageReachedAppCacheOriginQuotaCallback                      reachedApplicationCacheOriginQuota;

didReach? Look at what naming is used elsewhere in the C api

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1413
&gt; +void InjectedBundlePage::reachedApplicationCacheOriginQuota(WKSecurityOriginRef origin, int64_t totalSpaceNeeded)

totalSpaceNeeded? bytes? mega bytes? not clear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718020</commentid>
    <comment_count>3</comment_count>
      <attachid>163531</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-12 00:55:47 -0700</bug_when>
    <thetext>Comment on attachment 163531
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp:254
&gt;&gt; +void WKBundleResetApplicationCacheOriginQuota(WKBundleRef bundleRef, WKStringRef origin)
&gt; 
&gt; We always use strings for security origin?

So far in all WKBundle ApplicationCache APIs, yes. We need to go through String representation to construct a WebCore::SecurityOrigin anyway.

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:260
&gt;&gt; +    WKBundlePageReachedAppCacheOriginQuotaCallback                      reachedApplicationCacheOriginQuota;
&gt; 
&gt; didReach? Look at what naming is used elsewhere in the C api

I chose to be consistent with both the ChromeClient naming and the Database equivalent:
&quot;WKPageExceededDatabaseQuotaCallback exceededDatabaseQuota;&quot; in WKPageUIClient

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1413
&gt;&gt; +void InjectedBundlePage::reachedApplicationCacheOriginQuota(WKSecurityOriginRef origin, int64_t totalSpaceNeeded)
&gt; 
&gt; totalSpaceNeeded? bytes? mega bytes? not clear

Ok. Will switch to totalBytesNeeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718024</commentid>
    <comment_count>4</comment_count>
      <attachid>163537</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-12 01:02:51 -0700</bug_when>
    <thetext>Created attachment 163537
Patch

Rename totalSpaceNeeded to totalBytesNeeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718032</commentid>
    <comment_count>5</comment_count>
      <attachid>163537</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-12 01:11:50 -0700</bug_when>
    <thetext>Comment on attachment 163537
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1424
&gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(&quot;UI DELEGATE APPLICATION CACHE CALLBACK: exceededApplicationCacheOriginQuotaForSecurityOrigin:{&quot;);

IMO, appendLiteral is more efficient.
http://trac.webkit.org/wiki/EfficientStrings

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1426
&gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(&quot;, &quot;);

ditto.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1428
&gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(&quot;, &quot;);

ditto.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1430
&gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(&quot;} totalSpaceNeeded:~&quot;);

ditto.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1432
&gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(&quot;\n&quot;);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718037</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-12 01:21:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 163537 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163537&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1424
&gt; &gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(&quot;UI DELEGATE APPLICATION CACHE CALLBACK: exceededApplicationCacheOriginQuotaForSecurityOrigin:{&quot;);
&gt; 
&gt; IMO, appendLiteral is more efficient.
&gt; http://trac.webkit.org/wiki/EfficientStrings
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1426
&gt; &gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(&quot;, &quot;);
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1428
&gt; &gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(&quot;, &quot;);
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1430
&gt; &gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(&quot;} totalSpaceNeeded:~&quot;);
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1432
&gt; &gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(&quot;\n&quot;);
&gt; 
&gt; ditto.

Good point. I will fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718039</commentid>
    <comment_count>7</comment_count>
      <attachid>163540</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-12 01:23:33 -0700</bug_when>
    <thetext>Created attachment 163540
Patch

Use appendLiteral() when possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718042</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-12 01:24:02 -0700</bug_when>
    <thetext>&gt; &gt; 
&gt; &gt; &gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:1432
&gt; &gt; &gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(&quot;\n&quot;);
&gt; &gt; 
&gt; &gt; ditto.
&gt; 
&gt; Good point. I will fix this.

-&gt;append(&apos;\n&apos;) is more effective than appendLiteral(&quot;\n&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718051</commentid>
    <comment_count>9</comment_count>
      <attachid>163544</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-12 01:37:37 -0700</bug_when>
    <thetext>Created attachment 163544
Patch

Take Kenneth&apos;s feedback into consideration (including the reached -&gt; didReach renaming).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718084</commentid>
    <comment_count>10</comment_count>
      <attachid>163544</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 02:17:02 -0700</bug_when>
    <thetext>Comment on attachment 163544
Patch

Clearing flags on attachment: 163544

Committed r128280: &lt;http://trac.webkit.org/changeset/128280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718085</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 02:17:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718203</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 04:55:35 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 96498</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718427</commentid>
    <comment_count>13</comment_count>
      <attachid>163645</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-12 09:04:09 -0700</bug_when>
    <thetext>Created attachment 163645
Patch

Export additional symbols on Windows to fix the following linking issue:
6&gt;   Creating library C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\lib\InjectedBundle.lib and object C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\lib\InjectedBundle.exp
6&gt;InjectedBundlePage.obj : error LNK2019: unresolved external symbol &quot;public: static class WTF::String __cdecl WTF::String::number(__int64)&quot; (?number@String@WTF@@SA?AV12@_J@Z) referenced in function &quot;private: void __thiscall WTR::InjectedBundlePage::didReachApplicationCacheOriginQuota(struct OpaqueWKSecurityOrigin const *,__int64)&quot; (?didReachApplicationCacheOriginQuota@InjectedBundlePage@WTR@@AAEXPBUOpaqueWKSecurityOrigin@@_J@Z)
6&gt;C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\bin\InjectedBundle.dll : fatal error LNK1120: 1 unresolved externals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718429</commentid>
    <comment_count>14</comment_count>
      <attachid>163645</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-12 09:05:20 -0700</bug_when>
    <thetext>Comment on attachment 163645
Patch

lets hope for the best</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718464</commentid>
    <comment_count>15</comment_count>
      <attachid>163645</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 09:37:55 -0700</bug_when>
    <thetext>Comment on attachment 163645
Patch

Clearing flags on attachment: 163645

Committed r128326: &lt;http://trac.webkit.org/changeset/128326&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718465</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 09:38:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163531</attachid>
            <date>2012-09-12 00:19:57 -0700</date>
            <delta_ts>2012-09-12 01:02:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>96374_dumpApplicationCacheCallbacks.patch</filename>
            <type>text/plain</type>
            <size>26519</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMzJiNDZkLi4zMzg0MWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDkt
MTIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXVtXS1RSXSBUZXN0UnVubmVyIG5lZWRzIHRvIGltcGxlbWVudCBkdW1wQXBwbGlj
YXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NjM3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVuc2tpcCB0ZXN0IGNhc2VzIHRoYXQgYXJlIHBhc3Npbmcgbm93
IHRoYXQgV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBpbXBsZW1lbnRzIGR1bXBBcHBsaWNhdGlv
bkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgYW5kCisgICAgICAgIGRpc2FsbG93SW5jcmVhc2VGb3JB
cHBsaWNhdGlvbkNhY2hlUXVvdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2sxL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDktMTEgIFRhaWp1IFRzdWlraSAgPHR6aWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYkZyYW1lSW1wbDo6Y2xpZW50KCkgbmVlZHMgTlVM
TCBjaGVjayBpbiBXZWJXb3JrZXJDbGllbnRJbXBsOjpvcGVuRmlsZVN5c3RlbQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGZjNjg2NGEuLjc0
NWZjZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azEvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTQ3LDYgKzQ3LDEyIEBAIEJVR1dLODQ4MzUgOiBlZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1wYXJhZ3JhcGhzLmh0bWwgPSBURVhUCiAvLyBDdXN0b20gZm9udCBsb2FkaW5nIGRlbGF5
aW5nIHRleHQgZHJhd2luZyBvbiBDYW52YXMKIEJVR1dLODczNTUgOiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5mb250ZmFjZS5ub3RpbnBhZ2UuaHRtbCA9IFRFWFQKIAorLy8gRUZM
J3MgVGVzdFJ1bm5lciBkb2VzIG5vdCBpbXBsZW1lbnQgYXBwbGljYXRpb25DYWNoZURpc2tVc2Fn
ZUZvck9yaWdpbgorQlVHV0s4NjQ2MCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXVzYWdl
Lmh0bWwgPSBURVhUCisKKy8vIEVGTCdzIFRlc3RSdW5uZXIgZG9lcyBub3QgaW1wbGVtZW50IG9y
aWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZQorQlVHV0s4NjQ5OCA6IGh0dHAvdGVzdHMvYXBwY2Fj
aGUvb3JpZ2lucy13aXRoLWFwcGNhY2hlLmh0bWwgPSBURVhUCisKIC8vIE1pc3Npbmcgc2hvd01v
ZGFsRGlhbG9nIGltcGxlbWVudGF0aW9uCiBCVUdXSzg0NTg5IDogZmFzdC9hbmltYXRpb24vcmVx
dWVzdC1hbmltYXRpb24tZnJhbWUtZHVyaW5nLW1vZGFsLmh0bWwgPSBURVhUCiBCVUdXSzg0NTg5
IDogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtY2FsbC5odG1sID0gVEVY
VApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAzNWE0M2U0Li5kOTEyNjYzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMTAzLDEyICsxMDMsNiBAQCBmYXN0L3BhcnNlci9wcmUt
aHRtbDUtcGFyc2VyLXF1aXJrcy5odG1sCiAjIEZhbGxiYWNrIHJlc291cmNlIHdhc24ndCB1c2Vk
IGZvciBhIHJlZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbgogaHR0cC90
ZXN0cy9hcHBjYWNoZS9mYWxsYmFjay5odG1sCiAKLSMgRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xs
ZXIgZG9lcyBub3QgaW1wbGVtZW50IGFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4K
LWh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXVzYWdlLmh0bWwKLQotIyBFRkwncyBMYXlvdXRU
ZXN0Q29udHJvbGxlciBkb2VzIG5vdCBpbXBsZW1lbnQgb3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNh
Y2hlCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbnMtd2l0aC1hcHBjYWNoZS5odG1sCi0KICMg
RUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgZG9lcyBub3QgaW1wbGVtZW50IHNoYWRvd1BzZXVk
b0lkCiBtZWRpYS92aWRlby1jb250cm9scy10cmFuc2Zvcm1lZC5odG1sCiBtZWRpYS92aWRlby1j
b250cm9scy12aXNpYmxlLWF1ZGlvLW9ubHkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApp
bmRleCAyMjAzZDM0Li4xNzEyMDNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMjAy
LDEyICsyMDIsNyBAQCBmYXN0L2hhcm5lc3Mvb3ZlcnJpZGUtcHJlZmVyZW5jZXMtMi5odG1sCiBm
YXN0L2ltYWdlcy9hbmltYXRlZC1naWYtcmVzdG9yZWQtZnJvbS1iZmNhY2hlLmh0bWwKIGZhc3Qv
dGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sCiAKLSMgV1RSIG5lZWRzIGFuIGltcGxlbWVudGF0aW9u
IG9mIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MKLWh0dHAvdGVzdHMvYXBw
Y2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90
YS5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxv
YWQuaHRtbAotaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25s
b2FkLW11bHRpcGxlLW1hbmlmZXN0cy5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi11
c2FnZS5odG1sCisjIFdUUiBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBvcmlnaW5zV2l0aEFw
cGxpY2F0aW9uQ2FjaGUKIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2lucy13aXRoLWFwcGNhY2hl
Lmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcERPTUFzV2ViQXJjaGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJhMjIxOTYuLmY2Y2Uy
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wOS0xMiAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdW1dLVFJd
IFRlc3RSdW5uZXIgbmVlZHMgdG8gaW1wbGVtZW50IGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdh
dGVDYWxsYmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk2Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIEJ1bmRsZSBDIEFQSSB0byByZXNldCB0aGUgYXBwbGljYXRpb24gY2FjaGUgcXVvdGEK
KyAgICAgICAgZm9yIGEgZ2l2ZW4gb3JpZ2luLgorCisgICAgICAgIEFkZCBuZXcgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSBjYWxsYmFjaworICAgICAgICB0byBXS0J1bmRsZVBh
Z2VVSUNsaWVudCB3aGljaCBpcyBjYWxsZWQgZnJvbQorICAgICAgICBXZWJDaHJvbWVDbGllbnQ6
OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoKS4KKworICAgICAgICBUaG9zZSBh
cmUgbmVlZGVkIGJ5IFdlYktpdFRlc3RSdW5uZXIgdG8gZHVtcAorICAgICAgICBpbmZvcm1hdGlv
biBhYm91dCB0aGUgYXBwbGljYXRpb24gY2FjaGUgY2FsbGJhY2tzCisgICAgICAgIGlmIGluc3Ry
dWN0ZWQgdG8uCisKKyAgICAgICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAg
ICAoV0tCdW5kbGVTZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAoV0tC
dW5kbGVSZXNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpyZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSk6CisKIDIwMTItMDktMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBzaG91bGQgYWx3
YXlzIGJlIGZvcmNlZCB3aGVuIHVzaW5nIHRoZSB0aWxlZCBkcmF3aW5nIGFyZWEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKaW5kZXggYWUxMGE1Zi4uYmZlNzkwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKQEAgLTc1LDYgKzc1
LDExIEBAIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlRm9ybUNsaWVu
dD46OmludGVyZmFjZVNpemVzQnlWZXJzaW9uW10KICAgICBzaXplb2YoV0tCdW5kbGVQYWdlRm9y
bUNsaWVudCkKIH07CiAKK2NvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdl
VUlDbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltdID0geworICAgIG9mZnNldG9mKFdL
QnVuZGxlUGFnZVVJQ2xpZW50LCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKSwK
KyAgICBzaXplb2YoV0tCdW5kbGVQYWdlVUlDbGllbnQpCit9OworCiBjb25zdCBzaXplX3QgQVBJ
Q2xpZW50VHJhaXRzPFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pjo6aW50ZXJmYWNlU2l6
ZXNCeVZlcnNpb25bXSA9IHsKICAgICBvZmZzZXRvZihXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudCwgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKSwKICAgICBzaXpl
b2YoV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
Q2xpZW50VHJhaXRzLmgKaW5kZXggNzM1MmI1Ni4uY2JjYTliMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElDbGllbnRUcmFpdHMuaApAQCAtNTQsNiArNTQsMTAgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ+IHsKICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGludGVyZmFjZVNpemVzQnlWZXJzaW9uWzJdOwogfTsKIAordGVt
cGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZVVJQ2xpZW50PiB7Cisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvblsyXTsKK307CisK
IHRlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS1BhZ2VDb250ZXh0TWVudUNsaWVu
dD4gewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bM107
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCAxNGZjY2RjLi5mNjEzYzhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlLmNwcApAQCAtMjQ4LDcgKzI0OCwxMiBAQCB1aW50NjRfdCBXS0J1bmRsZUdl
dEFwcENhY2hlVXNhZ2VGb3JPcmlnaW4oV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1Jl
ZiBvcgogCiB2b2lkIFdLQnVuZGxlU2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdLQnVu
ZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgb3JpZ2luLCB1aW50NjRfdCBieXRlcykKIHsK
LSAgICByZXR1cm4gdG9JbXBsKGJ1bmRsZVJlZiktPnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YSh0b0ltcGwob3JpZ2luKS0+c3RyaW5nKCksIGJ5dGVzKTsKKyAgICB0b0ltcGwoYnVuZGxl
UmVmKS0+c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRvSW1wbChvcmlnaW4pLT5zdHJp
bmcoKSwgYnl0ZXMpOworfQorCit2b2lkIFdLQnVuZGxlUmVzZXRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBvcmlnaW4pCit7Cisg
ICAgdG9JbXBsKGJ1bmRsZVJlZiktPnJlc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRv
SW1wbChvcmlnaW4pLT5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cFJlZiwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAppbmRl
eCA4YmM3NjcwLi5lYjdkZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKQEAgLTIzNiw2
ICsyMzYsNyBAQCB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTaG91bGRSdWJiZXJCYW5kSW5E
aXJlY3Rpb25DYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmCiB0eXBlZGVmIFdLQnVuZGxlUGFnZVVJ
RWxlbWVudFZpc2liaWxpdHkgKCpXS0J1bmRsZVBhZ2VTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFj
aykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRl
ZiBXS0J1bmRsZVBhZ2VVSUVsZW1lbnRWaXNpYmlsaXR5ICgqV0tCdW5kbGVQYWdlTWVudUJhcklz
VmlzaWJsZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CiB0eXBlZGVmIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgKCpXS0J1bmRs
ZVBhZ2VUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlUmVhY2hl
ZEFwcENhY2hlT3JpZ2luUXVvdGFDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU2Vj
dXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tCdW5kbGVQYWdlVUlDbGllbnQgewogICAgIGlu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmVyc2lvbjsKQEAgLTI1NCwxMCArMjU1LDEzIEBAIHN0cnVjdCBXS0J1bmRsZVBh
Z2VVSUNsaWVudCB7CiAgICAgV0tCdW5kbGVQYWdlU3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNCYXJJc1Zpc2libGU7CiAgICAgV0tC
dW5kbGVQYWdlTWVudUJhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZW51QmFySXNWaXNpYmxlOwogICAgIFdLQnVuZGxlUGFnZVRvb2xiYXJzQXJlVmlz
aWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhcnNBcmVWaXNp
YmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLQnVuZGxlUGFnZVJlYWNoZWRBcHBDYWNo
ZU9yaWdpblF1b3RhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YTsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VVSUNs
aWVudCBXS0J1bmRsZVBhZ2VVSUNsaWVudDsKIAotZW51bSB7IGtXS0J1bmRsZVBhZ2VVSUNsaWVu
dEN1cnJlbnRWZXJzaW9uID0gMCB9OworZW51bSB7IGtXS0J1bmRsZVBhZ2VVSUNsaWVudEN1cnJl
bnRWZXJzaW9uID0gMSB9OwogCiAvLyBFZGl0b3IgY2xpZW50CiB0eXBlZGVmIGJvb2wgKCpXS0J1
bmRsZVBhZ2VTaG91bGRCZWdpbkVkaXRpbmdDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKaW5kZXggZTk3OTc5MS4uOWJhM2NlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCkBAIC05OSw2ICs5OSw3IEBAIFdLX0VYUE9S
VCB2b2lkIFdLQnVuZGxlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKFdLQnVuZGxlUmVm
IGJ1bmRsZSwgV0tTdHJpCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEFwcENhY2hlTWF4aW11
bVNpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCB1aW50NjRfdCBzaXplKTsKIFdLX0VYUE9SVCB1aW50
NjRfdCBXS0J1bmRsZUdldEFwcENhY2hlVXNhZ2VGb3JPcmlnaW4oV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS1N0cmluZ1JlZiBvcmlnaW4pOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBvcmln
aW4sIHVpbnQ2NF90IGJ5dGVzKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVzZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBvcmln
aW4pOwogCiAvLyBHYXJiYWdlIGNvbGxlY3Rpb24gQVBJCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZUdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoV0tCdW5kbGVSZWYgYnVuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggY2QwNjM0OS4uYzI0ZDUxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKQEAgLTM1OCw2ICszNTgsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0QXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLAogICAg
IGNhY2hlU3RvcmFnZSgpLnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSwg
Ynl0ZXMpOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKK3sKKyAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9y
aWdpblN0cmluZyk7CisgICAgY2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmln
aW4ob3JpZ2luLmdldCgpLCBjYWNoZVN0b3JhZ2UoKS5kZWZhdWx0T3JpZ2luUXVvdGEoKSk7Cit9
CisKIGludCBJbmplY3RlZEJ1bmRsZTo6bnVtYmVyT2ZQYWdlcyhXZWJGcmFtZSogZnJhbWUsIGRv
dWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBhZ2VIZWlnaHRJblBpeGVscykKIHsKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1lKCkgOiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCmluZGV4IDZlNDAwMTMuLjY4NjIxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
QEAgLTE1MCw2ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1T
aXplKHVpbnQ2NF90KTsKICAgICB1aW50NjRfdCBhcHBDYWNoZVVzYWdlRm9yT3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luKTsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QpOworICAgIHZvaWQgcmVzZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogCiAgICAgLy8gR2Fy
YmFnZSBjb2xsZWN0aW9uIEFQSQogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2Jq
ZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAppbmRl
eCBiOGM5YzYyLi40NzZkOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJ
Q2xpZW50LmNwcApAQCAtMjgsOCArMjgsOSBAQAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAi
V2ViR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC0xNDYsNCArMTQ3LDEyIEBAIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnRvb2xiYXJzQXJlVmlzaWJsZShXCiAgICAgcmV0dXJu
IG1fY2xpZW50LnRvb2xiYXJzQXJlVmlzaWJsZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViUGFnZSogcGFnZSwgV2ViU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKQoreworICAgIGlmICghbV9jbGllbnQu
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jbGllbnQucmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0b0FQSShwYWdl
KSwgdG9BUEkob3JpZ2luKSwgdG90YWxTcGFjZU5lZWRlZCwgbV9jbGllbnQuY2xpZW50SW5mbyk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VVSUNsaWVudC5oCmluZGV4IGRlMjkyOGEuLmQxZmQwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBBUElPYmplY3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7Citj
bGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZVVJQ2xpZW50LCBrV0tCdW5kbGVQYWdl
VUlDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVibGljOgpAQCAtNjQsNiArNjUsOCBAQCBwdWJs
aWM6CiAgICAgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSBzdGF0dXNCYXJJc1Zpc2li
bGUoV2ViUGFnZSopOwogICAgIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgbWVudUJh
cklzVmlzaWJsZShXZWJQYWdlKik7CiAgICAgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0
eSB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZSopOworCisgICAgdm9pZCByZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2UqLCBXZWJTZWN1cml0eU9yaWdpbiosIGludDY0
X3QgdG90YWxTcGFjZU5lZWRlZCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAppbmRleCBjN2ZjOWE3Li4xMWJkZmJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9y
ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJTZWFyY2hQb3B1cE1l
bnUuaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QVhPYmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JDaG9vc2VyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KQEAgLTU0OSw5ICs1NTAsMTAgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QpCit2b2lkIFdl
YkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBSZWZQdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3Jp
Z2luID0gV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLT50b1N0cmlu
ZygpKTsKKyAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5yZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKG1fcGFnZSwgd2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCksIHRv
dGFsU3BhY2VOZWVkZWQpOwogfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJkZTU2NWUu
Ljk1OTI3OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wOS0xMiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlz
dG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdW1dLVFJdIFRlc3RSdW5uZXIg
bmVlZHMgdG8gaW1wbGVtZW50IGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2Mzc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
IHN1cHBvcnQgZm9yIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MKKyAgICAg
ICAgYW5kIGRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEgaW4KKyAgICAg
ICAgV2ViS2l0VGVzdFJ1bm5lciBhbmQgcHJvcGVybHkgZHVtcCB0aGUgaW5mb3JtYXRpb24KKyAg
ICAgICAgZXhwZWN0ZWQgYnkgdGhlIHRlc3RzLgorCisgICAgICAgIElmIHRoZSBhcHBsaWNhdGlv
biBjYWNoZSBxdW90YSBpcyByZWFjaGVkIGZvciBhIGdpdmVuCisgICAgICAgIHNlY3VyaXR5IG9y
aWdpbiwgV2ViS2l0VGVzdFJ1bm5lciB3aWxsIHJlc2V0IHRoZSBxdW90YQorICAgICAgICB0byBp
dHMgZGVmYXVsdCB2YWx1ZSwgdW5sZXNzIGludHJ1Y3RlZCBub3QgdG8gdmlhCisgICAgICAgIGRp
c2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxl
UGFnZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgIChXVFIpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmg6CisgICAgICAgIChJ
bmplY3RlZEJ1bmRsZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXIpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGlj
YXRpb25DYWNoZVF1b3RhKToKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MpOgorICAgICAgICAoVGVz
dFJ1bm5lcik6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3VsZERpc2FsbG93SW5jcmVh
c2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpz
aG91bGREdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKToKKwogMjAxMi0wOS0x
MSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0NNQUtF
XSBTdXBwbHkgZmVhdHVyZSBkZWZpbmVzIHRvIENvZGVHZW5lcmF0b3JUZXN0UnVubmVyLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggYTQ5NDcxOC4uNWFkOTMzYyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCkBAIC00Nyw2ICs0Nyw3IEBAIG1vZHVsZSBXVFIgewogICAgICAgICB2
b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKICAgICAgICAgdm9pZCBkdW1wUmVzb3Vy
Y2VSZXNwb25zZU1JTUVUeXBlcygpOwogICAgICAgICB2b2lkIGR1bXBXaWxsQ2FjaGVSZXNwb25z
ZSgpOworICAgICAgICB2b2lkIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3Mo
KTsKIAogICAgICAgICAvLyBTcGVjaWFsIG9wdGlvbnMuCiAgICAgICAgIHZvaWQga2VlcFdlYkhp
c3RvcnkoKTsKQEAgLTExMiw2ICsxMTMsNyBAQCBtb2R1bGUgV1RSIHsKICAgICAgICAgbG9uZyBs
b25nIGFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4oaW4gRE9NU3RyaW5nIG9yaWdp
bik7CiAgICAgICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKGluIERPTVN0
cmluZyBuYW1lKTsKICAgICAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
aW4gdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzKTsKKyAgICAgICAgdm9pZCBkaXNhbGxvd0luY3Jl
YXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKCk7CiAKICAgICAgICAgLy8gQ29tcG9zaXRpbmcg
dGVzdGluZy4KICAgICAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dCgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwCmluZGV4IDY3NDZhNzAuLmU1NTQ0NzdiIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZU5hdmln
YXRpb25BY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlTm9kZUhhbmRsZVByaXZh
dGUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQnVuZGxlUHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTZWN1cml0
eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tVUkxSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0zNDksNiAr
MzUxLDcgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UpCiAgICAgICAgIDAsIC8qc3RhdHVzQmFySXNWaXNpYmxlKi8KICAgICAgICAg
MCwgLyptZW51QmFySXNWaXNpYmxlKi8KICAgICAgICAgMCwgLyp0b29sYmFyc0FyZVZpc2libGUq
LworICAgICAgICByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhLAogICAgIH07CiAg
ICAgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQobV9wYWdlLCAmdWlDbGllbnQpOwogCkBAIC0xMzE4
LDYgKzEzMjEsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0
UHJvbXB0KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1IKICAgICBzdGF0aWNfY2FzdDxJ
bmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPndpbGxS
dW5KYXZhU2NyaXB0UHJvbXB0KG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUpOwogfQogCit2
b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGludDY0
X3QgdG90YWxTcGFjZU5lZWRlZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0
aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEob3JpZ2luLCB0b3RhbFNwYWNl
TmVlZGVkKTsKK30KKwogc3RhdGljIFdURjo6U3RyaW5nIGxhc3RGaWxlVVJMUGF0aENvbXBvbmVu
dChjb25zdCBXVEY6OlN0cmluZyYgcGF0aCkKIHsKICAgICBzaXplX3QgcG9zID0gcGF0aC5maW5k
KCJmaWxlOi8vIik7CkBAIC0xNDAyLDYgKzE0MTAsMzQgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5n
UmUKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
IlxuIik7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZWFjaGVkQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFs
U3BhY2VOZWVkZWQpCit7CisgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1
bm5lcigpLT5zaG91bGREdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIEZvciBleGFtcGxlLCBudW1iZXJzIGZyb20gMzAwMDAg
LSAzOTk5OSB3aWxsIG91dHB1dCBhcyAzMDAwMC4KKyAgICAvLyBSb3VuZGluZyB1cCBvciBkb3du
IGRvZXMgbm90IHJlYWxseSBtYXR0ZXIgZm9yIHRoZXNlIHRlc3RzLiBJdCdzCisgICAgLy8gc3Vm
ZmljaWVudCB0byBqdXN0IGdldCBhIHJhbmdlIG9mIDEwMDAwIHRvIGRldGVybWluZSBpZiB3ZSB3
ZXJlCisgICAgLy8gYWJvdmUgb3IgYmVsb3cgYSB0aHJlc2hvbGQuCisgICAgaW50NjRfdCB0cnVu
Y2F0ZWRTcGFjZU5lZWRlZCA9ICh0b3RhbFNwYWNlTmVlZGVkIC8gMTAwMDApICogMTAwMDA7CisK
KyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlVJ
IERFTEVHQVRFIEFQUExJQ0FUSU9OIENBQ0hFIENBTExCQUNLOiBleGNlZWRlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOnsiKTsKKyAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcoYWRvcHRXSyhX
S1NlY3VyaXR5T3JpZ2luQ29weVByb3RvY29sKG9yaWdpbikpKSk7CisgICAgSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIsICIpOworICAgIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyhhZG9w
dFdLKFdLU2VjdXJpdHlPcmlnaW5Db3B5SG9zdChvcmlnaW4pKSkpOworICAgIEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiLCAiKTsKKyAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoV1RGOjpTdHJpbmc6Om51
bWJlcihXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChvcmlnaW4pKSk7CisgICAgSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJ9IHRvdGFsU3BhY2VOZWVkZWQ6
fiIpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVu
ZChXVEY6OlN0cmluZzo6bnVtYmVyKHRydW5jYXRlZFNwYWNlTmVlZGVkKSk7CisgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOworCisgICAg
aWYgKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50ZXN0UnVubmVyKCktPnNob3VsZERpc2FsbG93
SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gUmVzZXQgZGVmYXVsdCBhcHBsaWNhdGlvbiBjYWNoZSBxdW90YS4KKyAgICBXS0J1bmRs
ZVJlc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5idW5kbGUoKSwgYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ29weVRvU3RyaW5nKG9yaWdpbikp
LmdldCgpKTsKK30KKwogLy8gRWRpdG9yIENsaWVudCBDYWxsYmFja3MKIAogYm9vbCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OnNob3VsZEJlZ2luRWRpdGluZyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tC
dW5kbGVSYW5nZUhhbmRsZVJlZiByYW5nZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5oCmluZGV4IDNhZDIwM2QuLjMwN2ExMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
aApAQCAtMTI0LDExICsxMjQsMTMgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCB3aWxsUnVu
SmF2YVNjcmlwdEFsZXJ0KFdLQnVuZGxlUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGlj
IHZvaWQgd2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKFdLQnVuZGxlUGFnZVJlZiwgV0tTdHJpbmdS
ZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CiAgICAgc3RhdGljIHZvaWQgd2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQoV0tCdW5kbGVQYWdl
UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2
b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tCdW5kbGVQYWdlUmVmLCBX
S1NlY3VyaXR5T3JpZ2luUmVmLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwogICAgIHZvaWQgd2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGUoV0tTdHJpbmdS
ZWYgbWVzc2FnZSwgdWludDMyX3QgbGluZU51bWJlcik7CiAgICAgdm9pZCB3aWxsU2V0U3RhdHVz
YmFyVGV4dChXS1N0cmluZ1JlZiBzdGF0dXNiYXJUZXh0KTsKICAgICB2b2lkIHdpbGxSdW5KYXZh
U2NyaXB0QWxlcnQoV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZik7CiAgICAg
dm9pZCB3aWxsUnVuSmF2YVNjcmlwdENvbmZpcm0oV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5k
bGVGcmFtZVJlZik7CiAgICAgdm9pZCB3aWxsUnVuSmF2YVNjcmlwdFByb21wdChXS1N0cmluZ1Jl
ZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdLQnVuZGxlRnJhbWVSZWYpOwor
ICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS1NlY3VyaXR5T3Jp
Z2luUmVmLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogICAgIC8vIEZ1bGwgU2NyZWVuIGNsaWVudApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggMzczNDM5ZC4u
ZTYyZWFmOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC04MCw2ICs4MCw4IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXIoKQogICAgICwgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9k
dW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyhmYWxzZSkKICAgICAsIG1fZHVtcFdpbGxDYWNo
ZVJlc3BvbnNlKGZhbHNlKQorICAgICwgbV9kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2Fs
bGJhY2tzKGZhbHNlKQorICAgICwgbV9kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNo
ZVF1b3RhKGZhbHNlKQogICAgICwgbV93YWl0VG9EdW1wKGZhbHNlKQogICAgICwgbV90ZXN0UmVw
YWludChmYWxzZSkKICAgICAsIG1fdGVzdFJlcGFpbnRTd2VlcEhvcml6b250YWxseShmYWxzZSkK
QEAgLTMyMyw2ICszMjUsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzKQogICAgIFdLQnVuZGxlU2V0QXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUo
KSwgb3JpZ2luLmdldCgpLCBieXRlcyk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6ZGlzYWxsb3dJ
bmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSgpCit7CisgICAgbV9kaXNhbGxvd0luY3Jl
YXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhID0gdHJ1ZTsKK30KKwogYm9vbCBUZXN0UnVubmVy
Ojppc0NvbW1hbmRFbmFibGVkKEpTU3RyaW5nUmVmIG5hbWUpCiB7CiAgICAgcmV0dXJuIFdLQnVu
ZGxlUGFnZUlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5w
YWdlKCktPnBhZ2UoKSwgdG9XSyhuYW1lKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDU0ZmI4NDcuLjMxZGFm
ZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MoKSB7IG1fZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyA9IHRydWU7IH0K
ICAgICB2b2lkIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgeyBtX2R1bXBSZXNvdXJj
ZVJlc3BvbnNlTUlNRVR5cGVzID0gdHJ1ZTsgfQogICAgIHZvaWQgZHVtcFdpbGxDYWNoZVJlc3Bv
bnNlKCkgeyBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZSA9IHRydWU7IH0KKyAgICB2b2lkIGR1bXBB
cHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKSB7IG1fZHVtcEFwcGxpY2F0aW9uQ2Fj
aGVEZWxlZ2F0ZUNhbGxiYWNrcyA9IHRydWU7IH0KIAogICAgIHZvaWQgc2V0U2hvdWxkRHVtcEZy
YW1lTG9hZENhbGxiYWNrcyhib29sIHZhbHVlKSB7IG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9
IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRTaG91bGREdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNr
KGJvb2wgdmFsdWUpIHsgbV9kdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrID0gdmFsdWU7IH0K
QEAgLTE0OSw2ICsxNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1T
aXplKHVpbnQ2NF90KTsKICAgICBsb25nIGxvbmcgYXBwbGljYXRpb25DYWNoZURpc2tVc2FnZUZv
ck9yaWdpbihKU1N0cmluZ1JlZiBvcmlnaW4pOwogICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyk7CisgICAgdm9pZCBkaXNhbGxvd0luY3Jl
YXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKCk7CisgICAgYm9vbCBzaG91bGREaXNhbGxvd0lu
Y3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKCkgeyByZXR1cm4gbV9kaXNhbGxvd0luY3Jl
YXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhOyB9CiAKICAgICAvLyBQcmludGluZwogICAgIGJv
b2wgaXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KTsKQEAgLTE3MSw2ICsxNzQsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29uc3Qg
eyByZXR1cm4gbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzOyB9CiAgICAgYm9vbCBzaG91bGRE
dW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFJlc291
cmNlUmVzcG9uc2VNSU1FVHlwZXM7IH0KICAgICBib29sIHNob3VsZER1bXBXaWxsQ2FjaGVSZXNw
b25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFdpbGxDYWNoZVJlc3BvbnNlOyB9CisgICAgYm9v
bCBzaG91bGREdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkgY29uc3QgeyBy
ZXR1cm4gbV9kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzOyB9CiAKICAgICBi
b29sIGlzUG9saWN5RGVsZWdhdGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wb2xpY3lEZWxl
Z2F0ZUVuYWJsZWQ7IH0KICAgICBib29sIGlzUG9saWN5RGVsZWdhdGVQZXJtaXNzaXZlKCkgY29u
c3QgeyByZXR1cm4gbV9wb2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmU7IH0KQEAgLTI2NSw2ICsyNjks
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzOwogICAg
IGJvb2wgbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlczsKICAgICBib29sIG1fZHVtcFdp
bGxDYWNoZVJlc3BvbnNlOworICAgIGJvb2wgbV9kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRl
Q2FsbGJhY2tzOworICAgIGJvb2wgbV9kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNo
ZVF1b3RhOwogICAgIGJvb2wgbV93YWl0VG9EdW1wOyAvLyBUcnVlIGlmIHdhaXRVbnRpbERvbmUo
KSBoYXMgYmVlbiBjYWxsZWQsIGJ1dCBub3RpZnlEb25lKCkgaGFzIG5vdCB5ZXQgYmVlbiBjYWxs
ZWQuCiAgICAgYm9vbCBtX3Rlc3RSZXBhaW50OwogICAgIGJvb2wgbV90ZXN0UmVwYWludFN3ZWVw
SG9yaXpvbnRhbGx5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163537</attachid>
            <date>2012-09-12 01:02:51 -0700</date>
            <delta_ts>2012-09-12 01:23:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>96374_dumpApplicationCacheCallbacks.patch</filename>
            <type>text/plain</type>
            <size>26518</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMzJiNDZkLi4zMzg0MWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDkt
MTIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXVtXS1RSXSBUZXN0UnVubmVyIG5lZWRzIHRvIGltcGxlbWVudCBkdW1wQXBwbGlj
YXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NjM3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVuc2tpcCB0ZXN0IGNhc2VzIHRoYXQgYXJlIHBhc3Npbmcgbm93
IHRoYXQgV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBpbXBsZW1lbnRzIGR1bXBBcHBsaWNhdGlv
bkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgYW5kCisgICAgICAgIGRpc2FsbG93SW5jcmVhc2VGb3JB
cHBsaWNhdGlvbkNhY2hlUXVvdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2sxL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDktMTEgIFRhaWp1IFRzdWlraSAgPHR6aWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYkZyYW1lSW1wbDo6Y2xpZW50KCkgbmVlZHMgTlVM
TCBjaGVjayBpbiBXZWJXb3JrZXJDbGllbnRJbXBsOjpvcGVuRmlsZVN5c3RlbQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGZjNjg2NGEuLjc0
NWZjZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azEvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTQ3LDYgKzQ3LDEyIEBAIEJVR1dLODQ4MzUgOiBlZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1wYXJhZ3JhcGhzLmh0bWwgPSBURVhUCiAvLyBDdXN0b20gZm9udCBsb2FkaW5nIGRlbGF5
aW5nIHRleHQgZHJhd2luZyBvbiBDYW52YXMKIEJVR1dLODczNTUgOiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5mb250ZmFjZS5ub3RpbnBhZ2UuaHRtbCA9IFRFWFQKIAorLy8gRUZM
J3MgVGVzdFJ1bm5lciBkb2VzIG5vdCBpbXBsZW1lbnQgYXBwbGljYXRpb25DYWNoZURpc2tVc2Fn
ZUZvck9yaWdpbgorQlVHV0s4NjQ2MCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXVzYWdl
Lmh0bWwgPSBURVhUCisKKy8vIEVGTCdzIFRlc3RSdW5uZXIgZG9lcyBub3QgaW1wbGVtZW50IG9y
aWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZQorQlVHV0s4NjQ5OCA6IGh0dHAvdGVzdHMvYXBwY2Fj
aGUvb3JpZ2lucy13aXRoLWFwcGNhY2hlLmh0bWwgPSBURVhUCisKIC8vIE1pc3Npbmcgc2hvd01v
ZGFsRGlhbG9nIGltcGxlbWVudGF0aW9uCiBCVUdXSzg0NTg5IDogZmFzdC9hbmltYXRpb24vcmVx
dWVzdC1hbmltYXRpb24tZnJhbWUtZHVyaW5nLW1vZGFsLmh0bWwgPSBURVhUCiBCVUdXSzg0NTg5
IDogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtY2FsbC5odG1sID0gVEVY
VApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAzNWE0M2U0Li5kOTEyNjYzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMTAzLDEyICsxMDMsNiBAQCBmYXN0L3BhcnNlci9wcmUt
aHRtbDUtcGFyc2VyLXF1aXJrcy5odG1sCiAjIEZhbGxiYWNrIHJlc291cmNlIHdhc24ndCB1c2Vk
IGZvciBhIHJlZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbgogaHR0cC90
ZXN0cy9hcHBjYWNoZS9mYWxsYmFjay5odG1sCiAKLSMgRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xs
ZXIgZG9lcyBub3QgaW1wbGVtZW50IGFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4K
LWh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXVzYWdlLmh0bWwKLQotIyBFRkwncyBMYXlvdXRU
ZXN0Q29udHJvbGxlciBkb2VzIG5vdCBpbXBsZW1lbnQgb3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNh
Y2hlCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbnMtd2l0aC1hcHBjYWNoZS5odG1sCi0KICMg
RUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgZG9lcyBub3QgaW1wbGVtZW50IHNoYWRvd1BzZXVk
b0lkCiBtZWRpYS92aWRlby1jb250cm9scy10cmFuc2Zvcm1lZC5odG1sCiBtZWRpYS92aWRlby1j
b250cm9scy12aXNpYmxlLWF1ZGlvLW9ubHkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApp
bmRleCAyMjAzZDM0Li4xNzEyMDNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMjAy
LDEyICsyMDIsNyBAQCBmYXN0L2hhcm5lc3Mvb3ZlcnJpZGUtcHJlZmVyZW5jZXMtMi5odG1sCiBm
YXN0L2ltYWdlcy9hbmltYXRlZC1naWYtcmVzdG9yZWQtZnJvbS1iZmNhY2hlLmh0bWwKIGZhc3Qv
dGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sCiAKLSMgV1RSIG5lZWRzIGFuIGltcGxlbWVudGF0aW9u
IG9mIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MKLWh0dHAvdGVzdHMvYXBw
Y2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90
YS5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxv
YWQuaHRtbAotaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25s
b2FkLW11bHRpcGxlLW1hbmlmZXN0cy5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi11
c2FnZS5odG1sCisjIFdUUiBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBvcmlnaW5zV2l0aEFw
cGxpY2F0aW9uQ2FjaGUKIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2lucy13aXRoLWFwcGNhY2hl
Lmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcERPTUFzV2ViQXJjaGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJhMjIxOTYuLmY2Y2Uy
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wOS0xMiAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdW1dLVFJd
IFRlc3RSdW5uZXIgbmVlZHMgdG8gaW1wbGVtZW50IGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdh
dGVDYWxsYmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk2Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIEJ1bmRsZSBDIEFQSSB0byByZXNldCB0aGUgYXBwbGljYXRpb24gY2FjaGUgcXVvdGEK
KyAgICAgICAgZm9yIGEgZ2l2ZW4gb3JpZ2luLgorCisgICAgICAgIEFkZCBuZXcgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSBjYWxsYmFjaworICAgICAgICB0byBXS0J1bmRsZVBh
Z2VVSUNsaWVudCB3aGljaCBpcyBjYWxsZWQgZnJvbQorICAgICAgICBXZWJDaHJvbWVDbGllbnQ6
OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoKS4KKworICAgICAgICBUaG9zZSBh
cmUgbmVlZGVkIGJ5IFdlYktpdFRlc3RSdW5uZXIgdG8gZHVtcAorICAgICAgICBpbmZvcm1hdGlv
biBhYm91dCB0aGUgYXBwbGljYXRpb24gY2FjaGUgY2FsbGJhY2tzCisgICAgICAgIGlmIGluc3Ry
dWN0ZWQgdG8uCisKKyAgICAgICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAg
ICAoV0tCdW5kbGVTZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAoV0tC
dW5kbGVSZXNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpyZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSk6CisKIDIwMTItMDktMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBzaG91bGQgYWx3
YXlzIGJlIGZvcmNlZCB3aGVuIHVzaW5nIHRoZSB0aWxlZCBkcmF3aW5nIGFyZWEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKaW5kZXggYWUxMGE1Zi4uYmZlNzkwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKQEAgLTc1LDYgKzc1
LDExIEBAIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlRm9ybUNsaWVu
dD46OmludGVyZmFjZVNpemVzQnlWZXJzaW9uW10KICAgICBzaXplb2YoV0tCdW5kbGVQYWdlRm9y
bUNsaWVudCkKIH07CiAKK2NvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdl
VUlDbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltdID0geworICAgIG9mZnNldG9mKFdL
QnVuZGxlUGFnZVVJQ2xpZW50LCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKSwK
KyAgICBzaXplb2YoV0tCdW5kbGVQYWdlVUlDbGllbnQpCit9OworCiBjb25zdCBzaXplX3QgQVBJ
Q2xpZW50VHJhaXRzPFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pjo6aW50ZXJmYWNlU2l6
ZXNCeVZlcnNpb25bXSA9IHsKICAgICBvZmZzZXRvZihXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudCwgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKSwKICAgICBzaXpl
b2YoV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
Q2xpZW50VHJhaXRzLmgKaW5kZXggNzM1MmI1Ni4uY2JjYTliMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElDbGllbnRUcmFpdHMuaApAQCAtNTQsNiArNTQsMTAgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ+IHsKICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGludGVyZmFjZVNpemVzQnlWZXJzaW9uWzJdOwogfTsKIAordGVt
cGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZVVJQ2xpZW50PiB7Cisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvblsyXTsKK307CisK
IHRlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS1BhZ2VDb250ZXh0TWVudUNsaWVu
dD4gewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bM107
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCAxNGZjY2RjLi5mNjEzYzhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlLmNwcApAQCAtMjQ4LDcgKzI0OCwxMiBAQCB1aW50NjRfdCBXS0J1bmRsZUdl
dEFwcENhY2hlVXNhZ2VGb3JPcmlnaW4oV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1Jl
ZiBvcgogCiB2b2lkIFdLQnVuZGxlU2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdLQnVu
ZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgb3JpZ2luLCB1aW50NjRfdCBieXRlcykKIHsK
LSAgICByZXR1cm4gdG9JbXBsKGJ1bmRsZVJlZiktPnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YSh0b0ltcGwob3JpZ2luKS0+c3RyaW5nKCksIGJ5dGVzKTsKKyAgICB0b0ltcGwoYnVuZGxl
UmVmKS0+c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRvSW1wbChvcmlnaW4pLT5zdHJp
bmcoKSwgYnl0ZXMpOworfQorCit2b2lkIFdLQnVuZGxlUmVzZXRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBvcmlnaW4pCit7Cisg
ICAgdG9JbXBsKGJ1bmRsZVJlZiktPnJlc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRv
SW1wbChvcmlnaW4pLT5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cFJlZiwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAppbmRl
eCA4YmM3NjcwLi5jY2MxZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKQEAgLTIzNiw2
ICsyMzYsNyBAQCB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTaG91bGRSdWJiZXJCYW5kSW5E
aXJlY3Rpb25DYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmCiB0eXBlZGVmIFdLQnVuZGxlUGFnZVVJ
RWxlbWVudFZpc2liaWxpdHkgKCpXS0J1bmRsZVBhZ2VTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFj
aykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRl
ZiBXS0J1bmRsZVBhZ2VVSUVsZW1lbnRWaXNpYmlsaXR5ICgqV0tCdW5kbGVQYWdlTWVudUJhcklz
VmlzaWJsZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CiB0eXBlZGVmIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgKCpXS0J1bmRs
ZVBhZ2VUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlUmVhY2hl
ZEFwcENhY2hlT3JpZ2luUXVvdGFDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU2Vj
dXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tCdW5kbGVQYWdlVUlDbGllbnQgewogICAgIGlu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmVyc2lvbjsKQEAgLTI1NCwxMCArMjU1LDEzIEBAIHN0cnVjdCBXS0J1bmRsZVBh
Z2VVSUNsaWVudCB7CiAgICAgV0tCdW5kbGVQYWdlU3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNCYXJJc1Zpc2libGU7CiAgICAgV0tC
dW5kbGVQYWdlTWVudUJhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZW51QmFySXNWaXNpYmxlOwogICAgIFdLQnVuZGxlUGFnZVRvb2xiYXJzQXJlVmlz
aWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhcnNBcmVWaXNp
YmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLQnVuZGxlUGFnZVJlYWNoZWRBcHBDYWNo
ZU9yaWdpblF1b3RhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YTsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VVSUNs
aWVudCBXS0J1bmRsZVBhZ2VVSUNsaWVudDsKIAotZW51bSB7IGtXS0J1bmRsZVBhZ2VVSUNsaWVu
dEN1cnJlbnRWZXJzaW9uID0gMCB9OworZW51bSB7IGtXS0J1bmRsZVBhZ2VVSUNsaWVudEN1cnJl
bnRWZXJzaW9uID0gMSB9OwogCiAvLyBFZGl0b3IgY2xpZW50CiB0eXBlZGVmIGJvb2wgKCpXS0J1
bmRsZVBhZ2VTaG91bGRCZWdpbkVkaXRpbmdDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKaW5kZXggZTk3OTc5MS4uOWJhM2NlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCkBAIC05OSw2ICs5OSw3IEBAIFdLX0VYUE9S
VCB2b2lkIFdLQnVuZGxlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKFdLQnVuZGxlUmVm
IGJ1bmRsZSwgV0tTdHJpCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEFwcENhY2hlTWF4aW11
bVNpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCB1aW50NjRfdCBzaXplKTsKIFdLX0VYUE9SVCB1aW50
NjRfdCBXS0J1bmRsZUdldEFwcENhY2hlVXNhZ2VGb3JPcmlnaW4oV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS1N0cmluZ1JlZiBvcmlnaW4pOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBvcmln
aW4sIHVpbnQ2NF90IGJ5dGVzKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVzZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBvcmln
aW4pOwogCiAvLyBHYXJiYWdlIGNvbGxlY3Rpb24gQVBJCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZUdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoV0tCdW5kbGVSZWYgYnVuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggY2QwNjM0OS4uYzI0ZDUxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKQEAgLTM1OCw2ICszNTgsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0QXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLAogICAg
IGNhY2hlU3RvcmFnZSgpLnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSwg
Ynl0ZXMpOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKK3sKKyAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9y
aWdpblN0cmluZyk7CisgICAgY2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmln
aW4ob3JpZ2luLmdldCgpLCBjYWNoZVN0b3JhZ2UoKS5kZWZhdWx0T3JpZ2luUXVvdGEoKSk7Cit9
CisKIGludCBJbmplY3RlZEJ1bmRsZTo6bnVtYmVyT2ZQYWdlcyhXZWJGcmFtZSogZnJhbWUsIGRv
dWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBhZ2VIZWlnaHRJblBpeGVscykKIHsKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1lKCkgOiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCmluZGV4IDZlNDAwMTMuLjY4NjIxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
QEAgLTE1MCw2ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1T
aXplKHVpbnQ2NF90KTsKICAgICB1aW50NjRfdCBhcHBDYWNoZVVzYWdlRm9yT3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luKTsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QpOworICAgIHZvaWQgcmVzZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogCiAgICAgLy8gR2Fy
YmFnZSBjb2xsZWN0aW9uIEFQSQogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2Jq
ZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAppbmRl
eCBiOGM5YzYyLi4zMWU5YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJ
Q2xpZW50LmNwcApAQCAtMjgsOCArMjgsOSBAQAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAi
V2ViR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC0xNDYsNCArMTQ3LDEyIEBAIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnRvb2xiYXJzQXJlVmlzaWJsZShXCiAgICAgcmV0dXJu
IG1fY2xpZW50LnRvb2xiYXJzQXJlVmlzaWJsZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViUGFnZSogcGFnZSwgV2ViU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKQoreworICAgIGlmICghbV9jbGllbnQu
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jbGllbnQucmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0b0FQSShwYWdl
KSwgdG9BUEkob3JpZ2luKSwgdG90YWxCeXRlc05lZWRlZCwgbV9jbGllbnQuY2xpZW50SW5mbyk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VVSUNsaWVudC5oCmluZGV4IGRlMjkyOGEuLmZhNTVmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBBUElPYmplY3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7Citj
bGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZVVJQ2xpZW50LCBrV0tCdW5kbGVQYWdl
VUlDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVibGljOgpAQCAtNjQsNiArNjUsOCBAQCBwdWJs
aWM6CiAgICAgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSBzdGF0dXNCYXJJc1Zpc2li
bGUoV2ViUGFnZSopOwogICAgIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgbWVudUJh
cklzVmlzaWJsZShXZWJQYWdlKik7CiAgICAgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0
eSB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZSopOworCisgICAgdm9pZCByZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2UqLCBXZWJTZWN1cml0eU9yaWdpbiosIGludDY0
X3QgdG90YWxCeXRlc05lZWRlZCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAppbmRleCBjN2ZjOWE3Li4wYTU3ZDIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9y
ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJTZWFyY2hQb3B1cE1l
bnUuaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QVhPYmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JDaG9vc2VyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KQEAgLTU0OSw5ICs1NTAsMTAgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QpCit2b2lkIFdl
YkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBSZWZQdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3Jp
Z2luID0gV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLT50b1N0cmlu
ZygpKTsKKyAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5yZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKG1fcGFnZSwgd2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCksIHRv
dGFsQnl0ZXNOZWVkZWQpOwogfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJkZTU2NWUu
Ljk1OTI3OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wOS0xMiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlz
dG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdW1dLVFJdIFRlc3RSdW5uZXIg
bmVlZHMgdG8gaW1wbGVtZW50IGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2Mzc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
IHN1cHBvcnQgZm9yIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MKKyAgICAg
ICAgYW5kIGRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEgaW4KKyAgICAg
ICAgV2ViS2l0VGVzdFJ1bm5lciBhbmQgcHJvcGVybHkgZHVtcCB0aGUgaW5mb3JtYXRpb24KKyAg
ICAgICAgZXhwZWN0ZWQgYnkgdGhlIHRlc3RzLgorCisgICAgICAgIElmIHRoZSBhcHBsaWNhdGlv
biBjYWNoZSBxdW90YSBpcyByZWFjaGVkIGZvciBhIGdpdmVuCisgICAgICAgIHNlY3VyaXR5IG9y
aWdpbiwgV2ViS2l0VGVzdFJ1bm5lciB3aWxsIHJlc2V0IHRoZSBxdW90YQorICAgICAgICB0byBp
dHMgZGVmYXVsdCB2YWx1ZSwgdW5sZXNzIGludHJ1Y3RlZCBub3QgdG8gdmlhCisgICAgICAgIGRp
c2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxl
UGFnZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgIChXVFIpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmg6CisgICAgICAgIChJ
bmplY3RlZEJ1bmRsZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXIpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGlj
YXRpb25DYWNoZVF1b3RhKToKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MpOgorICAgICAgICAoVGVz
dFJ1bm5lcik6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3VsZERpc2FsbG93SW5jcmVh
c2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpz
aG91bGREdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKToKKwogMjAxMi0wOS0x
MSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0NNQUtF
XSBTdXBwbHkgZmVhdHVyZSBkZWZpbmVzIHRvIENvZGVHZW5lcmF0b3JUZXN0UnVubmVyLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggYTQ5NDcxOC4uNWFkOTMzYyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCkBAIC00Nyw2ICs0Nyw3IEBAIG1vZHVsZSBXVFIgewogICAgICAgICB2
b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKICAgICAgICAgdm9pZCBkdW1wUmVzb3Vy
Y2VSZXNwb25zZU1JTUVUeXBlcygpOwogICAgICAgICB2b2lkIGR1bXBXaWxsQ2FjaGVSZXNwb25z
ZSgpOworICAgICAgICB2b2lkIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3Mo
KTsKIAogICAgICAgICAvLyBTcGVjaWFsIG9wdGlvbnMuCiAgICAgICAgIHZvaWQga2VlcFdlYkhp
c3RvcnkoKTsKQEAgLTExMiw2ICsxMTMsNyBAQCBtb2R1bGUgV1RSIHsKICAgICAgICAgbG9uZyBs
b25nIGFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4oaW4gRE9NU3RyaW5nIG9yaWdp
bik7CiAgICAgICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKGluIERPTVN0
cmluZyBuYW1lKTsKICAgICAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
aW4gdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzKTsKKyAgICAgICAgdm9pZCBkaXNhbGxvd0luY3Jl
YXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKCk7CiAKICAgICAgICAgLy8gQ29tcG9zaXRpbmcg
dGVzdGluZy4KICAgICAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dCgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwCmluZGV4IDY3NDZhNzAuLjQxZjUyMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0
ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tCdW5kbGVQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1NlY3VyaXR5
T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTFJlcXVlc3QuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTM0OSw2ICsz
NTEsNyBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSkKICAgICAgICAgMCwgLypzdGF0dXNCYXJJc1Zpc2libGUqLwogICAgICAgICAw
LCAvKm1lbnVCYXJJc1Zpc2libGUqLwogICAgICAgICAwLCAvKnRvb2xiYXJzQXJlVmlzaWJsZSov
CisgICAgICAgIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEsCiAgICAgfTsKICAg
ICBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChtX3BhZ2UsICZ1aUNsaWVudCk7CiAKQEAgLTEzMTgs
NiArMTMyMSwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRQ
cm9tcHQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUgogICAgIHN0YXRpY19jYXN0PElu
amVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+d2lsbFJ1
bkphdmFTY3JpcHRQcm9tcHQobWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSk7CiB9CiAKK3Zv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgaW50NjRf
dCB0b3RhbEJ5dGVzTmVlZGVkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRp
Y19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KS0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShvcmlnaW4sIHRvdGFsQnl0ZXNO
ZWVkZWQpOworfQorCiBzdGF0aWMgV1RGOjpTdHJpbmcgbGFzdEZpbGVVUkxQYXRoQ29tcG9uZW50
KGNvbnN0IFdURjo6U3RyaW5nJiBwYXRoKQogewogICAgIHNpemVfdCBwb3MgPSBwYXRoLmZpbmQo
ImZpbGU6Ly8iKTsKQEAgLTE0MDIsNiArMTQxMCwzNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQoV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdS
ZQogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
XG4iKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlYWNoZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGludDY0X3QgdG90YWxC
eXRlc05lZWRlZCkKK3sKKyAgICBpZiAoIUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50ZXN0UnVu
bmVyKCktPnNob3VsZER1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRm9yIGV4YW1wbGUsIG51bWJlcnMgZnJvbSAzMDAwMCAt
IDM5OTk5IHdpbGwgb3V0cHV0IGFzIDMwMDAwLgorICAgIC8vIFJvdW5kaW5nIHVwIG9yIGRvd24g
ZG9lcyBub3QgcmVhbGx5IG1hdHRlciBmb3IgdGhlc2UgdGVzdHMuIEl0J3MKKyAgICAvLyBzdWZm
aWNpZW50IHRvIGp1c3QgZ2V0IGEgcmFuZ2Ugb2YgMTAwMDAgdG8gZGV0ZXJtaW5lIGlmIHdlIHdl
cmUKKyAgICAvLyBhYm92ZSBvciBiZWxvdyBhIHRocmVzaG9sZC4KKyAgICBpbnQ2NF90IHRydW5j
YXRlZFNwYWNlTmVlZGVkID0gKHRvdGFsQnl0ZXNOZWVkZWQgLyAxMDAwMCkgKiAxMDAwMDsKKwor
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiVUkg
REVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4Y2VlZGVkQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46eyIpOworICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyhhZG9wdFdLKFdL
U2VjdXJpdHlPcmlnaW5Db3B5UHJvdG9jb2wob3JpZ2luKSkpKTsKKyAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiwgIik7CisgICAgSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3RyaW5nKGFkb3B0
V0soV0tTZWN1cml0eU9yaWdpbkNvcHlIb3N0KG9yaWdpbikpKSk7CisgICAgSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIsICIpOworICAgIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChXVEY6OlN0cmluZzo6bnVt
YmVyKFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KG9yaWdpbikpKTsKKyAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIn0gdG90YWxTcGFjZU5lZWRlZDp+
Iik7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5k
KFdURjo6U3RyaW5nOjpudW1iZXIodHJ1bmNhdGVkU3BhY2VOZWVkZWQpKTsKKyAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlxuIik7CisKKyAgICBp
ZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIoKS0+c2hvdWxkRGlzYWxsb3dJ
bmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBSZXNldCBkZWZhdWx0IGFwcGxpY2F0aW9uIGNhY2hlIHF1b3RhLgorICAgIFdLQnVuZGxl
UmVzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LmJ1bmRsZSgpLCBhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5Db3B5VG9TdHJpbmcob3JpZ2luKSku
Z2V0KCkpOworfQorCiAvLyBFZGl0b3IgQ2xpZW50IENhbGxiYWNrcwogCiBib29sIEluamVjdGVk
QnVuZGxlUGFnZTo6c2hvdWxkQmVnaW5FZGl0aW5nKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1
bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmgKaW5kZXggM2FkMjAzZC4uZGMxYzE2MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5o
CkBAIC0xMjQsMTEgKzEyNCwxMyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHdpbGxSdW5K
YXZhU2NyaXB0QWxlcnQoV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMg
dm9pZCB3aWxsUnVuSmF2YVNjcmlwdENvbmZpcm0oV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBtZXNzYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUnVuSmF2YVNjcmlwdFByb21wdChXS0J1bmRsZVBhZ2VS
ZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1ZSwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS0J1bmRsZVBhZ2VSZWYsIFdL
U2VjdXJpdHlPcmlnaW5SZWYsIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiAgICAgdm9pZCB3aWxsQWRkTWVzc2FnZVRvQ29uc29sZShXS1N0cmluZ1Jl
ZiBtZXNzYWdlLCB1aW50MzJfdCBsaW5lTnVtYmVyKTsKICAgICB2b2lkIHdpbGxTZXRTdGF0dXNi
YXJUZXh0KFdLU3RyaW5nUmVmIHN0YXR1c2JhclRleHQpOwogICAgIHZvaWQgd2lsbFJ1bkphdmFT
Y3JpcHRBbGVydChXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0J1bmRsZUZyYW1lUmVmKTsKICAgICB2
b2lkIHdpbGxSdW5KYXZhU2NyaXB0Q29uZmlybShXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0J1bmRs
ZUZyYW1lUmVmKTsKICAgICB2b2lkIHdpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KFdLU3RyaW5nUmVm
IG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1ZSwgV0tCdW5kbGVGcmFtZVJlZik7Cisg
ICAgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdLU2VjdXJpdHlPcmln
aW5SZWYsIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCiAgICAgLy8gRnVsbCBTY3JlZW4gY2xpZW50CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAzNzM0MzlkLi5l
NjJlYWY5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKQEAgLTgwLDYgKzgwLDggQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5l
cigpCiAgICAgLCBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1
bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKGZhbHNlKQogICAgICwgbV9kdW1wV2lsbENhY2hl
UmVzcG9uc2UoZmFsc2UpCisgICAgLCBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxs
YmFja3MoZmFsc2UpCisgICAgLCBtX2Rpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hl
UXVvdGEoZmFsc2UpCiAgICAgLCBtX3dhaXRUb0R1bXAoZmFsc2UpCiAgICAgLCBtX3Rlc3RSZXBh
aW50KGZhbHNlKQogICAgICwgbV90ZXN0UmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5KGZhbHNlKQpA
QCAtMzIzLDYgKzMyNSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXMpCiAgICAgV0tCdW5kbGVTZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgp
LCBvcmlnaW4uZ2V0KCksIGJ5dGVzKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpkaXNhbGxvd0lu
Y3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKCkKK3sKKyAgICBtX2Rpc2FsbG93SW5jcmVh
c2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEgPSB0cnVlOworfQorCiBib29sIFRlc3RSdW5uZXI6
OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFtZSkKIHsKICAgICByZXR1cm4gV0tCdW5k
bGVQYWdlSXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBh
Z2UoKS0+cGFnZSgpLCB0b1dLKG5hbWUpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggNTRmYjg0Ny4uMzFkYWZk
MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcFJlc291cmNl
TG9hZENhbGxiYWNrcygpIHsgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZTsgfQog
ICAgIHZvaWQgZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKSB7IG1fZHVtcFJlc291cmNl
UmVzcG9uc2VNSU1FVHlwZXMgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1wV2lsbENhY2hlUmVzcG9u
c2UoKSB7IG1fZHVtcFdpbGxDYWNoZVJlc3BvbnNlID0gdHJ1ZTsgfQorICAgIHZvaWQgZHVtcEFw
cGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpIHsgbV9kdW1wQXBwbGljYXRpb25DYWNo
ZURlbGVnYXRlQ2FsbGJhY2tzID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRTaG91bGREdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzKGJvb2wgdmFsdWUpIHsgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzID0g
dmFsdWU7IH0KICAgICB2b2lkIHNldFNob3VsZER1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2so
Ym9vbCB2YWx1ZSkgeyBtX2R1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2sgPSB2YWx1ZTsgfQpA
QCAtMTQ5LDYgKzE1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFwcENhY2hlTWF4aW11bVNp
emUodWludDY0X3QpOwogICAgIGxvbmcgbG9uZyBhcHBsaWNhdGlvbkNhY2hlRGlza1VzYWdlRm9y
T3JpZ2luKEpTU3RyaW5nUmVmIG9yaWdpbik7CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nKTsKKyAgICB2b2lkIGRpc2FsbG93SW5jcmVh
c2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKTsKKyAgICBib29sIHNob3VsZERpc2FsbG93SW5j
cmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKSB7IHJldHVybiBtX2Rpc2FsbG93SW5jcmVh
c2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGE7IH0KIAogICAgIC8vIFByaW50aW5nCiAgICAgYm9v
bCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpOwpAQCAtMTcxLDYgKzE3NCw3IEBAIHB1
YmxpYzoKICAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7
IHJldHVybiBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7IH0KICAgICBib29sIHNob3VsZER1
bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wUmVzb3Vy
Y2VSZXNwb25zZU1JTUVUeXBlczsgfQogICAgIGJvb2wgc2hvdWxkRHVtcFdpbGxDYWNoZVJlc3Bv
bnNlKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wV2lsbENhY2hlUmVzcG9uc2U7IH0KKyAgICBib29s
IHNob3VsZER1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKSBjb25zdCB7IHJl
dHVybiBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3M7IH0KIAogICAgIGJv
b2wgaXNQb2xpY3lEZWxlZ2F0ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BvbGljeURlbGVn
YXRlRW5hYmxlZDsgfQogICAgIGJvb2wgaXNQb2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmUoKSBjb25z
dCB7IHJldHVybiBtX3BvbGljeURlbGVnYXRlUGVybWlzc2l2ZTsgfQpAQCAtMjY1LDYgKzI2OSw4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7CiAgICAg
Ym9vbCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzOwogICAgIGJvb2wgbV9kdW1wV2ls
bENhY2hlUmVzcG9uc2U7CisgICAgYm9vbCBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVD
YWxsYmFja3M7CisgICAgYm9vbCBtX2Rpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hl
UXVvdGE7CiAgICAgYm9vbCBtX3dhaXRUb0R1bXA7IC8vIFRydWUgaWYgd2FpdFVudGlsRG9uZSgp
IGhhcyBiZWVuIGNhbGxlZCwgYnV0IG5vdGlmeURvbmUoKSBoYXMgbm90IHlldCBiZWVuIGNhbGxl
ZC4KICAgICBib29sIG1fdGVzdFJlcGFpbnQ7CiAgICAgYm9vbCBtX3Rlc3RSZXBhaW50U3dlZXBI
b3Jpem9udGFsbHk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163540</attachid>
            <date>2012-09-12 01:23:33 -0700</date>
            <delta_ts>2012-09-12 01:37:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>96374_dumpApplicationCacheCallbacks.patch</filename>
            <type>text/plain</type>
            <size>26553</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMzJiNDZkLi4zMzg0MWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDkt
MTIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXVtXS1RSXSBUZXN0UnVubmVyIG5lZWRzIHRvIGltcGxlbWVudCBkdW1wQXBwbGlj
YXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NjM3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVuc2tpcCB0ZXN0IGNhc2VzIHRoYXQgYXJlIHBhc3Npbmcgbm93
IHRoYXQgV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBpbXBsZW1lbnRzIGR1bXBBcHBsaWNhdGlv
bkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgYW5kCisgICAgICAgIGRpc2FsbG93SW5jcmVhc2VGb3JB
cHBsaWNhdGlvbkNhY2hlUXVvdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2sxL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDktMTEgIFRhaWp1IFRzdWlraSAgPHR6aWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYkZyYW1lSW1wbDo6Y2xpZW50KCkgbmVlZHMgTlVM
TCBjaGVjayBpbiBXZWJXb3JrZXJDbGllbnRJbXBsOjpvcGVuRmlsZVN5c3RlbQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGZjNjg2NGEuLjc0
NWZjZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azEvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTQ3LDYgKzQ3LDEyIEBAIEJVR1dLODQ4MzUgOiBlZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1wYXJhZ3JhcGhzLmh0bWwgPSBURVhUCiAvLyBDdXN0b20gZm9udCBsb2FkaW5nIGRlbGF5
aW5nIHRleHQgZHJhd2luZyBvbiBDYW52YXMKIEJVR1dLODczNTUgOiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5mb250ZmFjZS5ub3RpbnBhZ2UuaHRtbCA9IFRFWFQKIAorLy8gRUZM
J3MgVGVzdFJ1bm5lciBkb2VzIG5vdCBpbXBsZW1lbnQgYXBwbGljYXRpb25DYWNoZURpc2tVc2Fn
ZUZvck9yaWdpbgorQlVHV0s4NjQ2MCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXVzYWdl
Lmh0bWwgPSBURVhUCisKKy8vIEVGTCdzIFRlc3RSdW5uZXIgZG9lcyBub3QgaW1wbGVtZW50IG9y
aWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZQorQlVHV0s4NjQ5OCA6IGh0dHAvdGVzdHMvYXBwY2Fj
aGUvb3JpZ2lucy13aXRoLWFwcGNhY2hlLmh0bWwgPSBURVhUCisKIC8vIE1pc3Npbmcgc2hvd01v
ZGFsRGlhbG9nIGltcGxlbWVudGF0aW9uCiBCVUdXSzg0NTg5IDogZmFzdC9hbmltYXRpb24vcmVx
dWVzdC1hbmltYXRpb24tZnJhbWUtZHVyaW5nLW1vZGFsLmh0bWwgPSBURVhUCiBCVUdXSzg0NTg5
IDogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtY2FsbC5odG1sID0gVEVY
VApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAzNWE0M2U0Li5kOTEyNjYzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMTAzLDEyICsxMDMsNiBAQCBmYXN0L3BhcnNlci9wcmUt
aHRtbDUtcGFyc2VyLXF1aXJrcy5odG1sCiAjIEZhbGxiYWNrIHJlc291cmNlIHdhc24ndCB1c2Vk
IGZvciBhIHJlZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbgogaHR0cC90
ZXN0cy9hcHBjYWNoZS9mYWxsYmFjay5odG1sCiAKLSMgRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xs
ZXIgZG9lcyBub3QgaW1wbGVtZW50IGFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4K
LWh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXVzYWdlLmh0bWwKLQotIyBFRkwncyBMYXlvdXRU
ZXN0Q29udHJvbGxlciBkb2VzIG5vdCBpbXBsZW1lbnQgb3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNh
Y2hlCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbnMtd2l0aC1hcHBjYWNoZS5odG1sCi0KICMg
RUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgZG9lcyBub3QgaW1wbGVtZW50IHNoYWRvd1BzZXVk
b0lkCiBtZWRpYS92aWRlby1jb250cm9scy10cmFuc2Zvcm1lZC5odG1sCiBtZWRpYS92aWRlby1j
b250cm9scy12aXNpYmxlLWF1ZGlvLW9ubHkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApp
bmRleCAyMjAzZDM0Li4xNzEyMDNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMjAy
LDEyICsyMDIsNyBAQCBmYXN0L2hhcm5lc3Mvb3ZlcnJpZGUtcHJlZmVyZW5jZXMtMi5odG1sCiBm
YXN0L2ltYWdlcy9hbmltYXRlZC1naWYtcmVzdG9yZWQtZnJvbS1iZmNhY2hlLmh0bWwKIGZhc3Qv
dGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sCiAKLSMgV1RSIG5lZWRzIGFuIGltcGxlbWVudGF0aW9u
IG9mIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MKLWh0dHAvdGVzdHMvYXBw
Y2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90
YS5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxv
YWQuaHRtbAotaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25s
b2FkLW11bHRpcGxlLW1hbmlmZXN0cy5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi11
c2FnZS5odG1sCisjIFdUUiBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBvcmlnaW5zV2l0aEFw
cGxpY2F0aW9uQ2FjaGUKIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2lucy13aXRoLWFwcGNhY2hl
Lmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcERPTUFzV2ViQXJjaGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJhMjIxOTYuLmY2Y2Uy
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wOS0xMiAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdW1dLVFJd
IFRlc3RSdW5uZXIgbmVlZHMgdG8gaW1wbGVtZW50IGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdh
dGVDYWxsYmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk2Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIEJ1bmRsZSBDIEFQSSB0byByZXNldCB0aGUgYXBwbGljYXRpb24gY2FjaGUgcXVvdGEK
KyAgICAgICAgZm9yIGEgZ2l2ZW4gb3JpZ2luLgorCisgICAgICAgIEFkZCBuZXcgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSBjYWxsYmFjaworICAgICAgICB0byBXS0J1bmRsZVBh
Z2VVSUNsaWVudCB3aGljaCBpcyBjYWxsZWQgZnJvbQorICAgICAgICBXZWJDaHJvbWVDbGllbnQ6
OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoKS4KKworICAgICAgICBUaG9zZSBh
cmUgbmVlZGVkIGJ5IFdlYktpdFRlc3RSdW5uZXIgdG8gZHVtcAorICAgICAgICBpbmZvcm1hdGlv
biBhYm91dCB0aGUgYXBwbGljYXRpb24gY2FjaGUgY2FsbGJhY2tzCisgICAgICAgIGlmIGluc3Ry
dWN0ZWQgdG8uCisKKyAgICAgICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAg
ICAoV0tCdW5kbGVTZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAoV0tC
dW5kbGVSZXNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpyZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSk6CisKIDIwMTItMDktMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBzaG91bGQgYWx3
YXlzIGJlIGZvcmNlZCB3aGVuIHVzaW5nIHRoZSB0aWxlZCBkcmF3aW5nIGFyZWEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKaW5kZXggYWUxMGE1Zi4uYmZlNzkwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKQEAgLTc1LDYgKzc1
LDExIEBAIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlRm9ybUNsaWVu
dD46OmludGVyZmFjZVNpemVzQnlWZXJzaW9uW10KICAgICBzaXplb2YoV0tCdW5kbGVQYWdlRm9y
bUNsaWVudCkKIH07CiAKK2NvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdl
VUlDbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltdID0geworICAgIG9mZnNldG9mKFdL
QnVuZGxlUGFnZVVJQ2xpZW50LCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKSwK
KyAgICBzaXplb2YoV0tCdW5kbGVQYWdlVUlDbGllbnQpCit9OworCiBjb25zdCBzaXplX3QgQVBJ
Q2xpZW50VHJhaXRzPFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pjo6aW50ZXJmYWNlU2l6
ZXNCeVZlcnNpb25bXSA9IHsKICAgICBvZmZzZXRvZihXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudCwgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKSwKICAgICBzaXpl
b2YoV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
Q2xpZW50VHJhaXRzLmgKaW5kZXggNzM1MmI1Ni4uY2JjYTliMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElDbGllbnRUcmFpdHMuaApAQCAtNTQsNiArNTQsMTAgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQ+IHsKICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGludGVyZmFjZVNpemVzQnlWZXJzaW9uWzJdOwogfTsKIAordGVt
cGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZVVJQ2xpZW50PiB7Cisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvblsyXTsKK307CisK
IHRlbXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS1BhZ2VDb250ZXh0TWVudUNsaWVu
dD4gewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bM107
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCAxNGZjY2RjLi5mNjEzYzhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlLmNwcApAQCAtMjQ4LDcgKzI0OCwxMiBAQCB1aW50NjRfdCBXS0J1bmRsZUdl
dEFwcENhY2hlVXNhZ2VGb3JPcmlnaW4oV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1Jl
ZiBvcgogCiB2b2lkIFdLQnVuZGxlU2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdLQnVu
ZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgb3JpZ2luLCB1aW50NjRfdCBieXRlcykKIHsK
LSAgICByZXR1cm4gdG9JbXBsKGJ1bmRsZVJlZiktPnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YSh0b0ltcGwob3JpZ2luKS0+c3RyaW5nKCksIGJ5dGVzKTsKKyAgICB0b0ltcGwoYnVuZGxl
UmVmKS0+c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRvSW1wbChvcmlnaW4pLT5zdHJp
bmcoKSwgYnl0ZXMpOworfQorCit2b2lkIFdLQnVuZGxlUmVzZXRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBvcmlnaW4pCit7Cisg
ICAgdG9JbXBsKGJ1bmRsZVJlZiktPnJlc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRv
SW1wbChvcmlnaW4pLT5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cFJlZiwgZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAppbmRl
eCA4YmM3NjcwLi5jY2MxZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKQEAgLTIzNiw2
ICsyMzYsNyBAQCB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VTaG91bGRSdWJiZXJCYW5kSW5E
aXJlY3Rpb25DYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmCiB0eXBlZGVmIFdLQnVuZGxlUGFnZVVJ
RWxlbWVudFZpc2liaWxpdHkgKCpXS0J1bmRsZVBhZ2VTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFj
aykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRl
ZiBXS0J1bmRsZVBhZ2VVSUVsZW1lbnRWaXNpYmlsaXR5ICgqV0tCdW5kbGVQYWdlTWVudUJhcklz
VmlzaWJsZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CiB0eXBlZGVmIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgKCpXS0J1bmRs
ZVBhZ2VUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlUmVhY2hl
ZEFwcENhY2hlT3JpZ2luUXVvdGFDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU2Vj
dXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tCdW5kbGVQYWdlVUlDbGllbnQgewogICAgIGlu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmVyc2lvbjsKQEAgLTI1NCwxMCArMjU1LDEzIEBAIHN0cnVjdCBXS0J1bmRsZVBh
Z2VVSUNsaWVudCB7CiAgICAgV0tCdW5kbGVQYWdlU3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNCYXJJc1Zpc2libGU7CiAgICAgV0tC
dW5kbGVQYWdlTWVudUJhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZW51QmFySXNWaXNpYmxlOwogICAgIFdLQnVuZGxlUGFnZVRvb2xiYXJzQXJlVmlz
aWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhcnNBcmVWaXNp
YmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLQnVuZGxlUGFnZVJlYWNoZWRBcHBDYWNo
ZU9yaWdpblF1b3RhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YTsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VVSUNs
aWVudCBXS0J1bmRsZVBhZ2VVSUNsaWVudDsKIAotZW51bSB7IGtXS0J1bmRsZVBhZ2VVSUNsaWVu
dEN1cnJlbnRWZXJzaW9uID0gMCB9OworZW51bSB7IGtXS0J1bmRsZVBhZ2VVSUNsaWVudEN1cnJl
bnRWZXJzaW9uID0gMSB9OwogCiAvLyBFZGl0b3IgY2xpZW50CiB0eXBlZGVmIGJvb2wgKCpXS0J1
bmRsZVBhZ2VTaG91bGRCZWdpbkVkaXRpbmdDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKaW5kZXggZTk3OTc5MS4uOWJhM2NlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCkBAIC05OSw2ICs5OSw3IEBAIFdLX0VYUE9S
VCB2b2lkIFdLQnVuZGxlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKFdLQnVuZGxlUmVm
IGJ1bmRsZSwgV0tTdHJpCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEFwcENhY2hlTWF4aW11
bVNpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCB1aW50NjRfdCBzaXplKTsKIFdLX0VYUE9SVCB1aW50
NjRfdCBXS0J1bmRsZUdldEFwcENhY2hlVXNhZ2VGb3JPcmlnaW4oV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS1N0cmluZ1JlZiBvcmlnaW4pOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBvcmln
aW4sIHVpbnQ2NF90IGJ5dGVzKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVzZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBvcmln
aW4pOwogCiAvLyBHYXJiYWdlIGNvbGxlY3Rpb24gQVBJCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZUdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoV0tCdW5kbGVSZWYgYnVuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggY2QwNjM0OS4uYzI0ZDUxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKQEAgLTM1OCw2ICszNTgsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0QXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLAogICAg
IGNhY2hlU3RvcmFnZSgpLnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSwg
Ynl0ZXMpOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKK3sKKyAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9y
aWdpblN0cmluZyk7CisgICAgY2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmln
aW4ob3JpZ2luLmdldCgpLCBjYWNoZVN0b3JhZ2UoKS5kZWZhdWx0T3JpZ2luUXVvdGEoKSk7Cit9
CisKIGludCBJbmplY3RlZEJ1bmRsZTo6bnVtYmVyT2ZQYWdlcyhXZWJGcmFtZSogZnJhbWUsIGRv
dWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBhZ2VIZWlnaHRJblBpeGVscykKIHsKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1lKCkgOiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCmluZGV4IDZlNDAwMTMuLjY4NjIxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
QEAgLTE1MCw2ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1T
aXplKHVpbnQ2NF90KTsKICAgICB1aW50NjRfdCBhcHBDYWNoZVVzYWdlRm9yT3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luKTsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QpOworICAgIHZvaWQgcmVzZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogCiAgICAgLy8gR2Fy
YmFnZSBjb2xsZWN0aW9uIEFQSQogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2Jq
ZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAppbmRl
eCBiOGM5YzYyLi4zMWU5YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJ
Q2xpZW50LmNwcApAQCAtMjgsOCArMjgsOSBAQAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAi
V2ViR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC0xNDYsNCArMTQ3LDEyIEBAIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnRvb2xiYXJzQXJlVmlzaWJsZShXCiAgICAgcmV0dXJu
IG1fY2xpZW50LnRvb2xiYXJzQXJlVmlzaWJsZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViUGFnZSogcGFnZSwgV2ViU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKQoreworICAgIGlmICghbV9jbGllbnQu
cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jbGllbnQucmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0b0FQSShwYWdl
KSwgdG9BUEkob3JpZ2luKSwgdG90YWxCeXRlc05lZWRlZCwgbV9jbGllbnQuY2xpZW50SW5mbyk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VVSUNsaWVudC5oCmluZGV4IGRlMjkyOGEuLmZhNTVmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBBUElPYmplY3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7Citj
bGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZVVJQ2xpZW50LCBrV0tCdW5kbGVQYWdl
VUlDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVibGljOgpAQCAtNjQsNiArNjUsOCBAQCBwdWJs
aWM6CiAgICAgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSBzdGF0dXNCYXJJc1Zpc2li
bGUoV2ViUGFnZSopOwogICAgIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgbWVudUJh
cklzVmlzaWJsZShXZWJQYWdlKik7CiAgICAgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0
eSB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZSopOworCisgICAgdm9pZCByZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2UqLCBXZWJTZWN1cml0eU9yaWdpbiosIGludDY0
X3QgdG90YWxCeXRlc05lZWRlZCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAppbmRleCBjN2ZjOWE3Li4wYTU3ZDIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9y
ZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJTZWFyY2hQb3B1cE1l
bnUuaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QVhPYmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JDaG9vc2VyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KQEAgLTU0OSw5ICs1NTAsMTAgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QpCit2b2lkIFdl
YkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBSZWZQdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3Jp
Z2luID0gV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLT50b1N0cmlu
ZygpKTsKKyAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5yZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKG1fcGFnZSwgd2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCksIHRv
dGFsQnl0ZXNOZWVkZWQpOwogfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJkZTU2NWUu
Ljk1OTI3OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wOS0xMiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlz
dG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdW1dLVFJdIFRlc3RSdW5uZXIg
bmVlZHMgdG8gaW1wbGVtZW50IGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2Mzc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
IHN1cHBvcnQgZm9yIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MKKyAgICAg
ICAgYW5kIGRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEgaW4KKyAgICAg
ICAgV2ViS2l0VGVzdFJ1bm5lciBhbmQgcHJvcGVybHkgZHVtcCB0aGUgaW5mb3JtYXRpb24KKyAg
ICAgICAgZXhwZWN0ZWQgYnkgdGhlIHRlc3RzLgorCisgICAgICAgIElmIHRoZSBhcHBsaWNhdGlv
biBjYWNoZSBxdW90YSBpcyByZWFjaGVkIGZvciBhIGdpdmVuCisgICAgICAgIHNlY3VyaXR5IG9y
aWdpbiwgV2ViS2l0VGVzdFJ1bm5lciB3aWxsIHJlc2V0IHRoZSBxdW90YQorICAgICAgICB0byBp
dHMgZGVmYXVsdCB2YWx1ZSwgdW5sZXNzIGludHJ1Y3RlZCBub3QgdG8gdmlhCisgICAgICAgIGRp
c2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxl
UGFnZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgIChXVFIpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmg6CisgICAgICAgIChJ
bmplY3RlZEJ1bmRsZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXIpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGlj
YXRpb25DYWNoZVF1b3RhKToKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MpOgorICAgICAgICAoVGVz
dFJ1bm5lcik6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3VsZERpc2FsbG93SW5jcmVh
c2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpz
aG91bGREdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKToKKwogMjAxMi0wOS0x
MSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0NNQUtF
XSBTdXBwbHkgZmVhdHVyZSBkZWZpbmVzIHRvIENvZGVHZW5lcmF0b3JUZXN0UnVubmVyLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggYTQ5NDcxOC4uNWFkOTMzYyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCkBAIC00Nyw2ICs0Nyw3IEBAIG1vZHVsZSBXVFIgewogICAgICAgICB2
b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKICAgICAgICAgdm9pZCBkdW1wUmVzb3Vy
Y2VSZXNwb25zZU1JTUVUeXBlcygpOwogICAgICAgICB2b2lkIGR1bXBXaWxsQ2FjaGVSZXNwb25z
ZSgpOworICAgICAgICB2b2lkIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3Mo
KTsKIAogICAgICAgICAvLyBTcGVjaWFsIG9wdGlvbnMuCiAgICAgICAgIHZvaWQga2VlcFdlYkhp
c3RvcnkoKTsKQEAgLTExMiw2ICsxMTMsNyBAQCBtb2R1bGUgV1RSIHsKICAgICAgICAgbG9uZyBs
b25nIGFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4oaW4gRE9NU3RyaW5nIG9yaWdp
bik7CiAgICAgICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKGluIERPTVN0
cmluZyBuYW1lKTsKICAgICAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
aW4gdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzKTsKKyAgICAgICAgdm9pZCBkaXNhbGxvd0luY3Jl
YXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKCk7CiAKICAgICAgICAgLy8gQ29tcG9zaXRpbmcg
dGVzdGluZy4KICAgICAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dCgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwCmluZGV4IDY3NDZhNzAuLmU0MTIyNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0
ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tCdW5kbGVQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1NlY3VyaXR5
T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTFJlcXVlc3QuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTM0OSw2ICsz
NTEsNyBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSkKICAgICAgICAgMCwgLypzdGF0dXNCYXJJc1Zpc2libGUqLwogICAgICAgICAw
LCAvKm1lbnVCYXJJc1Zpc2libGUqLwogICAgICAgICAwLCAvKnRvb2xiYXJzQXJlVmlzaWJsZSov
CisgICAgICAgIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEsCiAgICAgfTsKICAg
ICBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChtX3BhZ2UsICZ1aUNsaWVudCk7CiAKQEAgLTEzMTgs
NiArMTMyMSwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRQ
cm9tcHQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUgogICAgIHN0YXRpY19jYXN0PElu
amVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+d2lsbFJ1
bkphdmFTY3JpcHRQcm9tcHQobWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSk7CiB9CiAKK3Zv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgaW50NjRf
dCB0b3RhbEJ5dGVzTmVlZGVkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRp
Y19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KS0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShvcmlnaW4sIHRvdGFsQnl0ZXNO
ZWVkZWQpOworfQorCiBzdGF0aWMgV1RGOjpTdHJpbmcgbGFzdEZpbGVVUkxQYXRoQ29tcG9uZW50
KGNvbnN0IFdURjo6U3RyaW5nJiBwYXRoKQogewogICAgIHNpemVfdCBwb3MgPSBwYXRoLmZpbmQo
ImZpbGU6Ly8iKTsKQEAgLTE0MDIsNiArMTQxMCwzNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQoV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdS
ZQogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
XG4iKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlYWNoZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGludDY0X3QgdG90YWxC
eXRlc05lZWRlZCkKK3sKKyAgICBpZiAoIUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50ZXN0UnVu
bmVyKCktPnNob3VsZER1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRm9yIGV4YW1wbGUsIG51bWJlcnMgZnJvbSAzMDAwMCAt
IDM5OTk5IHdpbGwgb3V0cHV0IGFzIDMwMDAwLgorICAgIC8vIFJvdW5kaW5nIHVwIG9yIGRvd24g
ZG9lcyBub3QgcmVhbGx5IG1hdHRlciBmb3IgdGhlc2UgdGVzdHMuIEl0J3MKKyAgICAvLyBzdWZm
aWNpZW50IHRvIGp1c3QgZ2V0IGEgcmFuZ2Ugb2YgMTAwMDAgdG8gZGV0ZXJtaW5lIGlmIHdlIHdl
cmUKKyAgICAvLyBhYm92ZSBvciBiZWxvdyBhIHRocmVzaG9sZC4KKyAgICBpbnQ2NF90IHRydW5j
YXRlZFNwYWNlTmVlZGVkID0gKHRvdGFsQnl0ZXNOZWVkZWQgLyAxMDAwMCkgKiAxMDAwMDsKKwor
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZExpdGVy
YWwoIlVJIERFTEVHQVRFIEFQUExJQ0FUSU9OIENBQ0hFIENBTExCQUNLOiBleGNlZWRlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOnsiKTsKKyAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcoYWRv
cHRXSyhXS1NlY3VyaXR5T3JpZ2luQ29weVByb3RvY29sKG9yaWdpbikpKSk7CisgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kTGl0ZXJhbCgiLCAiKTsK
KyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9X
VEZTdHJpbmcoYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ29weUhvc3Qob3JpZ2luKSkpKTsKKyAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmRMaXRlcmFs
KCIsICIpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFw
cGVuZChXVEY6OlN0cmluZzo6bnVtYmVyKFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KG9yaWdpbikp
KTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmRM
aXRlcmFsKCJ9IHRvdGFsU3BhY2VOZWVkZWQ6fiIpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChXVEY6OlN0cmluZzo6bnVtYmVyKHRydW5jYXRl
ZFNwYWNlTmVlZGVkKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxk
ZXIoKS0+YXBwZW5kTGl0ZXJhbCgiXG4iKTsKKworICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkudGVzdFJ1bm5lcigpLT5zaG91bGREaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25D
YWNoZVF1b3RhKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFJlc2V0IGRlZmF1bHQgYXBw
bGljYXRpb24gY2FjaGUgcXVvdGEuCisgICAgV0tCdW5kbGVSZXNldEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIGFkb3B0V0soV0tT
ZWN1cml0eU9yaWdpbkNvcHlUb1N0cmluZyhvcmlnaW4pKS5nZXQoKSk7Cit9CisKIC8vIEVkaXRv
ciBDbGllbnQgQ2FsbGJhY2tzCiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRCZWdp
bkVkaXRpbmcoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFu
Z2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCAzYWQy
MDNkLi5kYzFjMTYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTEyNCwxMSArMTI0LDEzIEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgd2lsbFJ1bkphdmFTY3JpcHRBbGVydChXS0J1bmRs
ZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIHdpbGxSdW5KYXZhU2NyaXB0
Q29uZmlybShXS0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIHdp
bGxSdW5KYXZhU2NyaXB0UHJvbXB0KFdLQnVuZGxlUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCByZWFjaGVkQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKFdLQnVuZGxlUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgaW50
NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICB2b2lk
IHdpbGxBZGRNZXNzYWdlVG9Db25zb2xlKFdLU3RyaW5nUmVmIG1lc3NhZ2UsIHVpbnQzMl90IGxp
bmVOdW1iZXIpOwogICAgIHZvaWQgd2lsbFNldFN0YXR1c2JhclRleHQoV0tTdHJpbmdSZWYgc3Rh
dHVzYmFyVGV4dCk7CiAgICAgdm9pZCB3aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KFdLU3RyaW5nUmVm
IG1lc3NhZ2UsIFdLQnVuZGxlRnJhbWVSZWYpOwogICAgIHZvaWQgd2lsbFJ1bkphdmFTY3JpcHRD
b25maXJtKFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJhbWVSZWYpOwogICAgIHZvaWQg
d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQoV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYg
ZGVmYXVsdFZhbHVlLCBXS0J1bmRsZUZyYW1lUmVmKTsKKyAgICB2b2lkIHJlYWNoZWRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tTZWN1cml0eU9yaWdpblJlZiwgaW50NjRfdCB0b3RhbEJ5
dGVzTmVlZGVkKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAvLyBGdWxsIFNj
cmVlbiBjbGllbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDM3MzQzOWQuLmU2MmVhZjkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAt
ODAsNiArODAsOCBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICAsIG1fZHVtcFJlc291
cmNlTG9hZENhbGxiYWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcFJlc291cmNlUmVzcG9uc2VNSU1F
VHlwZXMoZmFsc2UpCiAgICAgLCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZShmYWxzZSkKKyAgICAs
IG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyhmYWxzZSkKKyAgICAsIG1f
ZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YShmYWxzZSkKICAgICAsIG1f
d2FpdFRvRHVtcChmYWxzZSkKICAgICAsIG1fdGVzdFJlcGFpbnQoZmFsc2UpCiAgICAgLCBtX3Rl
c3RSZXBhaW50U3dlZXBIb3Jpem9udGFsbHkoZmFsc2UpCkBAIC0zMjMsNiArMzI1LDExIEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlcykKICAgICBXS0J1bmRsZVNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIG9yaWdpbi5nZXQoKSwgYnl0ZXMp
OwogfQogCit2b2lkIFRlc3RSdW5uZXI6OmRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNh
Y2hlUXVvdGEoKQoreworICAgIG1fZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVR
dW90YSA9IHRydWU7Cit9CisKIGJvb2wgVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZChKU1N0
cmluZ1JlZiBuYW1lKQogewogICAgIHJldHVybiBXS0J1bmRsZVBhZ2VJc0VkaXRpbmdDb21tYW5k
RW5hYmxlZChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIHRvV0sobmFt
ZSkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAppbmRleCA1NGZiODQ3Li4zMWRhZmQxIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtODIsNiArODIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgeyBtX2R1
bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VS
ZXNwb25zZU1JTUVUeXBlcygpIHsgbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyA9IHRy
dWU7IH0KICAgICB2b2lkIGR1bXBXaWxsQ2FjaGVSZXNwb25zZSgpIHsgbV9kdW1wV2lsbENhY2hl
UmVzcG9uc2UgPSB0cnVlOyB9CisgICAgdm9pZCBkdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRl
Q2FsbGJhY2tzKCkgeyBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgPSB0
cnVlOyB9CiAKICAgICB2b2lkIHNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9vbCB2
YWx1ZSkgeyBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0
U2hvdWxkRHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjayhib29sIHZhbHVlKSB7IG1fZHVtcFBy
b2dyZXNzRmluaXNoZWRDYWxsYmFjayA9IHZhbHVlOyB9CkBAIC0xNDksNiArMTUwLDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1aW50NjRfdCk7CiAgICAgbG9u
ZyBsb25nIGFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4oSlNTdHJpbmdSZWYgb3Jp
Z2luKTsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBs
b25nIGxvbmcpOworICAgIHZvaWQgZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVR
dW90YSgpOworICAgIGJvb2wgc2hvdWxkRGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2Fj
aGVRdW90YSgpIHsgcmV0dXJuIG1fZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVR
dW90YTsgfQogCiAgICAgLy8gUHJpbnRpbmcKICAgICBib29sIGlzUGFnZUJveFZpc2libGUoaW50
IHBhZ2VJbmRleCk7CkBAIC0xNzEsNiArMTc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxk
RHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFJlc291cmNl
TG9hZENhbGxiYWNrczsgfQogICAgIGJvb2wgc2hvdWxkRHVtcFJlc291cmNlUmVzcG9uc2VNSU1F
VHlwZXMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzOyB9
CiAgICAgYm9vbCBzaG91bGREdW1wV2lsbENhY2hlUmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBt
X2R1bXBXaWxsQ2FjaGVSZXNwb25zZTsgfQorICAgIGJvb2wgc2hvdWxkRHVtcEFwcGxpY2F0aW9u
Q2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEFwcGxpY2F0aW9u
Q2FjaGVEZWxlZ2F0ZUNhbGxiYWNrczsgfQogCiAgICAgYm9vbCBpc1BvbGljeURlbGVnYXRlRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9saWN5RGVsZWdhdGVFbmFibGVkOyB9CiAgICAgYm9v
bCBpc1BvbGljeURlbGVnYXRlUGVybWlzc2l2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9saWN5RGVs
ZWdhdGVQZXJtaXNzaXZlOyB9CkBAIC0yNjUsNiArMjY5LDggQEAgcHJpdmF0ZToKICAgICBib29s
IG1fZHVtcFJlc291cmNlTG9hZENhbGxiYWNrczsKICAgICBib29sIG1fZHVtcFJlc291cmNlUmVz
cG9uc2VNSU1FVHlwZXM7CiAgICAgYm9vbCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZTsKKyAgICBi
b29sIG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrczsKKyAgICBib29sIG1f
ZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YTsKICAgICBib29sIG1fd2Fp
dFRvRHVtcDsgLy8gVHJ1ZSBpZiB3YWl0VW50aWxEb25lKCkgaGFzIGJlZW4gY2FsbGVkLCBidXQg
bm90aWZ5RG9uZSgpIGhhcyBub3QgeWV0IGJlZW4gY2FsbGVkLgogICAgIGJvb2wgbV90ZXN0UmVw
YWludDsKICAgICBib29sIG1fdGVzdFJlcGFpbnRTd2VlcEhvcml6b250YWxseTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163544</attachid>
            <date>2012-09-12 01:37:37 -0700</date>
            <delta_ts>2012-09-12 09:04:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>96374_dumpApplicationCacheCallbacks.patch</filename>
            <type>text/plain</type>
            <size>26561</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMzJiNDZkLi4zMzg0MWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDkt
MTIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXVtXS1RSXSBUZXN0UnVubmVyIG5lZWRzIHRvIGltcGxlbWVudCBkdW1wQXBwbGlj
YXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NjM3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVuc2tpcCB0ZXN0IGNhc2VzIHRoYXQgYXJlIHBhc3Npbmcgbm93
IHRoYXQgV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBpbXBsZW1lbnRzIGR1bXBBcHBsaWNhdGlv
bkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgYW5kCisgICAgICAgIGRpc2FsbG93SW5jcmVhc2VGb3JB
cHBsaWNhdGlvbkNhY2hlUXVvdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2sxL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDktMTEgIFRhaWp1IFRzdWlraSAgPHR6aWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYkZyYW1lSW1wbDo6Y2xpZW50KCkgbmVlZHMgTlVM
TCBjaGVjayBpbiBXZWJXb3JrZXJDbGllbnRJbXBsOjpvcGVuRmlsZVN5c3RlbQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGZjNjg2NGEuLjc0
NWZjZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azEvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTQ3LDYgKzQ3LDEyIEBAIEJVR1dLODQ4MzUgOiBlZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1wYXJhZ3JhcGhzLmh0bWwgPSBURVhUCiAvLyBDdXN0b20gZm9udCBsb2FkaW5nIGRlbGF5
aW5nIHRleHQgZHJhd2luZyBvbiBDYW52YXMKIEJVR1dLODczNTUgOiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5mb250ZmFjZS5ub3RpbnBhZ2UuaHRtbCA9IFRFWFQKIAorLy8gRUZM
J3MgVGVzdFJ1bm5lciBkb2VzIG5vdCBpbXBsZW1lbnQgYXBwbGljYXRpb25DYWNoZURpc2tVc2Fn
ZUZvck9yaWdpbgorQlVHV0s4NjQ2MCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXVzYWdl
Lmh0bWwgPSBURVhUCisKKy8vIEVGTCdzIFRlc3RSdW5uZXIgZG9lcyBub3QgaW1wbGVtZW50IG9y
aWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZQorQlVHV0s4NjQ5OCA6IGh0dHAvdGVzdHMvYXBwY2Fj
aGUvb3JpZ2lucy13aXRoLWFwcGNhY2hlLmh0bWwgPSBURVhUCisKIC8vIE1pc3Npbmcgc2hvd01v
ZGFsRGlhbG9nIGltcGxlbWVudGF0aW9uCiBCVUdXSzg0NTg5IDogZmFzdC9hbmltYXRpb24vcmVx
dWVzdC1hbmltYXRpb24tZnJhbWUtZHVyaW5nLW1vZGFsLmh0bWwgPSBURVhUCiBCVUdXSzg0NTg5
IDogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtY2FsbC5odG1sID0gVEVY
VApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAzNWE0M2U0Li5kOTEyNjYzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMTAzLDEyICsxMDMsNiBAQCBmYXN0L3BhcnNlci9wcmUt
aHRtbDUtcGFyc2VyLXF1aXJrcy5odG1sCiAjIEZhbGxiYWNrIHJlc291cmNlIHdhc24ndCB1c2Vk
IGZvciBhIHJlZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbgogaHR0cC90
ZXN0cy9hcHBjYWNoZS9mYWxsYmFjay5odG1sCiAKLSMgRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xs
ZXIgZG9lcyBub3QgaW1wbGVtZW50IGFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4K
LWh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXVzYWdlLmh0bWwKLQotIyBFRkwncyBMYXlvdXRU
ZXN0Q29udHJvbGxlciBkb2VzIG5vdCBpbXBsZW1lbnQgb3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNh
Y2hlCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbnMtd2l0aC1hcHBjYWNoZS5odG1sCi0KICMg
RUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgZG9lcyBub3QgaW1wbGVtZW50IHNoYWRvd1BzZXVk
b0lkCiBtZWRpYS92aWRlby1jb250cm9scy10cmFuc2Zvcm1lZC5odG1sCiBtZWRpYS92aWRlby1j
b250cm9scy12aXNpYmxlLWF1ZGlvLW9ubHkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApp
bmRleCAyMjAzZDM0Li4xNzEyMDNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMjAy
LDEyICsyMDIsNyBAQCBmYXN0L2hhcm5lc3Mvb3ZlcnJpZGUtcHJlZmVyZW5jZXMtMi5odG1sCiBm
YXN0L2ltYWdlcy9hbmltYXRlZC1naWYtcmVzdG9yZWQtZnJvbS1iZmNhY2hlLmh0bWwKIGZhc3Qv
dGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sCiAKLSMgV1RSIG5lZWRzIGFuIGltcGxlbWVudGF0aW9u
IG9mIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MKLWh0dHAvdGVzdHMvYXBw
Y2FjaGUvb3JpZ2luLWRlbGV0ZS5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90
YS5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxv
YWQuaHRtbAotaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEtY29udGludWVkLWRvd25s
b2FkLW11bHRpcGxlLW1hbmlmZXN0cy5odG1sCi1odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi11
c2FnZS5odG1sCisjIFdUUiBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBvcmlnaW5zV2l0aEFw
cGxpY2F0aW9uQ2FjaGUKIGh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2lucy13aXRoLWFwcGNhY2hl
Lmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcERPTUFzV2ViQXJjaGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJhMjIxOTYuLmNiODk1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wOS0xMiAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdW1dLVFJd
IFRlc3RSdW5uZXIgbmVlZHMgdG8gaW1wbGVtZW50IGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdh
dGVDYWxsYmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk2Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIEJ1bmRsZSBDIEFQSSB0byByZXNldCB0aGUgYXBwbGljYXRpb24gY2FjaGUgcXVvdGEK
KyAgICAgICAgZm9yIGEgZ2l2ZW4gb3JpZ2luLgorCisgICAgICAgIEFkZCBuZXcgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSBjYWxsYmFjaworICAgICAgICB0byBXS0J1bmRsZVBh
Z2VVSUNsaWVudCB3aGljaCBpcyBjYWxsZWQgZnJvbQorICAgICAgICBXZWJDaHJvbWVDbGllbnQ6
OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoKS4KKworICAgICAgICBUaG9zZSBh
cmUgbmVlZGVkIGJ5IFdlYktpdFRlc3RSdW5uZXIgdG8gZHVtcAorICAgICAgICBpbmZvcm1hdGlv
biBhYm91dCB0aGUgYXBwbGljYXRpb24gY2FjaGUgY2FsbGJhY2tzCisgICAgICAgIGlmIGluc3Ry
dWN0ZWQgdG8uCisKKyAgICAgICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAg
ICAoV0tCdW5kbGVTZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAoV0tC
dW5kbGVSZXNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpkaWRSZWFjaEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEpOgorCiAyMDEyLTA5LTExICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgc2hvdWxkIGFs
d2F5cyBiZSBmb3JjZWQgd2hlbiB1c2luZyB0aGUgdGlsZWQgZHJhd2luZyBhcmVhCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCmluZGV4IGFlMTBhNWYuLjNmOTA5NTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwCkBAIC03NSw2ICs3
NSwxMSBAQCBjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUZvcm1DbGll
bnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltdCiAgICAgc2l6ZW9mKFdLQnVuZGxlUGFnZUZv
cm1DbGllbnQpCiB9OwogCitjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFn
ZVVJQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsKKyAgICBvZmZzZXRvZihX
S0J1bmRsZVBhZ2VVSUNsaWVudCwgZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEp
LAorICAgIHNpemVvZihXS0J1bmRsZVBhZ2VVSUNsaWVudCkKK307CisKIGNvbnN0IHNpemVfdCBB
UElDbGllbnRUcmFpdHM8V0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+OjppbnRlcmZhY2VT
aXplc0J5VmVyc2lvbltdID0gewogICAgIG9mZnNldG9mKFdLQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50LCBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEpLAogICAgIHNp
emVvZihXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElDbGllbnRUcmFpdHMuaAppbmRleCA3MzUyYjU2Li5jYmNhOWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oCkBAIC01NCw2ICs1NCwxMCBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudD4gewogICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bMl07CiB9OwogCit0
ZW1wbGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlVUlDbGllbnQ+IHsK
KyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGludGVyZmFjZVNpemVzQnlWZXJzaW9uWzJdOworfTsK
KwogdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLUGFnZUNvbnRleHRNZW51Q2xp
ZW50PiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvblsz
XTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IDE0ZmNjZGMuLmY2MTNjOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGUuY3BwCkBAIC0yNDgsNyArMjQ4LDEyIEBAIHVpbnQ2NF90IFdLQnVuZGxl
R2V0QXBwQ2FjaGVVc2FnZUZvck9yaWdpbihXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLU3RyaW5n
UmVmIG9yCiAKIHZvaWQgV0tCdW5kbGVTZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tC
dW5kbGVSZWYgYnVuZGxlUmVmLCBXS1N0cmluZ1JlZiBvcmlnaW4sIHVpbnQ2NF90IGJ5dGVzKQog
ewotICAgIHJldHVybiB0b0ltcGwoYnVuZGxlUmVmKS0+c2V0QXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKHRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSwgYnl0ZXMpOworICAgIHRvSW1wbChidW5k
bGVSZWYpLT5zZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodG9JbXBsKG9yaWdpbiktPnN0
cmluZygpLCBieXRlcyk7Cit9CisKK3ZvaWQgV0tCdW5kbGVSZXNldEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLU3RyaW5nUmVmIG9yaWdpbikKK3sK
KyAgICB0b0ltcGwoYnVuZGxlUmVmKS0+cmVzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
dG9JbXBsKG9yaWdpbiktPnN0cmluZygpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVNldE1pbmltdW1U
aW1lckludGVydmFsKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwUmVmLCBkb3VibGUgc2Vjb25kcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCmlu
ZGV4IDhiYzc2NzAuLjIwNmUxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApAQCAtMjM2
LDYgKzIzNiw3IEBAIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVNob3VsZFJ1YmJlckJhbmRJ
bkRpcmVjdGlvbkNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYKIHR5cGVkZWYgV0tCdW5kbGVQYWdl
VUlFbGVtZW50VmlzaWJpbGl0eSAoKldLQnVuZGxlUGFnZVN0YXR1c0JhcklzVmlzaWJsZUNhbGxi
YWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgKCpXS0J1bmRsZVBhZ2VNZW51QmFy
SXNWaXNpYmxlQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKIHR5cGVkZWYgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSAoKldLQnVu
ZGxlUGFnZVRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VSZWFj
aGVkQXBwQ2FjaGVPcmlnaW5RdW90YUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tT
ZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiAKIHN0cnVjdCBXS0J1bmRsZVBhZ2VVSUNsaWVudCB7CiAgICAg
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ZXJzaW9uOwpAQCAtMjU0LDEwICsyNTUsMTMgQEAgc3RydWN0IFdLQnVuZGxl
UGFnZVVJQ2xpZW50IHsKICAgICBXS0J1bmRsZVBhZ2VTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0JhcklzVmlzaWJsZTsKICAgICBX
S0J1bmRsZVBhZ2VNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lbnVCYXJJc1Zpc2libGU7CiAgICAgV0tCdW5kbGVQYWdlVG9vbGJhcnNBcmVW
aXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyc0FyZVZp
c2libGU7CisKKyAgICAvLyBWZXJzaW9uIDEuCisgICAgV0tCdW5kbGVQYWdlUmVhY2hlZEFwcENh
Y2hlT3JpZ2luUXVvdGFDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICBkaWRSZWFjaEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YTsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VV
SUNsaWVudCBXS0J1bmRsZVBhZ2VVSUNsaWVudDsKIAotZW51bSB7IGtXS0J1bmRsZVBhZ2VVSUNs
aWVudEN1cnJlbnRWZXJzaW9uID0gMCB9OworZW51bSB7IGtXS0J1bmRsZVBhZ2VVSUNsaWVudEN1
cnJlbnRWZXJzaW9uID0gMSB9OwogCiAvLyBFZGl0b3IgY2xpZW50CiB0eXBlZGVmIGJvb2wgKCpX
S0J1bmRsZVBhZ2VTaG91bGRCZWdpbkVkaXRpbmdDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLQnVuZGxlUmFuZ2VIYW5kbGVSZWYgcmFuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKaW5kZXggZTk3OTc5MS4uOWJhM2NlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCkBAIC05OSw2ICs5OSw3IEBAIFdLX0VY
UE9SVCB2b2lkIFdLQnVuZGxlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgV0tTdHJpCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEFwcENhY2hlTWF4
aW11bVNpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCB1aW50NjRfdCBzaXplKTsKIFdLX0VYUE9SVCB1
aW50NjRfdCBXS0J1bmRsZUdldEFwcENhY2hlVXNhZ2VGb3JPcmlnaW4oV0tCdW5kbGVSZWYgYnVu
ZGxlLCBXS1N0cmluZ1JlZiBvcmlnaW4pOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBv
cmlnaW4sIHVpbnQ2NF90IGJ5dGVzKTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVzZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBv
cmlnaW4pOwogCiAvLyBHYXJiYWdlIGNvbGxlY3Rpb24gQVBJCiBXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZUdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoV0tCdW5kbGVSZWYgYnVuZGxlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggY2QwNjM0OS4uYzI0ZDUxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKQEAgLTM1OCw2ICszNTgsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLAog
ICAgIGNhY2hlU3RvcmFnZSgpLnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQo
KSwgYnl0ZXMpOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKK3sKKyAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KG9yaWdpblN0cmluZyk7CisgICAgY2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JP
cmlnaW4ob3JpZ2luLmdldCgpLCBjYWNoZVN0b3JhZ2UoKS5kZWZhdWx0T3JpZ2luUXVvdGEoKSk7
Cit9CisKIGludCBJbmplY3RlZEJ1bmRsZTo6bnVtYmVyT2ZQYWdlcyhXZWJGcmFtZSogZnJhbWUs
IGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBhZ2VIZWlnaHRJblBpeGVscykKIHsK
ICAgICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1lKCkgOiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oCmluZGV4IDZlNDAwMTMuLjY4NjIxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmgKQEAgLTE1MCw2ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGlt
dW1TaXplKHVpbnQ2NF90KTsKICAgICB1aW50NjRfdCBhcHBDYWNoZVVzYWdlRm9yT3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luKTsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QpOworICAgIHZvaWQgcmVzZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogCiAgICAgLy8g
R2FyYmFnZSBjb2xsZWN0aW9uIEFQSQogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0
T2JqZWN0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcApp
bmRleCBiOGM5YzYyLi4yZWY5Y2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZVVJQ2xpZW50LmNwcApAQCAtMjgsOCArMjgsOSBAQAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2Vi
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVk
ZSAiV2ViR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC0xNDYsNCArMTQ3LDEyIEBAIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkg
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnRvb2xiYXJzQXJlVmlzaWJsZShXCiAgICAgcmV0
dXJuIG1fY2xpZW50LnRvb2xiYXJzQXJlVmlzaWJsZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OmRpZFJlYWNo
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2UqIHBhZ2UsIFdlYlNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkKK3sKKyAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2NsaWVudC5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0b0FQ
SShwYWdlKSwgdG9BUEkob3JpZ2luKSwgdG90YWxCeXRlc05lZWRlZCwgbV9jbGllbnQuY2xpZW50
SW5mbyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VVSUNsaWVudC5oCmluZGV4IGRlMjkyOGEuLmI4YTQ4MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBBUElPYmplY3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBh
Z2U7CitjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQnVuZGxlUGFnZVVJQ2xpZW50LCBrV0tCdW5k
bGVQYWdlVUlDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVibGljOgpAQCAtNjQsNiArNjUsOCBA
QCBwdWJsaWM6CiAgICAgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSBzdGF0dXNCYXJJ
c1Zpc2libGUoV2ViUGFnZSopOwogICAgIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkg
bWVudUJhcklzVmlzaWJsZShXZWJQYWdlKik7CiAgICAgV0tCdW5kbGVQYWdlVUlFbGVtZW50Vmlz
aWJpbGl0eSB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZSopOworCisgICAgdm9pZCBkaWRSZWFj
aEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJQYWdlKiwgV2ViU2VjdXJpdHlPcmlnaW4q
LCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYzdmYzlhNy4uNGZiNjViZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVu
Y2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViU2VhcmNo
UG9wdXBNZW51LmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yQ2hvb3Nlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CkBAIC01NDksOSArNTUwLDEw
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qp
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KQor
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVmUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1
cml0eU9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbi0+
dG9TdHJpbmcoKSk7CisgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkUmVh
Y2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEobV9wYWdlLCB3ZWJTZWN1cml0eU9yaWdpbi5n
ZXQoKSwgdG90YWxCeXRlc05lZWRlZCk7CiB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MmRlNTY1ZS4uM2UyNjBjNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTEyICBDaHJpc3RvcGhlIER1bWV6
ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl1bV0tUUl0gVGVz
dFJ1bm5lciBuZWVkcyB0byBpbXBsZW1lbnQgZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNh
bGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTYzNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgc3VwcG9ydCBmb3IgZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNr
cworICAgICAgICBhbmQgZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSBp
bgorICAgICAgICBXZWJLaXRUZXN0UnVubmVyIGFuZCBwcm9wZXJseSBkdW1wIHRoZSBpbmZvcm1h
dGlvbgorICAgICAgICBleHBlY3RlZCBieSB0aGUgdGVzdHMuCisKKyAgICAgICAgSWYgdGhlIGFw
cGxpY2F0aW9uIGNhY2hlIHF1b3RhIGlzIHJlYWNoZWQgZm9yIGEgZ2l2ZW4KKyAgICAgICAgc2Vj
dXJpdHkgb3JpZ2luLCBXZWJLaXRUZXN0UnVubmVyIHdpbGwgcmVzZXQgdGhlIHF1b3RhCisgICAg
ICAgIHRvIGl0cyBkZWZhdWx0IHZhbHVlLCB1bmxlc3MgaW50cnVjdGVkIG5vdCB0byB2aWEKKyAg
ICAgICAgZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90YSgpLgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0
ZWRCdW5kbGVQYWdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWFj
aEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgIChXVFIpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmg6Cisg
ICAgICAgIChJbmplY3RlZEJ1bmRsZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXIpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpkaXNhbGxvd0luY3JlYXNl
Rm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKToKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MpOgorICAg
ICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3VsZERpc2Fs
bG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEpOgorICAgICAgICAoV1RSOjpUZXN0
UnVubmVyOjpzaG91bGREdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKToKKwog
MjAxMi0wOS0xMSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0NNQUtFXSBTdXBwbHkgZmVhdHVyZSBkZWZpbmVzIHRvIENvZGVHZW5lcmF0b3JUZXN0UnVu
bmVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggYTQ5NDcxOC4uNWFkOTMzYyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC00Nyw2ICs0Nyw3IEBAIG1vZHVsZSBXVFIgewog
ICAgICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKICAgICAgICAgdm9pZCBk
dW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpOwogICAgICAgICB2b2lkIGR1bXBXaWxsQ2Fj
aGVSZXNwb25zZSgpOworICAgICAgICB2b2lkIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVD
YWxsYmFja3MoKTsKIAogICAgICAgICAvLyBTcGVjaWFsIG9wdGlvbnMuCiAgICAgICAgIHZvaWQg
a2VlcFdlYkhpc3RvcnkoKTsKQEAgLTExMiw2ICsxMTMsNyBAQCBtb2R1bGUgV1RSIHsKICAgICAg
ICAgbG9uZyBsb25nIGFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4oaW4gRE9NU3Ry
aW5nIG9yaWdpbik7CiAgICAgICAgIHZvaWQgY2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2lu
KGluIERPTVN0cmluZyBuYW1lKTsKICAgICAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoaW4gdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzKTsKKyAgICAgICAgdm9pZCBkaXNh
bGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKCk7CiAKICAgICAgICAgLy8gQ29t
cG9zaXRpbmcgdGVzdGluZy4KICAgICAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dCgpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IDY3NDZhNzAuLjdmYTdiNDEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVOb2RlSGFu
ZGxlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTFJlcXVlc3QuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAg
LTM0OSw2ICszNTEsNyBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICAgICAgMCwgLypzdGF0dXNCYXJJc1Zpc2libGUqLwog
ICAgICAgICAwLCAvKm1lbnVCYXJJc1Zpc2libGUqLwogICAgICAgICAwLCAvKnRvb2xiYXJzQXJl
VmlzaWJsZSovCisgICAgICAgIGRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhLAog
ICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQobV9wYWdlLCAmdWlDbGllbnQpOwog
CkBAIC0xMzE4LDYgKzEzMjEsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5K
YXZhU2NyaXB0UHJvbXB0KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1IKICAgICBzdGF0
aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUp
OwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3Jp
Z2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4o
Y2xpZW50SW5mbykpLT5kaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShvcmlnaW4s
IHRvdGFsQnl0ZXNOZWVkZWQpOworfQorCiBzdGF0aWMgV1RGOjpTdHJpbmcgbGFzdEZpbGVVUkxQ
YXRoQ29tcG9uZW50KGNvbnN0IFdURjo6U3RyaW5nJiBwYXRoKQogewogICAgIHNpemVfdCBwb3Mg
PSBwYXRoLmZpbmQoImZpbGU6Ly8iKTsKQEAgLTE0MDIsNiArMTQxMCwzNCBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQoV0tTdHJpbmdSZWYgbWVzc2Fn
ZSwgV0tTdHJpbmdSZQogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVy
KCktPmFwcGVuZCgiXG4iKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlYWNo
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBp
bnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpCit7CisgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkudGVzdFJ1bm5lcigpLT5zaG91bGREdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2Fs
bGJhY2tzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZvciBleGFtcGxlLCBudW1iZXJz
IGZyb20gMzAwMDAgLSAzOTk5OSB3aWxsIG91dHB1dCBhcyAzMDAwMC4KKyAgICAvLyBSb3VuZGlu
ZyB1cCBvciBkb3duIGRvZXMgbm90IHJlYWxseSBtYXR0ZXIgZm9yIHRoZXNlIHRlc3RzLiBJdCdz
CisgICAgLy8gc3VmZmljaWVudCB0byBqdXN0IGdldCBhIHJhbmdlIG9mIDEwMDAwIHRvIGRldGVy
bWluZSBpZiB3ZSB3ZXJlCisgICAgLy8gYWJvdmUgb3IgYmVsb3cgYSB0aHJlc2hvbGQuCisgICAg
aW50NjRfdCB0cnVuY2F0ZWRTcGFjZU5lZWRlZCA9ICh0b3RhbEJ5dGVzTmVlZGVkIC8gMTAwMDAp
ICogMTAwMDA7CisKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmRMaXRlcmFsKCJVSSBERUxFR0FURSBBUFBMSUNBVElPTiBDQUNIRSBDQUxMQkFDSzog
ZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7Iik7
CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHRv
V1RGU3RyaW5nKGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNvcHlQcm90b2NvbChvcmlnaW4pKSkp
OworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZExp
dGVyYWwoIiwgIik7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKHRvV1RGU3RyaW5nKGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNvcHlIb3N0KG9y
aWdpbikpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+
YXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5n
QnVpbGRlcigpLT5hcHBlbmQoV1RGOjpTdHJpbmc6Om51bWJlcihXS1NlY3VyaXR5T3JpZ2luR2V0
UG9ydChvcmlnaW4pKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxk
ZXIoKS0+YXBwZW5kTGl0ZXJhbCgifSB0b3RhbFNwYWNlTmVlZGVkOn4iKTsKKyAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoV1RGOjpTdHJpbmc6Om51
bWJlcih0cnVuY2F0ZWRTcGFjZU5lZWRlZCkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgnXG4nKTsKKworICAgIGlmIChJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5zaG91bGREaXNhbGxvd0luY3JlYXNlRm9yQXBwbGlj
YXRpb25DYWNoZVF1b3RhKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFJlc2V0IGRlZmF1
bHQgYXBwbGljYXRpb24gY2FjaGUgcXVvdGEuCisgICAgV0tCdW5kbGVSZXNldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIGFkb3B0
V0soV0tTZWN1cml0eU9yaWdpbkNvcHlUb1N0cmluZyhvcmlnaW4pKS5nZXQoKSk7Cit9CisKIC8v
IEVkaXRvciBDbGllbnQgQ2FsbGJhY2tzCiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91
bGRCZWdpbkVkaXRpbmcoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUmFuZ2VIYW5kbGVS
ZWYgcmFuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRl
eCAzYWQyMDNkLi4zNzBmNDI3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTEyNCwxMSArMTI0
LDEzIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgd2lsbFJ1bkphdmFTY3JpcHRBbGVydChX
S0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIHdpbGxSdW5KYXZh
U2NyaXB0Q29uZmlybShXS0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2
b2lkIHdpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KFdLQnVuZGxlUGFnZVJlZiwgV0tTdHJpbmdSZWYg
bWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWFjaEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS0J1bmRsZVBhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYsIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAg
ICAgdm9pZCB3aWxsQWRkTWVzc2FnZVRvQ29uc29sZShXS1N0cmluZ1JlZiBtZXNzYWdlLCB1aW50
MzJfdCBsaW5lTnVtYmVyKTsKICAgICB2b2lkIHdpbGxTZXRTdGF0dXNiYXJUZXh0KFdLU3RyaW5n
UmVmIHN0YXR1c2JhclRleHQpOwogICAgIHZvaWQgd2lsbFJ1bkphdmFTY3JpcHRBbGVydChXS1N0
cmluZ1JlZiBtZXNzYWdlLCBXS0J1bmRsZUZyYW1lUmVmKTsKICAgICB2b2lkIHdpbGxSdW5KYXZh
U2NyaXB0Q29uZmlybShXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0J1bmRsZUZyYW1lUmVmKTsKICAg
ICB2b2lkIHdpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3Ry
aW5nUmVmIGRlZmF1bHRWYWx1ZSwgV0tCdW5kbGVGcmFtZVJlZik7CisgICAgdm9pZCBkaWRSZWFj
aEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS1NlY3VyaXR5T3JpZ2luUmVmLCBpbnQ2NF90
IHRvdGFsQnl0ZXNOZWVkZWQpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIC8v
IEZ1bGwgU2NyZWVuIGNsaWVudApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggMzczNDM5ZC4uZTYyZWFmOSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCkBAIC04MCw2ICs4MCw4IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgICwgbV9k
dW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1wUmVzb3VyY2VSZXNw
b25zZU1JTUVUeXBlcyhmYWxzZSkKICAgICAsIG1fZHVtcFdpbGxDYWNoZVJlc3BvbnNlKGZhbHNl
KQorICAgICwgbV9kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKGZhbHNlKQor
ICAgICwgbV9kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKGZhbHNlKQog
ICAgICwgbV93YWl0VG9EdW1wKGZhbHNlKQogICAgICwgbV90ZXN0UmVwYWludChmYWxzZSkKICAg
ICAsIG1fdGVzdFJlcGFpbnRTd2VlcEhvcml6b250YWxseShmYWxzZSkKQEAgLTMyMyw2ICszMjUs
MTEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzKQogICAgIFdLQnVuZGxlU2V0QXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgb3JpZ2luLmdldCgp
LCBieXRlcyk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6ZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxp
Y2F0aW9uQ2FjaGVRdW90YSgpCit7CisgICAgbV9kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRp
b25DYWNoZVF1b3RhID0gdHJ1ZTsKK30KKwogYm9vbCBUZXN0UnVubmVyOjppc0NvbW1hbmRFbmFi
bGVkKEpTU3RyaW5nUmVmIG5hbWUpCiB7CiAgICAgcmV0dXJuIFdLQnVuZGxlUGFnZUlzRWRpdGlu
Z0NvbW1hbmRFbmFibGVkKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwg
dG9XSyhuYW1lKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDU0ZmI4NDcuLjMxZGFmZDEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC04
Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
KSB7IG1fZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyA9IHRydWU7IH0KICAgICB2b2lkIGR1bXBS
ZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgeyBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5
cGVzID0gdHJ1ZTsgfQogICAgIHZvaWQgZHVtcFdpbGxDYWNoZVJlc3BvbnNlKCkgeyBtX2R1bXBX
aWxsQ2FjaGVSZXNwb25zZSA9IHRydWU7IH0KKyAgICB2b2lkIGR1bXBBcHBsaWNhdGlvbkNhY2hl
RGVsZWdhdGVDYWxsYmFja3MoKSB7IG1fZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxi
YWNrcyA9IHRydWU7IH0KIAogICAgIHZvaWQgc2V0U2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNr
cyhib29sIHZhbHVlKSB7IG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IHZhbHVlOyB9CiAgICAg
dm9pZCBzZXRTaG91bGREdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKGJvb2wgdmFsdWUpIHsg
bV9kdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrID0gdmFsdWU7IH0KQEAgLTE0OSw2ICsxNTAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1TaXplKHVpbnQ2NF90KTsK
ICAgICBsb25nIGxvbmcgYXBwbGljYXRpb25DYWNoZURpc2tVc2FnZUZvck9yaWdpbihKU1N0cmlu
Z1JlZiBvcmlnaW4pOwogICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVu
c2lnbmVkIGxvbmcgbG9uZyk7CisgICAgdm9pZCBkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRp
b25DYWNoZVF1b3RhKCk7CisgICAgYm9vbCBzaG91bGREaXNhbGxvd0luY3JlYXNlRm9yQXBwbGlj
YXRpb25DYWNoZVF1b3RhKCkgeyByZXR1cm4gbV9kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRp
b25DYWNoZVF1b3RhOyB9CiAKICAgICAvLyBQcmludGluZwogICAgIGJvb2wgaXNQYWdlQm94Vmlz
aWJsZShpbnQgcGFnZUluZGV4KTsKQEAgLTE3MSw2ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzOyB9CiAgICAgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VSZXNw
b25zZU1JTUVUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFJlc291cmNlUmVzcG9uc2VNSU1F
VHlwZXM7IH0KICAgICBib29sIHNob3VsZER1bXBXaWxsQ2FjaGVSZXNwb25zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZHVtcFdpbGxDYWNoZVJlc3BvbnNlOyB9CisgICAgYm9vbCBzaG91bGREdW1wQXBw
bGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wQXBw
bGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzOyB9CiAKICAgICBib29sIGlzUG9saWN5RGVs
ZWdhdGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wb2xpY3lEZWxlZ2F0ZUVuYWJsZWQ7IH0K
ICAgICBib29sIGlzUG9saWN5RGVsZWdhdGVQZXJtaXNzaXZlKCkgY29uc3QgeyByZXR1cm4gbV9w
b2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmU7IH0KQEAgLTI2NSw2ICsyNjksOCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1wUmVz
b3VyY2VSZXNwb25zZU1JTUVUeXBlczsKICAgICBib29sIG1fZHVtcFdpbGxDYWNoZVJlc3BvbnNl
OworICAgIGJvb2wgbV9kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzOworICAg
IGJvb2wgbV9kaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhOwogICAgIGJv
b2wgbV93YWl0VG9EdW1wOyAvLyBUcnVlIGlmIHdhaXRVbnRpbERvbmUoKSBoYXMgYmVlbiBjYWxs
ZWQsIGJ1dCBub3RpZnlEb25lKCkgaGFzIG5vdCB5ZXQgYmVlbiBjYWxsZWQuCiAgICAgYm9vbCBt
X3Rlc3RSZXBhaW50OwogICAgIGJvb2wgbV90ZXN0UmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163645</attachid>
            <date>2012-09-12 09:04:09 -0700</date>
            <delta_ts>2012-09-12 09:37:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>96374_dumpApplicationCacheDelegates.patch</filename>
            <type>text/plain</type>
            <size>27685</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMTQwOGE4Li42NjYzMjQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDkt
MTIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXVtXS1RSXSBUZXN0UnVubmVyIG5lZWRzIHRvIGltcGxlbWVudCBkdW1wQXBwbGlj
YXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NjM3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVuc2tpcCB0ZXN0IGNhc2VzIHRoYXQgYXJlIHBhc3Npbmcgbm93
IHRoYXQgV2ViS2l0VGVzdFJ1bm5lcgorICAgICAgICBpbXBsZW1lbnRzIGR1bXBBcHBsaWNhdGlv
bkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgYW5kCisgICAgICAgIGRpc2FsbG93SW5jcmVhc2VGb3JB
cHBsaWNhdGlvbkNhY2hlUXVvdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2sxL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDktMTIgIEZsb3JpbiBNYWxpdGEgIDxmbWFs
aXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBnZXRTY3JlZW5DVE0gcmV0dXJucyBkaWZmZXJl
bnQgdmFsdWVzIGRlcGVuZGluZyBvbiB6b29tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZmM2ODY0YS4uNzQ1ZmNkZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDcsNiArNDcsMTIg
QEAgQlVHV0s4NDgzNSA6IGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXBhcmFncmFwaHMuaHRt
bCA9IFRFWFQKIC8vIEN1c3RvbSBmb250IGxvYWRpbmcgZGVsYXlpbmcgdGV4dCBkcmF3aW5nIG9u
IENhbnZhcwogQlVHV0s4NzM1NSA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LmZv
bnRmYWNlLm5vdGlucGFnZS5odG1sID0gVEVYVAogCisvLyBFRkwncyBUZXN0UnVubmVyIGRvZXMg
bm90IGltcGxlbWVudCBhcHBsaWNhdGlvbkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luCitCVUdXSzg2
NDYwIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tdXNhZ2UuaHRtbCA9IFRFWFQKKworLy8g
RUZMJ3MgVGVzdFJ1bm5lciBkb2VzIG5vdCBpbXBsZW1lbnQgb3JpZ2luc1dpdGhBcHBsaWNhdGlv
bkNhY2hlCitCVUdXSzg2NDk4IDogaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW5zLXdpdGgtYXBw
Y2FjaGUuaHRtbCA9IFRFWFQKKwogLy8gTWlzc2luZyBzaG93TW9kYWxEaWFsb2cgaW1wbGVtZW50
YXRpb24KIEJVR1dLODQ1ODkgOiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFt
ZS1kdXJpbmctbW9kYWwuaHRtbCA9IFRFWFQKIEJVR1dLODQ1ODkgOiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1jYWxsLmh0bWwgPSBURVhUCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9T
a2lwcGVkCmluZGV4IDM1YTQzZTQuLmQ5MTI2NjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVk
CkBAIC0xMDMsMTIgKzEwMyw2IEBAIGZhc3QvcGFyc2VyL3ByZS1odG1sNS1wYXJzZXItcXVpcmtz
Lmh0bWwKICMgRmFsbGJhY2sgcmVzb3VyY2Ugd2Fzbid0IHVzZWQgZm9yIGEgcmVkaXJlY3QgdG8g
YSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luCiBodHRwL3Rlc3RzL2FwcGNhY2hlL2ZhbGxi
YWNrLmh0bWwKIAotIyBFRkwncyBMYXlvdXRUZXN0Q29udHJvbGxlciBkb2VzIG5vdCBpbXBsZW1l
bnQgYXBwbGljYXRpb25DYWNoZURpc2tVc2FnZUZvck9yaWdpbgotaHR0cC90ZXN0cy9hcHBjYWNo
ZS9vcmlnaW4tdXNhZ2UuaHRtbAotCi0jIEVGTCdzIExheW91dFRlc3RDb250cm9sbGVyIGRvZXMg
bm90IGltcGxlbWVudCBvcmlnaW5zV2l0aEFwcGxpY2F0aW9uQ2FjaGUKLWh0dHAvdGVzdHMvYXBw
Y2FjaGUvb3JpZ2lucy13aXRoLWFwcGNhY2hlLmh0bWwKLQogIyBFRkwncyBMYXlvdXRUZXN0Q29u
dHJvbGxlciBkb2VzIG5vdCBpbXBsZW1lbnQgc2hhZG93UHNldWRvSWQKIG1lZGlhL3ZpZGVvLWNv
bnRyb2xzLXRyYW5zZm9ybWVkLmh0bWwKIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLXZpc2libGUtYXVk
aW8tb25seS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IDI4MWExZTAuLjFmMjMy
OTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0yMDIsMTIgKzIwMiw3IEBAIGZhc3Qv
aGFybmVzcy9vdmVycmlkZS1wcmVmZXJlbmNlcy0yLmh0bWwKIGZhc3QvaW1hZ2VzL2FuaW1hdGVk
LWdpZi1yZXN0b3JlZC1mcm9tLWJmY2FjaGUuaHRtbAogZmFzdC90ZXh0L3plcm8tZm9udC1zaXpl
Lmh0bWwKIAotIyBXVFIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gb2YgZHVtcEFwcGxpY2F0aW9u
Q2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcwotaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tZGVsZXRl
Lmh0bWwKLWh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwKLWh0dHAvdGVzdHMv
YXBwY2FjaGUvb3JpZ2luLXF1b3RhLWNvbnRpbnVlZC1kb3dubG9hZC5odG1sCi1odHRwL3Rlc3Rz
L2FwcGNhY2hlL29yaWdpbi1xdW90YS1jb250aW51ZWQtZG93bmxvYWQtbXVsdGlwbGUtbWFuaWZl
c3RzLmh0bWwKLWh0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXVzYWdlLmh0bWwKKyMgV1RSIG5l
ZWRzIGFuIGltcGxlbWVudGF0aW9uIG9mIG9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZQogaHR0
cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW5zLXdpdGgtYXBwY2FjaGUuaHRtbAogCiAjIFdlYktpdFRl
c3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRE9NQXNX
ZWJBcmNoaXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2ViYjQwNi4uZjQ4NmVhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ1IEBACisyMDEyLTA5LTEyICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl1bV0tUUl0gVGVzdFJ1bm5lciBuZWVkcyB0
byBpbXBsZW1lbnQgZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYzNzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQnVuZGxlIEMgQVBJ
IHRvIHJlc2V0IHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBxdW90YQorICAgICAgICBmb3IgYSBnaXZl
biBvcmlnaW4uCisKKyAgICAgICAgQWRkIG5ldyByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhIGNhbGxiYWNrCisgICAgICAgIHRvIFdLQnVuZGxlUGFnZVVJQ2xpZW50IHdoaWNoIGlz
IGNhbGxlZCBmcm9tCisgICAgICAgIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YSgpLgorCisgICAgICAgIFRob3NlIGFyZSBuZWVkZWQgYnkgV2ViS2l0
VGVzdFJ1bm5lciB0byBkdW1wCisgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhcHBsaWNh
dGlvbiBjYWNoZSBjYWxsYmFja3MKKyAgICAgICAgaWYgaW5zdHJ1Y3RlZCB0by4KKworICAgICAg
ICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVNldEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgIChXS0J1bmRsZVJlc2V0QXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlOjpyZXNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoK
KyAgICAgICAgKEluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6Cisg
ICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRl
ZjoKKwogMjAxMi0wOS0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyODI4MC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKaW5kZXggYWUxMGE1Zi4uM2Y5MDk1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKQEAgLTc1LDYgKzc1
LDExIEBAIGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlRm9ybUNsaWVu
dD46OmludGVyZmFjZVNpemVzQnlWZXJzaW9uW10KICAgICBzaXplb2YoV0tCdW5kbGVQYWdlRm9y
bUNsaWVudCkKIH07CiAKK2NvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdl
VUlDbGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltdID0geworICAgIG9mZnNldG9mKFdL
QnVuZGxlUGFnZVVJQ2xpZW50LCBkaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSks
CisgICAgc2l6ZW9mKFdLQnVuZGxlUGFnZVVJQ2xpZW50KQorfTsKKwogY29uc3Qgc2l6ZV90IEFQ
SUNsaWVudFRyYWl0czxXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudD46OmludGVyZmFjZVNp
emVzQnlWZXJzaW9uW10gPSB7CiAgICAgb2Zmc2V0b2YoV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQsIGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSksCiAgICAgc2l6
ZW9mKFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SUNsaWVudFRyYWl0cy5oCmluZGV4IDczNTJiNTYuLmNiY2E5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKQEAgLTU0LDYgKzU0LDEwIEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50PiB7CiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvblsyXTsKIH07CiAKK3Rl
bXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VVSUNsaWVudD4gewor
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bMl07Cit9Owor
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBUElDbGllbnRUcmFpdHM8V0tQYWdlQ29udGV4dE1lbnVDbGll
bnQ+IHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGludGVyZmFjZVNpemVzQnlWZXJzaW9uWzNd
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5kZXggNGUzN2Y5My4uMTUxYzk2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5jcHAKQEAgLTI0OCw3ICsyNDgsMTIgQEAgdWludDY0X3QgV0tCdW5kbGVH
ZXRBcHBDYWNoZVVzYWdlRm9yT3JpZ2luKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdS
ZWYgb3IKIAogdm9pZCBXS0J1bmRsZVNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS0J1
bmRsZVJlZiBidW5kbGVSZWYsIFdLU3RyaW5nUmVmIG9yaWdpbiwgdWludDY0X3QgYnl0ZXMpCiB7
Ci0gICAgcmV0dXJuIHRvSW1wbChidW5kbGVSZWYpLT5zZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEodG9JbXBsKG9yaWdpbiktPnN0cmluZygpLCBieXRlcyk7CisgICAgdG9JbXBsKGJ1bmRs
ZVJlZiktPnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0b0ltcGwob3JpZ2luKS0+c3Ry
aW5nKCksIGJ5dGVzKTsKK30KKwordm9pZCBXS0J1bmRsZVJlc2V0QXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYgb3JpZ2luKQorewor
ICAgIHRvSW1wbChidW5kbGVSZWYpLT5yZXNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0
b0ltcGwob3JpZ2luKS0+c3RyaW5nKCkpOwogfQogCiB2b2lkIFdLQnVuZGxlU2V0TWluaW11bVRp
bWVySW50ZXJ2YWwoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYsIGRvdWJsZSBzZWNvbmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5k
ZXggOGJjNzY3MC4uMjA2ZTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC0yMzYs
NiArMjM2LDcgQEAgdHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkUnViYmVyQmFuZElu
RGlyZWN0aW9uQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZgogdHlwZWRlZiBXS0J1bmRsZVBhZ2VV
SUVsZW1lbnRWaXNpYmlsaXR5ICgqV0tCdW5kbGVQYWdlU3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJh
Y2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVk
ZWYgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSAoKldLQnVuZGxlUGFnZU1lbnVCYXJJ
c1Zpc2libGVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwogdHlwZWRlZiBXS0J1bmRsZVBhZ2VVSUVsZW1lbnRWaXNpYmlsaXR5ICgqV0tCdW5k
bGVQYWdlVG9vbGJhcnNBcmVWaXNpYmxlQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVJlYWNo
ZWRBcHBDYWNoZU9yaWdpblF1b3RhQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKIAogc3RydWN0IFdLQnVuZGxlUGFnZVVJQ2xpZW50IHsKICAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb247CkBAIC0yNTQsMTAgKzI1NSwxMyBAQCBzdHJ1Y3QgV0tCdW5kbGVQ
YWdlVUlDbGllbnQgewogICAgIFdLQnVuZGxlUGFnZVN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQmFySXNWaXNpYmxlOwogICAgIFdL
QnVuZGxlUGFnZU1lbnVCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVudUJhcklzVmlzaWJsZTsKICAgICBXS0J1bmRsZVBhZ2VUb29sYmFyc0FyZVZp
c2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJzQXJlVmlz
aWJsZTsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS0J1bmRsZVBhZ2VSZWFjaGVkQXBwQ2Fj
aGVPcmlnaW5RdW90YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgIGRpZFJlYWNoQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZVVJ
Q2xpZW50IFdLQnVuZGxlUGFnZVVJQ2xpZW50OwogCi1lbnVtIHsga1dLQnVuZGxlUGFnZVVJQ2xp
ZW50Q3VycmVudFZlcnNpb24gPSAwIH07CitlbnVtIHsga1dLQnVuZGxlUGFnZVVJQ2xpZW50Q3Vy
cmVudFZlcnNpb24gPSAxIH07CiAKIC8vIEVkaXRvciBjbGllbnQKIHR5cGVkZWYgYm9vbCAoKldL
QnVuZGxlUGFnZVNob3VsZEJlZ2luRWRpdGluZ0NhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiByYW5nZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAppbmRleCA0ZWM0Y2Y5Li4yNTZiMjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKQEAgLTk5LDYgKzk5LDcgQEAgV0tfRVhQ
T1JUIHZvaWQgV0tCdW5kbGVDbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oV0tCdW5kbGVS
ZWYgYnVuZGxlLCBXS1N0cmkKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlU2V0QXBwQ2FjaGVNYXhp
bXVtU2l6ZShXS0J1bmRsZVJlZiBidW5kbGUsIHVpbnQ2NF90IHNpemUpOwogV0tfRVhQT1JUIHVp
bnQ2NF90IFdLQnVuZGxlR2V0QXBwQ2FjaGVVc2FnZUZvck9yaWdpbihXS0J1bmRsZVJlZiBidW5k
bGUsIFdLU3RyaW5nUmVmIG9yaWdpbik7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG9y
aWdpbiwgdWludDY0X3QgYnl0ZXMpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVSZXNldEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG9y
aWdpbik7CiAKIC8vIEdhcmJhZ2UgY29sbGVjdGlvbiBBUEkKIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlR2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cyhXS0J1bmRsZVJlZiBidW5kbGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAyN2RjZDk5Li41NDliMmJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcApAQCAtMzU5LDYgKzM1OSwxMiBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsCiAg
ICAgY2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4ob3JpZ2luLmdldCgp
LCBieXRlcyk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlc2V0QXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQoreworICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
b3JpZ2luU3RyaW5nKTsKKyAgICBjYWNoZVN0b3JhZ2UoKS5zdG9yZVVwZGF0ZWRRdW90YUZvck9y
aWdpbihvcmlnaW4uZ2V0KCksIGNhY2hlU3RvcmFnZSgpLmRlZmF1bHRPcmlnaW5RdW90YSgpKTsK
K30KKwogaW50IEluamVjdGVkQnVuZGxlOjpudW1iZXJPZlBhZ2VzKFdlYkZyYW1lKiBmcmFtZSwg
ZG91YmxlIHBhZ2VXaWR0aEluUGl4ZWxzLCBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxzKQogewog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZSA/IGZyYW1lLT5jb3JlRnJhbWUoKSA6IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgKaW5kZXggODVkODI2MC4uZDU5ZWUwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aApAQCAtMTUwLDYgKzE1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFwcENhY2hlTWF4aW11
bVNpemUodWludDY0X3QpOwogICAgIHVpbnQ2NF90IGFwcENhY2hlVXNhZ2VGb3JPcmlnaW4oY29u
c3QgU3RyaW5nJiBvcmlnaW4pOwogICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCk7CisgICAgdm9pZCByZXNldEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAKICAgICAvLyBH
YXJiYWdlIGNvbGxlY3Rpb24gQVBJCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRP
YmplY3RzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCmlu
ZGV4IGI4YzljNjIuLjJlZjljYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQuY3BwCkBAIC0yOCw4ICsyOCw5IEBACiAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRl
ICJXZWJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTE0Niw0ICsxNDcsMTIgQEAgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSBJ
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6dG9vbGJhcnNBcmVWaXNpYmxlKFcKICAgICByZXR1
cm4gbV9jbGllbnQudG9vbGJhcnNBcmVWaXNpYmxlKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6ZGlkUmVhY2hB
cHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViUGFnZSogcGFnZSwgV2ViU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKQoreworICAgIGlmICghbV9jbGll
bnQuZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fY2xpZW50LmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRvQVBJ
KHBhZ2UpLCB0b0FQSShvcmlnaW4pLCB0b3RhbEJ5dGVzTmVlZGVkLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50LmgKaW5kZXggZGUyOTI4YS4uYjhhNDgyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIEFQSU9iamVjdDsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFn
ZTsKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tCdW5kbGVQYWdlVUlDbGllbnQsIGtXS0J1bmRs
ZVBhZ2VVSUNsaWVudEN1cnJlbnRWZXJzaW9uPiB7CiBwdWJsaWM6CkBAIC02NCw2ICs2NSw4IEBA
IHB1YmxpYzoKICAgICBXS0J1bmRsZVBhZ2VVSUVsZW1lbnRWaXNpYmlsaXR5IHN0YXR1c0Jhcklz
VmlzaWJsZShXZWJQYWdlKik7CiAgICAgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSBt
ZW51QmFySXNWaXNpYmxlKFdlYlBhZ2UqKTsKICAgICBXS0J1bmRsZVBhZ2VVSUVsZW1lbnRWaXNp
YmlsaXR5IHRvb2xiYXJzQXJlVmlzaWJsZShXZWJQYWdlKik7CisKKyAgICB2b2lkIGRpZFJlYWNo
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBhZ2UqLCBXZWJTZWN1cml0eU9yaWdpbios
IGludDY0X3QgdG90YWxCeXRlc05lZWRlZCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBjN2ZjOWE3Li40ZmI2NWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJTZWFyY2hQ
b3B1cE1lbnUuaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JDaG9vc2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KQEAgLTU0OSw5ICs1NTAsMTAg
QEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hl
ZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QpCit2
b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBSZWZQdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3Vy
aXR5T3JpZ2luID0gV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luLT50
b1N0cmluZygpKTsKKyAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRSZWFj
aEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShtX3BhZ2UsIHdlYlNlY3VyaXR5T3JpZ2luLmdl
dCgpLCB0b3RhbEJ5dGVzTmVlZGVkKTsKIH0KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA5MDc5MGNlLi5hMzNkZWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDIuZGVmCkBAIC0xOTUsNiArMTk1LDcgQEAgRVhQT1JUUwogICAgICAgICA/bGFzdENo
aWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP25l
eHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cHJl
dmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/
bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0pAWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BX
VEZAQFNBP0FWMTJAX0tAWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASEBa
CiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBJQFoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCA3MWI2ZjcxLi4zNzU4N2M3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDJDRkxpdGUuZGVmCkBAIC0xOTIsNiArMTkyLDcgQEAgRVhQT1JUUwogICAgICAgICA/
bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAg
ICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAg
ICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgorICAg
ICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0pAWgogICAgICAgICA/bnVtYmVyQFN0
cmluZ0BXVEZAQFNBP0FWMTJAX0tAWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FW
MTJASEBaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBJQFoKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiODg2NDczLi5jNDkz
Yzc0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTItMDktMTIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhl
LmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbV0syXVtXS1RSXSBUZXN0UnVubmVyIG5lZWRz
IHRvIGltcGxlbWVudCBkdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjM3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzdXBw
b3J0IGZvciBkdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzCisgICAgICAgIGFu
ZCBkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhIGluCisgICAgICAgIFdl
YktpdFRlc3RSdW5uZXIgYW5kIHByb3Blcmx5IGR1bXAgdGhlIGluZm9ybWF0aW9uCisgICAgICAg
IGV4cGVjdGVkIGJ5IHRoZSB0ZXN0cy4KKworICAgICAgICBJZiB0aGUgYXBwbGljYXRpb24gY2Fj
aGUgcXVvdGEgaXMgcmVhY2hlZCBmb3IgYSBnaXZlbgorICAgICAgICBzZWN1cml0eSBvcmlnaW4s
IFdlYktpdFRlc3RSdW5uZXIgd2lsbCByZXNldCB0aGUgcXVvdGEKKyAgICAgICAgdG8gaXRzIGRl
ZmF1bHQgdmFsdWUsIHVubGVzcyBpbnRydWN0ZWQgbm90IHRvIHZpYQorICAgICAgICBkaXNhbGxv
d0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhKCkuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2Up
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlYWNoQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKEluamVj
dGVkQnVuZGxlUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6
CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlv
bkNhY2hlUXVvdGEpOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
ZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyk6CisgICAgICAgIChUZXN0UnVu
bmVyKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2hvdWxkRGlzYWxsb3dJbmNyZWFzZUZv
ckFwcGxpY2F0aW9uQ2FjaGVRdW90YSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNob3Vs
ZER1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MpOgorCiAyMDEyLTA5LTEyICBT
aW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
IEJ1aWxkIG9uIFdpbmRvd3MgcmVxdWlyZXMgYmlzb24vZmxleCBpbiBQQVRICmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbAppbmRleCAzNjI1NTVmLi5jYTM1NjVjIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKQEAgLTQ3LDYgKzQ3LDcgQEAgbW9kdWxlIFdUUiB7CiAgICAgICAgIHZvaWQgZHVt
cFJlc291cmNlTG9hZENhbGxiYWNrcygpOwogICAgICAgICB2b2lkIGR1bXBSZXNvdXJjZVJlc3Bv
bnNlTUlNRVR5cGVzKCk7CiAgICAgICAgIHZvaWQgZHVtcFdpbGxDYWNoZVJlc3BvbnNlKCk7Cisg
ICAgICAgIHZvaWQgZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpOwogCiAg
ICAgICAgIC8vIFNwZWNpYWwgb3B0aW9ucy4KICAgICAgICAgdm9pZCBrZWVwV2ViSGlzdG9yeSgp
OwpAQCAtMTEzLDYgKzExNCw3IEBAIG1vZHVsZSBXVFIgewogICAgICAgICBsb25nIGxvbmcgYXBw
bGljYXRpb25DYWNoZURpc2tVc2FnZUZvck9yaWdpbihpbiBET01TdHJpbmcgb3JpZ2luKTsKICAg
ICAgICAgdm9pZCBjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oaW4gRE9NU3RyaW5nIG5h
bWUpOwogICAgICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShpbiB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXMpOworICAgICAgICB2b2lkIGRpc2FsbG93SW5jcmVhc2VGb3JB
cHBsaWNhdGlvbkNhY2hlUXVvdGEoKTsKIAogICAgICAgICAvLyBDb21wb3NpdGluZyB0ZXN0aW5n
LgogICAgICAgICBET01TdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAKaW5kZXggNjc0NmE3MC4uN2ZhN2I0MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApA
QCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2VQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0J1bmRsZVByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLU2VjdXJpdHlPcmlnaW4u
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMUmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMzQ5LDYgKzM1MSw3IEBA
IEluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBw
YWdlKQogICAgICAgICAwLCAvKnN0YXR1c0JhcklzVmlzaWJsZSovCiAgICAgICAgIDAsIC8qbWVu
dUJhcklzVmlzaWJsZSovCiAgICAgICAgIDAsIC8qdG9vbGJhcnNBcmVWaXNpYmxlKi8KKyAgICAg
ICAgZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEsCiAgICAgfTsKICAgICBXS0J1
bmRsZVBhZ2VTZXRVSUNsaWVudChtX3BhZ2UsICZ1aUNsaWVudCk7CiAKQEAgLTEzMTgsNiArMTMy
MSwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQo
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUgogICAgIHN0YXRpY19jYXN0PEluamVjdGVk
QnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+d2lsbFJ1bkphdmFT
Y3JpcHRQcm9tcHQobWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSk7CiB9CiAKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGludDY0X3QgdG90
YWxCeXRlc05lZWRlZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2Fz
dDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRp
ZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKG9yaWdpbiwgdG90YWxCeXRlc05lZWRl
ZCk7Cit9CisKIHN0YXRpYyBXVEY6OlN0cmluZyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQoY29u
c3QgV1RGOjpTdHJpbmcmIHBhdGgpCiB7CiAgICAgc2l6ZV90IHBvcyA9IHBhdGguZmluZCgiZmls
ZTovLyIpOwpAQCAtMTQwMiw2ICsxNDEwLDM0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3
aWxsUnVuSmF2YVNjcmlwdFByb21wdChXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1JlCiAg
ICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIp
OwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRl
c05lZWRlZCkKK3sKKyAgICBpZiAoIUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50ZXN0UnVubmVy
KCktPnNob3VsZER1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gRm9yIGV4YW1wbGUsIG51bWJlcnMgZnJvbSAzMDAwMCAtIDM5
OTk5IHdpbGwgb3V0cHV0IGFzIDMwMDAwLgorICAgIC8vIFJvdW5kaW5nIHVwIG9yIGRvd24gZG9l
cyBub3QgcmVhbGx5IG1hdHRlciBmb3IgdGhlc2UgdGVzdHMuIEl0J3MKKyAgICAvLyBzdWZmaWNp
ZW50IHRvIGp1c3QgZ2V0IGEgcmFuZ2Ugb2YgMTAwMDAgdG8gZGV0ZXJtaW5lIGlmIHdlIHdlcmUK
KyAgICAvLyBhYm92ZSBvciBiZWxvdyBhIHRocmVzaG9sZC4KKyAgICBpbnQ2NF90IHRydW5jYXRl
ZFNwYWNlTmVlZGVkID0gKHRvdGFsQnl0ZXNOZWVkZWQgLyAxMDAwMCkgKiAxMDAwMDsKKworICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZExpdGVyYWwo
IlVJIERFTEVHQVRFIEFQUExJQ0FUSU9OIENBQ0hFIENBTExCQUNLOiBleGNlZWRlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOnsiKTsKKyAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcoYWRvcHRX
SyhXS1NlY3VyaXR5T3JpZ2luQ29weVByb3RvY29sKG9yaWdpbikpKSk7CisgICAgSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZT
dHJpbmcoYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ29weUhvc3Qob3JpZ2luKSkpKTsKKyAgICBJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmRMaXRlcmFsKCIs
ICIpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVu
ZChXVEY6OlN0cmluZzo6bnVtYmVyKFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KG9yaWdpbikpKTsK
KyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmRMaXRl
cmFsKCJ9IHRvdGFsU3BhY2VOZWVkZWQ6fiIpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChXVEY6OlN0cmluZzo6bnVtYmVyKHRydW5jYXRlZFNw
YWNlTmVlZGVkKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKCdcbicpOworCisgICAgaWYgKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50ZXN0
UnVubmVyKCktPnNob3VsZERpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUmVzZXQgZGVmYXVsdCBhcHBsaWNhdGlvbiBj
YWNoZSBxdW90YS4KKyAgICBXS0J1bmRsZVJlc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgYWRvcHRXSyhXS1NlY3VyaXR5T3Jp
Z2luQ29weVRvU3RyaW5nKG9yaWdpbikpLmdldCgpKTsKK30KKwogLy8gRWRpdG9yIENsaWVudCBD
YWxsYmFja3MKIAogYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEJlZ2luRWRpdGluZyhX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiByYW5nZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCmluZGV4IDNhZDIwM2QuLjM3MGY0
MjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaApAQCAtMTI0LDExICsxMjQsMTMgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgdm9pZCB3aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KFdLQnVuZGxlUGFnZVJlZiwg
V0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgd2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKFdL
QnVuZGxlUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgd2lsbFJ1bkphdmFT
Y3JpcHRQcm9tcHQoV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmlu
Z1JlZiBkZWZhdWx0VmFsdWUsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKFdLQnVuZGxlUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgaW50NjRfdCB0b3Rh
bEJ5dGVzTmVlZGVkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICB2b2lkIHdpbGxBZGRN
ZXNzYWdlVG9Db25zb2xlKFdLU3RyaW5nUmVmIG1lc3NhZ2UsIHVpbnQzMl90IGxpbmVOdW1iZXIp
OwogICAgIHZvaWQgd2lsbFNldFN0YXR1c2JhclRleHQoV0tTdHJpbmdSZWYgc3RhdHVzYmFyVGV4
dCk7CiAgICAgdm9pZCB3aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KFdLU3RyaW5nUmVmIG1lc3NhZ2Us
IFdLQnVuZGxlRnJhbWVSZWYpOwogICAgIHZvaWQgd2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKFdL
U3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJhbWVSZWYpOwogICAgIHZvaWQgd2lsbFJ1bkph
dmFTY3JpcHRQcm9tcHQoV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZh
bHVlLCBXS0J1bmRsZUZyYW1lUmVmKTsKKyAgICB2b2lkIGRpZFJlYWNoQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKFdLU2VjdXJpdHlPcmlnaW5SZWYsIGludDY0X3QgdG90YWxCeXRlc05lZWRl
ZCk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgLy8gRnVsbCBTY3JlZW4gY2xp
ZW50CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAppbmRleCBmYTAzNDhkLi5kMDFkYzhkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTgwLDYgKzgw
LDggQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgLCBtX2R1bXBSZXNvdXJjZUxvYWRD
YWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKGZh
bHNlKQogICAgICwgbV9kdW1wV2lsbENhY2hlUmVzcG9uc2UoZmFsc2UpCisgICAgLCBtX2R1bXBB
cHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoZmFsc2UpCisgICAgLCBtX2Rpc2FsbG93
SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoZmFsc2UpCiAgICAgLCBtX3dhaXRUb0R1
bXAoZmFsc2UpCiAgICAgLCBtX3Rlc3RSZXBhaW50KGZhbHNlKQogICAgICwgbV90ZXN0UmVwYWlu
dFN3ZWVwSG9yaXpvbnRhbGx5KGZhbHNlKQpAQCAtMzIzLDYgKzMyNSwxMSBAQCB2b2lkIFRlc3RS
dW5uZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXMpCiAgICAgV0tCdW5kbGVTZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBvcmlnaW4uZ2V0KCksIGJ5dGVzKTsKIH0KIAor
dm9pZCBUZXN0UnVubmVyOjpkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3Rh
KCkKK3sKKyAgICBtX2Rpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEgPSB0
cnVlOworfQorCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYg
bmFtZSkKIHsKICAgICByZXR1cm4gV0tCdW5kbGVQYWdlSXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQo
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCB0b1dLKG5hbWUpLmdldCgp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmgKaW5kZXggNzdhZGQwZS4uOGU0MDQ5MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpIHsgbV9kdW1wUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZTsgfQogICAgIHZvaWQgZHVtcFJlc291cmNlUmVzcG9uc2VN
SU1FVHlwZXMoKSB7IG1fZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMgPSB0cnVlOyB9CiAg
ICAgdm9pZCBkdW1wV2lsbENhY2hlUmVzcG9uc2UoKSB7IG1fZHVtcFdpbGxDYWNoZVJlc3BvbnNl
ID0gdHJ1ZTsgfQorICAgIHZvaWQgZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNr
cygpIHsgbV9kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzID0gdHJ1ZTsgfQog
CiAgICAgdm9pZCBzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wgdmFsdWUpIHsg
bV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzID0gdmFsdWU7IH0KICAgICB2b2lkIHNldFNob3VsZER1
bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soYm9vbCB2YWx1ZSkgeyBtX2R1bXBQcm9ncmVzc0Zp
bmlzaGVkQ2FsbGJhY2sgPSB2YWx1ZTsgfQpAQCAtMTQ5LDYgKzE1MCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEFwcENhY2hlTWF4aW11bVNpemUodWludDY0X3QpOwogICAgIGxvbmcgbG9uZyBh
cHBsaWNhdGlvbkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG9yaWdpbik7CiAg
ICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25n
KTsKKyAgICB2b2lkIGRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKTsK
KyAgICBib29sIHNob3VsZERpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEo
KSB7IHJldHVybiBtX2Rpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGE7IH0K
IAogICAgIC8vIFByaW50aW5nCiAgICAgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5k
ZXgpOwpAQCAtMTcxLDYgKzE3NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZER1bXBSZXNv
dXJjZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBSZXNvdXJjZUxvYWRDYWxs
YmFja3M7IH0KICAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlczsgfQogICAgIGJv
b2wgc2hvdWxkRHVtcFdpbGxDYWNoZVJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wV2ls
bENhY2hlUmVzcG9uc2U7IH0KKyAgICBib29sIHNob3VsZER1bXBBcHBsaWNhdGlvbkNhY2hlRGVs
ZWdhdGVDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBBcHBsaWNhdGlvbkNhY2hlRGVs
ZWdhdGVDYWxsYmFja3M7IH0KIAogICAgIGJvb2wgaXNQb2xpY3lEZWxlZ2F0ZUVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX3BvbGljeURlbGVnYXRlRW5hYmxlZDsgfQogICAgIGJvb2wgaXNQb2xp
Y3lEZWxlZ2F0ZVBlcm1pc3NpdmUoKSBjb25zdCB7IHJldHVybiBtX3BvbGljeURlbGVnYXRlUGVy
bWlzc2l2ZTsgfQpAQCAtMjY3LDYgKzI3MSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlN
RVR5cGVzOwogICAgIGJvb2wgbV9kdW1wV2lsbENhY2hlUmVzcG9uc2U7CisgICAgYm9vbCBtX2R1
bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3M7CisgICAgYm9vbCBtX2Rpc2FsbG93
SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGE7CiAgICAgYm9vbCBtX3dhaXRUb0R1bXA7
IC8vIFRydWUgaWYgd2FpdFVudGlsRG9uZSgpIGhhcyBiZWVuIGNhbGxlZCwgYnV0IG5vdGlmeURv
bmUoKSBoYXMgbm90IHlldCBiZWVuIGNhbGxlZC4KICAgICBib29sIG1fdGVzdFJlcGFpbnQ7CiAg
ICAgYm9vbCBtX3Rlc3RSZXBhaW50U3dlZXBIb3Jpem9udGFsbHk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>