<?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>167491</bug_id>
          
          <creation_ts>2017-01-27 00:34:42 -0800</creation_ts>
          <short_desc>[Mac] In-process memory pressure monitor for WebContent processes.</short_desc>
          <delta_ts>2017-08-03 07:37:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=175133</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>167751</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>barraclough</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1270586</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-01-27 00:34:42 -0800</bug_when>
    <thetext>I&apos;m working on a mechanism that periodically monitors the memory pressure of WebContent processes from within the process and responds accordingly.
This will allow us to be more strict about what constitutes pressure, while also allows multiple tiers of pressure instead of one big spooky lever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270589</commentid>
    <comment_count>1</comment_count>
      <attachid>299918</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-01-27 00:52:13 -0800</bug_when>
    <thetext>Created attachment 299918
Work in progress

This is where I&apos;m currently at. Every 30 seconds, WebContent processes check their own memory footprint (as reported by vm_info.phys_footprint) and choose one of four pressure levels:

* Unrestricted (below 1GB)
* Conservative (1GB+)
* Strict (2GB+)
* Panic (4GB+)

Unrestricted and Conservative are currently the same.

When reaching Strict, we invoke the non-critical memory pressure handler, and start returning true for MemoryPressureHandler::isUnderMemoryPressure().

When reaching Panic, we synchronously invoke the critical memory pressure handler, and if that fails to bring us below the Panic threshold, we crash the process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270590</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-27 00:53:24 -0800</bug_when>
    <thetext>Attachment 299918 did not pass style-queue:


ERROR: Source/WebCore/platform/MemoryPressureHandler.h:61:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/platform/MemoryPressureHandler.h:62:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270596</commentid>
    <comment_count>3</comment_count>
      <attachid>299920</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-01-27 01:08:45 -0800</bug_when>
    <thetext>Created attachment 299920
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270605</commentid>
    <comment_count>4</comment_count>
      <attachid>299925</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-01-27 01:47:59 -0800</bug_when>
    <thetext>Created attachment 299925
Work in progress

All the mac EWS&apos;es not having RELEASE_LOG is pretty sad :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270623</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-01-27 05:37:16 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 299918 [details]
&gt; Work in progress
&gt; 
&gt; This is where I&apos;m currently at. Every 30 seconds, WebContent processes check
&gt; their own memory footprint (as reported by vm_info.phys_footprint) and
&gt; choose one of four pressure levels:
&gt; 

Isn&apos;t this a concern on mobile devices regarding battery usage? If the user has a browser with N tabs, and each tab is firing a timer each 30 seconds .....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270626</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-01-27 06:15:39 -0800</bug_when>
    <thetext>Yep, I don&apos;t intend to enable this on any mobile operating systems :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271222</commentid>
    <comment_count>7</comment_count>
      <attachid>300098</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-01-30 04:37:53 -0800</bug_when>
    <thetext>Created attachment 300098
Getting closer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271487</commentid>
    <comment_count>8</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-01-30 16:59:58 -0800</bug_when>
    <thetext>&lt;rdar://problem/30116072&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271522</commentid>
    <comment_count>9</comment_count>
      <attachid>300172</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-01-30 17:52:16 -0800</bug_when>
    <thetext>Created attachment 300172
Basically a patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271543</commentid>
    <comment_count>10</comment_count>
      <attachid>300178</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-01-30 18:29:07 -0800</bug_when>
    <thetext>Created attachment 300178
Basically a patch that also builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271571</commentid>
    <comment_count>11</comment_count>
      <attachid>300185</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-01-30 21:26:31 -0800</bug_when>
    <thetext>Created attachment 300185
Patch

Without unrelated Tools changes this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271658</commentid>
    <comment_count>12</comment_count>
      <attachid>300185</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-01-31 03:58:49 -0800</bug_when>
    <thetext>Comment on attachment 300185
Patch

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

r=me

&gt; Source/WebCore/platform/MemoryPressureHandler.cpp:55
&gt; +    if (use)
&gt; +        m_measurementTimer.startRepeating(30);
&gt; +    else
&gt; +        m_measurementTimer.stop();

Never ending timers are not super nice. But I suppose this is the best we can do for now.

&gt; Source/WebCore/platform/MemoryPressureHandler.h:62
&gt; +    Unrestricted, // Allocate as much as you want
&gt; +    Conservative, // Maybe you don&apos;t cache every single thing
&gt; +    Strict, // Time to start pinching pennies for real
&gt; +    Panic, // OH GOD WE&apos;RE SINKING, THROW EVERYTHING OVERBOARD

Missing periods at the end of the comments. Also, they could be neatly aligned.

&gt; Source/WebCore/platform/MemoryPressureHandler.h:152
&gt; +    MemoryUsagePolicy memoryUsagePolicy() const { return m_memoryUsagePolicy; } 

It is confusing that this is only gives sensible values on Mac. Maybe it should be private until it is widely supported? Maybe naming should reflect the availability or it should be #if&apos;d out when not available?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271661</commentid>
    <comment_count>13</comment_count>
      <attachid>300185</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-01-31 04:18:19 -0800</bug_when>
    <thetext>Comment on attachment 300185
Patch

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

&gt; Source/WebCore/platform/MemoryPressureHandler.cpp:99
&gt; +static MemoryUsagePolicy policyForFootprint(size_t footprint)
&gt; +{
&gt; +    if (footprint &gt;= thresholdForPolicy(MemoryUsagePolicy::Panic))
&gt; +        return MemoryUsagePolicy::Panic;
&gt; +    if (footprint &gt;= thresholdForPolicy(MemoryUsagePolicy::Strict))
&gt; +        return MemoryUsagePolicy::Strict;
&gt; +    if (footprint &gt;= thresholdForPolicy(MemoryUsagePolicy::Conservative))
&gt; +        return MemoryUsagePolicy::Conservative;
&gt; +    return MemoryUsagePolicy::Unrestricted;
&gt; +}

Should we also consider overall system memory pressure?

&gt; Source/WebCore/platform/MemoryPressureHandler.cpp:104
&gt; +NEVER_INLINE void MemoryPressureHandler::didExceedMemoryLimitAndFailedToRecover()
&gt; +{
&gt; +    CRASH();
&gt; +}

Can we limit this to background tabs only? Shooting down foreground is more risky and annoying to user.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272450</commentid>
    <comment_count>14</comment_count>
      <attachid>300407</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-02-02 06:51:02 -0800</bug_when>
    <thetext>Created attachment 300407
Patch

With suggestions from Antti and Geoff slightly incorporated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272460</commentid>
    <comment_count>15</comment_count>
      <attachid>300407</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-02-02 07:45:41 -0800</bug_when>
    <thetext>Comment on attachment 300407
Patch

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

&gt; Source/WebCore/platform/MemoryPressureHandler.cpp:70
&gt; +static size_t thresholdForPolicy(MemoryUsagePolicy policy)

constexpr?

&gt; Source/WebCore/platform/MemoryPressureHandler.h:81
&gt; +    void setDidExceedMemoryLimitAndFailedToRecoverCallback(WTF::Function&lt;void()&gt; function) { m_didExceedMemoryLimitAndFailedToRecoverCallback = WTFMove(function); }
&gt; +    void setProcessIsEligibleForMemoryKillCallback(WTF::Function&lt;bool()&gt; function) { m_processIsEligibleForMemoryKillCallback = WTFMove(function); }

These are not consistent with each other. How about calling the first one &quot;MemoryKillCallback&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272493</commentid>
    <comment_count>16</comment_count>
      <attachid>300417</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-02-02 09:44:42 -0800</bug_when>
    <thetext>Created attachment 300417
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272520</commentid>
    <comment_count>17</comment_count>
      <attachid>300417</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-02 10:37:24 -0800</bug_when>
    <thetext>Comment on attachment 300417
Patch for landing

Clearing flags on attachment: 300417

Committed r211571: &lt;http://trac.webkit.org/changeset/211571&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272521</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-02 10:37:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272575</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-02 12:24:26 -0800</bug_when>
    <thetext>Follow-up Windows / GTK build fix at &lt;http://trac.webkit.org/changeset/211582&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272593</commentid>
    <comment_count>20</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-02-02 13:01:28 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 300417 [details]
&gt; Patch for landing
&gt; 
&gt; Clearing flags on attachment: 300417
&gt; 
&gt; Committed r211571: &lt;http://trac.webkit.org/changeset/211571&gt;

This change appears to have caused API test WebKit1.MemoryPressureHandler to fail with an assertion:

https://build.webkit.org/builders/Apple%20El%20Capitan%20Debug%20WK2%20%28Tests%29/builds/10779/steps/run-api-tests/logs/stdio

UNEXPECTEDLY EXITED WebKit1.MemoryPressureHandler
ASSERTION FAILED: s_mainRunLoop
/Volumes/Data/slave/elcapitan-debug/build/Source/WTF/wtf/RunLoop.cpp(66) : static WTF::RunLoop &amp;WTF::RunLoop::main()
1   0x109fe2ca0 WTFCrash
2   0x10a033afe WTF::RunLoop::main()
3   0x1124ee43e WebCore::MemoryPressureHandler::MemoryPressureHandler()
4   0x1124ee6f5 WebCore::MemoryPressureHandler::MemoryPressureHandler()
5   0x1124ef110 WTF::NeverDestroyed&lt;WebCore::MemoryPressureHandler&gt;::NeverDestroyed&lt;&gt;()
6   0x1124eeb15 WTF::NeverDestroyed&lt;WebCore::MemoryPressureHandler&gt;::NeverDestroyed&lt;&gt;()
7   0x1124ee3dd WebCore::MemoryPressureHandler::singleton()
8   0x10fe539e2 WebInstallMemoryPressureHandler::$_4::operator()() const
9   0x10fe539b5 void std::__1::__call_once_proxy&lt;std::__1::tuple&lt;WebInstallMemoryPressureHandler::$_4&gt; &gt;(void*)
10  0x7fff84eb26e9 std::__1::__call_once(unsigned long volatile&amp;, void*, void (*)(void*))
11  0x10fe28e85 WebInstallMemoryPressureHandler
12  0x108507b41 TestWebKitAPI::WebKit1_MemoryPressureHandler_Test::TestBody()
13  0x1085f73da testing::Test::Run()
14  0x1085f7cbd testing::internal::TestInfoImpl::Run()
15  0x1085f885d testing::TestCase::Run()
16  0x1085fe7e2 testing::internal::UnitTestImpl::RunAllTests()
17  0x1085fe459 testing::UnitTest::Run()
18  0x108505e2e TestWebKitAPI::TestsController::run(int, char**)
19  0x1085edde4 main
20  0x7fff9459c5ad start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272604</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-02 13:18:15 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 167751</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272642</commentid>
    <comment_count>22</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-02-02 14:33:47 -0800</bug_when>
    <thetext>Assertion means someone needs to call RunLoop::initializeMainRunLoop().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272789</commentid>
    <comment_count>23</comment_count>
      <attachid>300494</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-02-02 21:19:15 -0800</bug_when>
    <thetext>Created attachment 300494
Patch for landing II

Put the RunLoop::Timer in a unique_ptr so we don&apos;t try to instantiate it on WK1. Merged in Windows build fixes from Chris.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272822</commentid>
    <comment_count>24</comment_count>
      <attachid>300494</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-02 23:26:51 -0800</bug_when>
    <thetext>Comment on attachment 300494
Patch for landing II

Clearing flags on attachment: 300494

Committed r211622: &lt;http://trac.webkit.org/changeset/211622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272823</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-02 23:26:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299918</attachid>
            <date>2017-01-27 00:52:13 -0800</date>
            <delta_ts>2017-01-27 01:08:45 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>wip-167491.diff</filename>
            <type>text/plain</type>
            <size>22792</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggZTc4MGMzYy4uZmZhNTAzZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTE3MDUsMTEgKzE3MDUsNiBAQCB2b2lk
IEhlYXA6Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpCiAgICAgbV9zd2VlcGVyLT5zdGFydFN3
ZWVwaW5nKCk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmRpZEV4Y2VlZE1heExpdmVT
aXplKCkKLXsKLSAgICBDUkFTSCgpOwotfQotCiB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25M
aW1pdHMoKQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKQEAgLTE3
NDEsOSArMTczNiw2IEBAIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAKICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiZXh0cmFNZW1vcnlTaXplKCkgPSAiLCBl
eHRyYU1lbW9yeVNpemUoKSwgIiwgY3VycmVudEhlYXBTaXplID0gIiwgY3VycmVudEhlYXBTaXpl
LCAiXG4iKTsKLQotICAgIGlmIChtX21heExpdmVTaXplICYmIGN1cnJlbnRIZWFwU2l6ZSA+IG1f
bWF4TGl2ZVNpemUpCi0gICAgICAgIGRpZEV4Y2VlZE1heExpdmVTaXplKCk7CiAgICAgCiAgICAg
aWYgKE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSAmJiBjdXJyZW50SGVhcFNpemUgPiBPcHRpb25z
OjpnY01heEhlYXBTaXplKCkpCiAgICAgICAgIEhlYXBTdGF0aXN0aWNzOjpleGl0V2l0aEZhaWx1
cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCAyYTYyMWI2Li45MWU0OGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0xMzIsOSArMTMyLDYgQEAgcHVibGljOgog
CiAgICAgVk0qIHZtKCkgY29uc3Q7CiAKLSAgICAvLyBTZXQgYSBoYXJkIGxpbWl0IHdoZXJlIEpT
QyB3aWxsIGNyYXNoIGlmIGxpdmUgaGVhcCBzaXplIGV4Y2VlZHMgaXQuCi0gICAgdm9pZCBzZXRN
YXhMaXZlU2l6ZShzaXplX3Qgc2l6ZSkgeyBtX21heExpdmVTaXplID0gc2l6ZTsgfQotCiAgICAg
TWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZTsgfQogICAg
IE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVh
ZHM7IH0KIApAQCAtNjAxLDkgKzU5OCw2IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fYmxvY2tC
eXRlc0FsbG9jYXRlZCB7IDAgfTsKICAgICBzaXplX3QgbV9leHRlcm5hbE1lbW9yeVNpemUgeyAw
IH07CiAjZW5kaWYKLQotICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBkaWRFeGNlZWRN
YXhMaXZlU2l6ZSgpOwotICAgIHNpemVfdCBtX21heExpdmVTaXplIHsgMCB9OwogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxNdXRhdG9yU2NoZWR1bGVyPiBtX3NjaGVkdWxlcjsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZkZDg3MDEuLmU0MmUw
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzM3LDYg
KzMzNyw4IEBACiAJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM3QjE1
MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovOyB9OwogCQlBOEE0NzQ4QzE1MUE4
MjY0MDA0MTIzRkYgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi87IH07
CiAJCUFEN0M0MzRCMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhC
IC8qIEV4cGVjdGVkLmggKi87IH07CisJCUFERjJDRTY2MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1v
cnlGb290cHJpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBREYyQ0U2NzFFMzlG
MTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1v
cnlGb290cHJpbnQuY3BwICovOyB9OwogCQlCMzhGRDdCRDE2ODk1M0U4MDA2NUM5NjkgLyogRmVh
dHVyZURlZmluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIzOEZEN0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oICovOyB9Owog
CQlDNEY4QTkzNzE5QzY1RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEY4QTkzNjE5QzY1RUI0MDBCMkIxNUQg
LyogU3RvcHdhdGNoLmggKi87IH07CiAJCUM4QjBFMUExRTAxQTQ4NkVCOTVFMEQxMSAvKiBJbmRl
eFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEz
N0UxRDdEQkQ4NEFDMzhGQUU0RDM0IC8qIEluZGV4U2V0LmggKi87IH07CkBAIC03MTksNiArNzIx
LDggQEAKIAkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwZWN0ZWQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rw
cmludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJpbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURC
IC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZW1vcnlGb290cHJpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmVhdHVyZURlZmluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVRpbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAwNSw2ICsxMDA5LDggQEAKIAkJCQlBOEE0NzJD
QjE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmggKi8sCiAJCQkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVC
QzMwIC8qIE1lZGlhVGltZS5jcHAgKi8sCiAJCQkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8q
IE1lZGlhVGltZS5oICovLAorCQkJCUFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlG
b290cHJpbnQuaCAqLywKKwkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50LmNwcCAqLywKIAkJCQlBOEE0NzJDQzE1MUE4MjVCMDA0MTIzRkYgLyogTWVzc2FnZVF1
ZXVlLmggKi8sCiAJCQkJQThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3Iu
Y3BwICovLAogCQkJCUE4QTQ3MkNFMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmgg
Ki8sCkBAIC0xNDk0LDYgKzE1MDAsNyBAQAogCQkJCUE4QTQ3NDFDMTUxQTgyNUIwMDQxMjNGRiAv
KiBSZWZQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDFFMTUxQTgyNUIwMDQxMjNGRiAv
KiBSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3
MCAvKiBSdW5Mb29wLmggaW4gSGVhZGVycyAqLywKKwkJCQlBREYyQ0U2NjFFMzlGMTA2MDA2ODg5
REIgLyogTWVtb3J5Rm9vdHByaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDY5NDE5MjE2RUFB
RjZEMDAyNEUxNDYgLyogUnVuTG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTA5OEIw
MDFDMTY5RTA3MDAwODc3OTcgLyogU2FuZGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRG
M0IwRjcxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTcwMSw2ICsxNzA4LDcgQEAKIAkJCQkxQUNBREQ4NDE4ODQ0ODAxMDBEOEI3MUQg
LyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gaW4gU291cmNlcyAqLywKIAkJCQlB
OEE0NzNBRTE1MUE4MjVCMDA0MTIzRkYgLyogZGl5LWZwLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczQjAxNTFBODI1QjAwNDEyM0ZGIC8qIGRvdWJsZS1jb252ZXJzaW9uLmNjIGluIFNvdXJj
ZXMgKi8sCisJCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCQTE1MUE4MjVCMDA0MTIzRkYgLyogZHRvYS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCMzE1MUE4MjVCMDA0MTIzRkYgLyogZmFzdC1k
dG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZh
c3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDU4
YzExNmIuLjgxYWY5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC02NCw2ICs2NCw3IEBAIHNl
dChXVEZfSEVBREVSUwogICAgIE1hbGxvY1B0ci5oCiAgICAgTWF0aEV4dHJhcy5oCiAgICAgTWVk
aWFUaW1lLmgKKyAgICBNZW1vcnlGb290cHJpbnQuaAogICAgIE1lc3NhZ2VRdWV1ZS5oCiAgICAg
TWV0YUFsbG9jYXRvci5oCiAgICAgTWV0YUFsbG9jYXRvckhhbmRsZS5oCkBAIC0yMDQsNiArMjA1
LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgTUQ1LmNwcAogICAgIE1haW5UaHJlYWQuY3BwCiAg
ICAgTWVkaWFUaW1lLmNwcAorICAgIE1lbW9yeUZvb3RwcmludC5jcHAKICAgICBNZXRhQWxsb2Nh
dG9yLmNwcAogICAgIE1vbm90b25pY1RpbWUuY3BwCiAgICAgTnVtYmVyT2ZDb3Jlcy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlGb290cHJpbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmRkY2FmMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290
cHJpbnQuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVtb3J5Rm9v
dHByaW50LmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxtYWNoL21hY2guaD4K
KyNpbmNsdWRlIDxtYWNoL3Rhc2tfaW5mby5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgewor
CitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKK3sKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICB0YXNrX3ZtX2luZm9fZGF0YV90IHZtSW5mbzsKKyAgICBtYWNoX21zZ190
eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19WTV9JTkZPX0NPVU5UOworICAgIGtlcm5fcmV0dXJu
X3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hfdGFza19zZWxmKCksIFRBU0tfVk1fSU5GTywgKHRh
c2tfaW5mb190KSAmdm1JbmZvLCAmY291bnQpOworICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUND
RVNTKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiB2bUluZm8ucGh5
c19mb290cHJpbnQ7CisjZWxzZQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisjZW5kaWYKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43YjhlY2E4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5
Rm9vdHByaW50LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1lbW9yeUZvb3RwcmludCgpOworCit9
CisKK3VzaW5nIFdURjo6bWVtb3J5Rm9vdHByaW50OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Db21tb25WTS5jcHAKaW5kZXggYjFiMDZhYS4uMGQ1YTRhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NvbW1vblZNLmNwcApAQCAtNDYsMTAgKzQ2LDYgQEAgVk0mIGNvbW1vblZNU2xv
dygpCiAgICAgCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwog
ICAgIGdfY29tbW9uVk1Pck51bGwgPSAmVk06OmNyZWF0ZUxlYWtlZChMYXJnZUhlYXApLmxlYWtS
ZWYoKTsKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCi0gICAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhHQ0hlYXBTaXplID0gNCAqIEdCOwotICAgIGdfY29tbW9uVk1Pck51bGwtPmhlYXAu
c2V0TWF4TGl2ZVNpemUobWF4R0NIZWFwU2l6ZSk7Ci0jZW5kaWYKICAgICBnX2NvbW1vblZNT3JO
dWxsLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gQXQgYW55IHRpbWUsIHdlIG1heSBkbyB0aGlu
Z3MgdGhhdCBhZmZlY3QgdGhlIEdDLgogI2lmICFQTEFURk9STShJT1MpCiAgICAgZ19jb21tb25W
TU9yTnVsbC0+c2V0RXhjbHVzaXZlVGhyZWFkKHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKaW5kZXggMTgzNmMyYi4u
NGQ1NzM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAg
LTEyNCw2ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcnVuZSgpOwogICAgIHZvaWQgcHJ1
bmVTb29uKCk7CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZVNpemUg
KyBtX2RlYWRTaXplOyB9CisgICAgdW5zaWduZWQgbGl2ZVNpemUoKSBjb25zdCB7IHJldHVybiBt
X2xpdmVTaXplOyB9CisgICAgdW5zaWduZWQgZGVhZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2Rl
YWRTaXplOyB9CiAKICAgICB2b2lkIHNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwo
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBpbnRlcnZhbCkgeyBtX2RlYWREZWNvZGVkRGF0YURl
bGV0aW9uSW50ZXJ2YWwgPSBpbnRlcnZhbDsgfQogICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29u
ZHMgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVh
ZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKaW5kZXggZDY0NDQ0Yy4uNWM0NTgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9y
eVJlbGVhc2UuY3BwCkBAIC0yOSwxMiArMjksMTQgQEAKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wu
aCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNs
dWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9udENh
Y2hlLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudC5oIgogI2luY2x1ZGUgIklubGluZVN0eWxlU2hlZXRPd25lci5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUu
aCIKQEAgLTEyOCw2ICsxMzAsMzYgQEAgdm9pZCByZWxlYXNlTWVtb3J5KENyaXRpY2FsIGNyaXRp
Y2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKICNlbmRpZgogfQogCitzdGF0aWMgdW5zaWdu
ZWQgcGFnZUNvdW50KCkKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgUGFnZTo6Zm9y
RWFjaFBhZ2UoWyZdIChQYWdlJiBwYWdlKSB7CisgICAgICAgIGlmICghcGFnZS5pc1V0aWxpdHlQ
YWdlKCkpCisgICAgICAgICAgICArK2NvdW50OyAKKyAgICB9KTsKKyAgICByZXR1cm4gY291bnQ7
Cit9CisKK3ZvaWQgbG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVhdGgoKQoreworICAgIGF1
dG8mIHZtID0gY29tbW9uVk0oKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1l
bW9yeSB1c2FnZSBzdGF0aXN0aWNzIGF0IHRpbWUgb2YgZGVhdGg6Iik7CisgICAgUkVMRUFTRV9M
T0coTWVtb3J5UHJlc3N1cmUsICJHQyBoZWFwIHNpemU6ICV6dSIsIHZtLmhlYXAuc2l6ZSgpKTsK
KyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkdDIGhlYXAgZXh0cmEgbWVtb3J5IHNp
emU6ICV6dSIsIHZtLmhlYXAuZXh0cmFNZW1vcnlTaXplKCkpOworI2lmIEVOQUJMRShSRVNPVVJD
RV9VU0FHRSkKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkdDIGhlYXAgZXh0ZXJu
YWwgbWVtb3J5OiAlenUiLCB2bS5oZWFwLmV4dGVybmFsTWVtb3J5U2l6ZSgpKTsKKyNlbmRpZgor
ICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiR2xvYmFsIG9iamVjdCBjb3VudDogJXp1
Iiwgdm0uaGVhcC5nbG9iYWxPYmplY3RDb3VudCgpKTsKKworICAgIFJFTEVBU0VfTE9HKE1lbW9y
eVByZXNzdXJlLCAiUGFnZSBjb3VudDogJXUiLCBwYWdlQ291bnQoKSk7CisgICAgUkVMRUFTRV9M
T0coTWVtb3J5UHJlc3N1cmUsICJEb2N1bWVudCBjb3VudDogJXUiLCBEb2N1bWVudDo6YWxsRG9j
dW1lbnRzKCkuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9y
eUNhY2hlIGxpdmUgc2l6ZTogJWx1IE1CIiwgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmxpdmVT
aXplKCkgLyBNQik7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJNZW1vcnlDYWNo
ZSBkZWFkIHNpemU6ICVsdSBNQiIsIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5kZWFkU2l6ZSgp
IC8gTUIpOworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTGl2ZSBKYXZhU2NyaXB0
IG9iamVjdHM6Iik7CisgICAgZm9yIChhdXRvJiBpdCA6ICp2bS5oZWFwLm9iamVjdFR5cGVDb3Vu
dHMoKSkKKyAgICAgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICIgICVzOiAlZCIsIGl0
LmtleSwgaXQudmFsdWUpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBwbGF0Zm9y
bVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpIHsgfQogdm9pZCBqZXR0aXNvbkV4cGVuc2l2ZU9iamVj
dHNPblRvcExldmVsTmF2aWdhdGlvbigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9NZW1vcnlSZWxlYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2Uu
aAppbmRleCAxZDk5MzcyLi45NDQwOGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lbW9yeVJlbGVhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2Uu
aApAQCAtMzMsNSArMzMsNiBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbGVhc2VNZW1vcnkoQ3Jp
dGljYWwsIFN5bmNocm9ub3VzKTsKIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5KENyaXRpY2Fs
KTsKIHZvaWQgamV0dGlzb25FeHBlbnNpdmVPYmplY3RzT25Ub3BMZXZlbE5hdmlnYXRpb24oKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJNZW1vcnlSZWxlYXNlTm90aWZ5Q2FsbGJhY2tz
KCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGxvZ01lbW9yeVN0YXRpc3RpY3NBdFRpbWVPZkRlYXRo
KCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IGI5YWMwZTUuLjFiZDE3NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgi
CiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUZvb3RwcmludC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwxMTMgQEAgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyJiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpCiB9CiAKIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkKKyAgICA6IG1fbWVh
c3VyZW1lbnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCkKICNpZiBPUyhMSU5VWCkKLSAgICA6IG1faG9sZE9m
ZlRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9s
ZE9mZlRpbWVyRmlyZWQpCisgICAgLCBtX2hvbGRPZmZUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZUaW1lckZpcmVkKQogI2VuZGlmCiB7
CiB9CiAKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01l
bW9yeU1vbml0b3IoYm9vbCB1c2UpCit7CisgICAgaWYgKHVzZSkKKyAgICAgICAgbV9tZWFzdXJl
bWVudFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDMwKTsKKyAgICBlbHNlCisgICAgICAgIG1fbWVhc3Vy
ZW1lbnRUaW1lci5zdG9wKCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiB0b1N0cmluZyhNZW1v
cnlVc2FnZVBvbGljeSBwb2xpY3kpCit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNl
IE1lbW9yeVVzYWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQ6IHJldHVybiAiVW5yZXN0cmljdGVkIjsK
KyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpDb25zZXJ2YXRpdmU6IHJldHVybiAiQ29uc2Vy
dmF0aXZlIjsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q6IHJldHVybiAiU3Ry
aWN0IjsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYzogcmV0dXJuICJQYW5pYyI7
CisgICAgfQorfQorCitzdGF0aWMgc2l6ZV90IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2Fn
ZVBvbGljeSBwb2xpY3kpCit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIE1lbW9y
eVVzYWdlUG9saWN5OjpDb25zZXJ2YXRpdmU6CisgICAgICAgIHJldHVybiAxICogR0I7CisgICAg
Y2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0OgorICAgICAgICByZXR1cm4gMiAqIEdCOwor
ICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljOgorI2lmIENQVShYODZfNjQpIHx8IENQ
VShBUk02NCkKKyAgICAgICAgcmV0dXJuIDQgKiBHQjsKKyNlbHNlCisgICAgICAgIHJldHVybiAz
ICogR0I7CisjZW5kaWYKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
Cit9CisKK3N0YXRpYyBNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3lGb3JGb290cHJpbnQoc2l6ZV90
IGZvb3RwcmludCkKK3sKKyAgICBpZiAoZm9vdHByaW50ID49IHRocmVzaG9sZEZvclBvbGljeShN
ZW1vcnlVc2FnZVBvbGljeTo6UGFuaWMpKQorICAgICAgICByZXR1cm4gTWVtb3J5VXNhZ2VQb2xp
Y3k6OlBhbmljOworICAgIGlmIChmb290cHJpbnQgPj0gdGhyZXNob2xkRm9yUG9saWN5KE1lbW9y
eVVzYWdlUG9saWN5OjpTdHJpY3QpKQorICAgICAgICByZXR1cm4gTWVtb3J5VXNhZ2VQb2xpY3k6
OlN0cmljdDsKKyAgICBpZiAoZm9vdHByaW50ID49IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlV
c2FnZVBvbGljeTo6Q29uc2VydmF0aXZlKSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9s
aWN5OjpDb25zZXJ2YXRpdmU7CisgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5OjpVbnJlc3Ry
aWN0ZWQ7Cit9CisKK05FVkVSX0lOTElORSB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6ZGlk
RXhjZWVkTWVtb3J5TGltaXRBbmRGYWlsZWRUb1JlY292ZXIoKQoreworICAgIENSQVNIKCk7Cit9
CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQoKQor
eworICAgIGF1dG8gZm9vdHByaW50ID0gbWVtb3J5Rm9vdHByaW50KCk7CisgICAgaWYgKCFmb290
cHJpbnQpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwg
IkN1cnJlbnQgbWVtb3J5IGZvb3RwcmludDogJWx1IE1CIiwgZm9vdHByaW50LnZhbHVlKCkgLyBN
Qik7CisKKyAgICBhdXRvIG5ld1BvbGljeSA9IHBvbGljeUZvckZvb3RwcmludChmb290cHJpbnQu
dmFsdWUoKSk7CisgICAgaWYgKG5ld1BvbGljeSA9PSBtX21lbW9yeVVzYWdlUG9saWN5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeSB1
c2FnZSBwb2xpY3kgY2hhbmdlZDogJXMgLT4gJXMiLCB0b1N0cmluZyhtX21lbW9yeVVzYWdlUG9s
aWN5KSwgdG9TdHJpbmcobmV3UG9saWN5KSk7CisKKyAgICBtX21lbW9yeVVzYWdlUG9saWN5ID0g
bmV3UG9saWN5OworCisgICAgaWYgKG5ld1BvbGljeSA9PSBNZW1vcnlVc2FnZVBvbGljeTo6VW5y
ZXN0cmljdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobmV3UG9saWN5ID09IE1lbW9y
eVVzYWdlUG9saWN5OjpDb25zZXJ2YXRpdmUpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzIHBvbGljeSBieSBjaG9vc2luZyB3aGljaCBjYWNoZXMgc2hvdWxkIHJlc3BlY3QgaXQs
IGFuZCBob29raW5nIHRoZW0gdXAuIAorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KG5ld1BvbGljeSA9PSBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0KSB7CisgICAgICAgIFJFTEVB
U0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiQXR0ZW1wdGluZyB0byByZWR1Y2UgbWVtb3J5IGZvb3Rw
cmludCBieSBmcmVlaW5nIGxlc3MgaW1wb3J0YW50IG9iamVjdHMuIik7CisgICAgICAgIHJlbGVh
c2VNZW1vcnkoQ3JpdGljYWw6Ok5vLCBTeW5jaHJvbm91czo6Tm8pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlQobmV3UG9saWN5ID09IE1lbW9yeVVzYWdlUG9s
aWN5OjpQYW5pYyk7CisKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkF0dGVtcHRp
bmcgdG8gcmVkdWNlIG1lbW9yeSBmb290cHJpbnQgYnkgZnJlZWluZyBtb3JlIGltcG9ydGFudCBv
YmplY3RzLiIpOworICAgIHJlbGVhc2VNZW1vcnkoQ3JpdGljYWw6OlllcywgU3luY2hyb25vdXM6
Olllcyk7CisgICAgYXV0byBuZXdGb290cHJpbnQgPSBtZW1vcnlGb290cHJpbnQoKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChuZXdGb290cHJpbnQpOworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNz
dXJlLCAiTmV3IG1lbW9yeSBmb290cHJpbnQ6ICVsdSBNQiIsIG5ld0Zvb3RwcmludC52YWx1ZSgp
IC8gTUIpOworICAgIGlmIChuZXdGb290cHJpbnQudmFsdWUoKSA8IHRocmVzaG9sZEZvclBvbGlj
eShNZW1vcnlVc2FnZVBvbGljeTo6UGFuaWMpKSB7CisgICAgICAgIG1fbWVtb3J5VXNhZ2VQb2xp
Y3kgPSBwb2xpY3lGb3JGb290cHJpbnQobmV3Rm9vdHByaW50LnZhbHVlKCkpOworICAgICAgICBS
RUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIlByZXNzdXJlIHJlZHVjZWQgYmVsb3cgcGFuaWMg
dGhyZXNob2xkLiBOZXcgbWVtb3J5IHVzYWdlIHBvbGljeTogJXMiLCB0b1N0cmluZyhtX21lbW9y
eVVzYWdlUG9saWN5KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9MT0co
TWVtb3J5UHJlc3N1cmUsICJDcmFzaGluZyBkdWUgdG8gZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSAr
IGluYWJpbGl0eSB0byBmcmVlIHVwIG1lbW9yeSBiZWxvdyBwYW5pYyBsaW1pdC4iKTsKKyAgICBp
ZiAobV9leGl0VGltZUNhbGxiYWNrKQorICAgICAgICBtX2V4aXRUaW1lQ2FsbGJhY2soKTsKKyAg
ICBDUkFTSCgpOworfQorCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6YmVnaW5TaW11bGF0
ZWRNZW1vcnlQcmVzc3VyZSgpCiB7CiAgICAgbV9pc1NpbXVsYXRpbmdNZW1vcnlQcmVzc3VyZSA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5oCmluZGV4IDYwMWE0MWUuLjQ3YmQxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC0zNCwxNiArMzQsMTYgQEAKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKICNpZiBQTEFU
Rk9STShJT1MpCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oPgotI2VsaWYgT1MoTElOVVgpCi0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
KyNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgog
I2VuZGlmCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw2ICs1NSwxMyBA
QCBlbnVtIE1lbW9yeVByZXNzdXJlUmVhc29uIHsKIH07CiAjZW5kaWYKIAorZW51bSBjbGFzcyBN
ZW1vcnlVc2FnZVBvbGljeSB7CisgICAgVW5yZXN0cmljdGVkLCAvLyBBbGxvY2F0ZSBhcyBtdWNo
IGFzIHlvdSB3YW50CisgICAgQ29uc2VydmF0aXZlLCAvLyBNYXliZSB5b3UgZG9uJ3QgY2FjaGUg
ZXZlcnkgc2luZ2xlIHRoaW5nCisgICAgU3RyaWN0LCAgICAgICAvLyBUaW1lIHRvIHN0YXJ0IHBp
bmNoaW5nIHBlbm5pZXMgZm9yIHJlYWwKKyAgICBQYW5pYywgICAgICAgIC8vIE9IIEdPRCBXRSdS
RSBTSU5LSU5HLCBUSFJPVyBFVkVSWVRISU5HIE9WRVJCT0FSRAorfTsKKwogZW51bSBjbGFzcyBD
cml0aWNhbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgU3luY2hyb25vdXMgeyBObywgWWVzIH07
CiAKQEAgLTY4LDEyICs3NSwxNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluc3RhbGwoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hvdWxkVXNlUGVyaW9k
aWNNZW1vcnlNb25pdG9yKGJvb2wpOworCisgICAgdm9pZCBzZXRFeGl0VGltZUNhbGxiYWNrKFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikgeyBtX2V4aXRUaW1lQ2FsbGJhY2sgPSBXVEZN
b3ZlKGZ1bmN0aW9uKTsgfQorCiAgICAgdm9pZCBzZXRMb3dNZW1vcnlIYW5kbGVyKExvd01lbW9y
eUhhbmRsZXImJiBoYW5kbGVyKQogICAgIHsKICAgICAgICAgbV9sb3dNZW1vcnlIYW5kbGVyID0g
V1RGTW92ZShoYW5kbGVyKTsKICAgICB9CiAKLSAgICBib29sIGlzVW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJNZW1vcnlQcmVzc3VyZSB8fCBtX2lzU2ltdWxhdGlu
Z01lbW9yeVByZXNzdXJlOyB9CisgICAgYm9vbCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25z
dCB7IHJldHVybiBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgfHwgbV9pc1NpbXVsYXRpbmdNZW1vcnlQ
cmVzc3VyZSB8fCBtZW1vcnlVc2FnZVBvbGljeSgpID49IE1lbW9yeVVzYWdlUG9saWN5OjpTdHJp
Y3Q7IH0KICAgICB2b2lkIHNldFVuZGVyTWVtb3J5UHJlc3N1cmUoYm9vbCBiKSB7IG1fdW5kZXJN
ZW1vcnlQcmVzc3VyZSA9IGI7IH0KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTEzOCw2ICsxNDks
OCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBiZWdpblNpbXVsYXRlZE1lbW9y
eVByZXNzdXJlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRTaW11bGF0ZWRNZW1vcnlQ
cmVzc3VyZSgpOwogCisgICAgTWVtb3J5VXNhZ2VQb2xpY3kgbWVtb3J5VXNhZ2VQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX21lbW9yeVVzYWdlUG9saWN5OyB9IAorCiBwcml2YXRlOgogICAgIHZv
aWQgdW5pbnN0YWxsKCk7CiAKQEAgLTE0OSw2ICsxNjIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwsIFN5bmNocm9ub3VzID0gU3luY2hyb25v
dXM6Ok5vKTsKICAgICB2b2lkIHBsYXRmb3JtUmVsZWFzZU1lbW9yeShDcml0aWNhbCk7CiAKKyAg
ICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZGlkRXhjZWVkTWVtb3J5TGltaXRBbmRGYWls
ZWRUb1JlY292ZXIoKTsKKyAgICB2b2lkIG1lYXN1cmVtZW50VGltZXJGaXJlZCgpOworCiAjaWYg
T1MoTElOVVgpCiAgICAgY2xhc3MgRXZlbnRGRFBvbGxlciB7CiAgICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEV2ZW50RkRQb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE3
MCwxMiArMTg2LDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pbnN0YWxsZWQg
eyBmYWxzZSB9OwotICAgIHRpbWVfdCBtX2xhc3RSZXNwb25kVGltZSB7IDAgfTsKICAgICBMb3dN
ZW1vcnlIYW5kbGVyIG1fbG93TWVtb3J5SGFuZGxlcjsKIAogICAgIHN0ZDo6YXRvbWljPGJvb2w+
IG1fdW5kZXJNZW1vcnlQcmVzc3VyZTsKICAgICBib29sIG1faXNTaW11bGF0aW5nTWVtb3J5UHJl
c3N1cmUgeyBmYWxzZSB9OwogCisgICAgUnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5k
bGVyPiBtX21lYXN1cmVtZW50VGltZXI7CisgICAgTWVtb3J5VXNhZ2VQb2xpY3kgbV9tZW1vcnlV
c2FnZVBvbGljeSB7IE1lbW9yeVVzYWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQgfTsKKyAgICBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4gbV9leGl0VGltZUNhbGxiYWNrOworCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIC8vIEZJWE1FOiBDYW4gd2Ugc2hhcmUgbW9yZSBvZiB0aGlzIHdpdGggT3BlblNvdXJj
ZT8KICAgICB1aW50MzJfdCBtX21lbW9yeVByZXNzdXJlUmVhc29uIHsgTWVtb3J5UHJlc3N1cmVS
ZWFzb25Ob25lIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCBlMWMyNmI5Li5kZDQ0ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKQEAgLTI2MSw2ICsyNjEsMTIgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2Vi
UHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAg
ICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldExvd01lbW9yeUhhbmRsZXIoW10gKENyaXRpY2Fs
IGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykgewogICAgICAgICAgICAgV2ViQ29y
ZTo6cmVsZWFzZU1lbW9yeShjcml0aWNhbCwgc3luY2hyb25vdXMpOwogICAgICAgICB9KTsKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5zZXRTaG91bGRV
c2VQZXJpb2RpY01lbW9yeU1vbml0b3IodHJ1ZSk7CisgICAgICAgIG1lbW9yeVByZXNzdXJlSGFu
ZGxlci5zZXRFeGl0VGltZUNhbGxiYWNrKFtdICgpIHsKKyAgICAgICAgICAgIFdlYkNvcmU6Omxv
Z01lbW9yeVN0YXRpc3RpY3NBdFRpbWVPZkRlYXRoKCk7CisgICAgICAgIH0pOworI2VuZGlmCiAg
ICAgICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5pbnN0YWxsKCk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299920</attachid>
            <date>2017-01-27 01:08:45 -0800</date>
            <delta_ts>2017-01-27 01:47:59 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>wip-167491-2.diff</filename>
            <type>text/plain</type>
            <size>22835</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggZTc4MGMzYy4uZmZhNTAzZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTE3MDUsMTEgKzE3MDUsNiBAQCB2b2lk
IEhlYXA6Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpCiAgICAgbV9zd2VlcGVyLT5zdGFydFN3
ZWVwaW5nKCk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmRpZEV4Y2VlZE1heExpdmVT
aXplKCkKLXsKLSAgICBDUkFTSCgpOwotfQotCiB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25M
aW1pdHMoKQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKQEAgLTE3
NDEsOSArMTczNiw2IEBAIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAKICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiZXh0cmFNZW1vcnlTaXplKCkgPSAiLCBl
eHRyYU1lbW9yeVNpemUoKSwgIiwgY3VycmVudEhlYXBTaXplID0gIiwgY3VycmVudEhlYXBTaXpl
LCAiXG4iKTsKLQotICAgIGlmIChtX21heExpdmVTaXplICYmIGN1cnJlbnRIZWFwU2l6ZSA+IG1f
bWF4TGl2ZVNpemUpCi0gICAgICAgIGRpZEV4Y2VlZE1heExpdmVTaXplKCk7CiAgICAgCiAgICAg
aWYgKE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSAmJiBjdXJyZW50SGVhcFNpemUgPiBPcHRpb25z
OjpnY01heEhlYXBTaXplKCkpCiAgICAgICAgIEhlYXBTdGF0aXN0aWNzOjpleGl0V2l0aEZhaWx1
cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCAyYTYyMWI2Li45MWU0OGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0xMzIsOSArMTMyLDYgQEAgcHVibGljOgog
CiAgICAgVk0qIHZtKCkgY29uc3Q7CiAKLSAgICAvLyBTZXQgYSBoYXJkIGxpbWl0IHdoZXJlIEpT
QyB3aWxsIGNyYXNoIGlmIGxpdmUgaGVhcCBzaXplIGV4Y2VlZHMgaXQuCi0gICAgdm9pZCBzZXRN
YXhMaXZlU2l6ZShzaXplX3Qgc2l6ZSkgeyBtX21heExpdmVTaXplID0gc2l6ZTsgfQotCiAgICAg
TWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZTsgfQogICAg
IE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVh
ZHM7IH0KIApAQCAtNjAxLDkgKzU5OCw2IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fYmxvY2tC
eXRlc0FsbG9jYXRlZCB7IDAgfTsKICAgICBzaXplX3QgbV9leHRlcm5hbE1lbW9yeVNpemUgeyAw
IH07CiAjZW5kaWYKLQotICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBkaWRFeGNlZWRN
YXhMaXZlU2l6ZSgpOwotICAgIHNpemVfdCBtX21heExpdmVTaXplIHsgMCB9OwogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxNdXRhdG9yU2NoZWR1bGVyPiBtX3NjaGVkdWxlcjsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZkZDg3MDEuLmU0MmUw
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzM3LDYg
KzMzNyw4IEBACiAJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM3QjE1
MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovOyB9OwogCQlBOEE0NzQ4QzE1MUE4
MjY0MDA0MTIzRkYgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi87IH07
CiAJCUFEN0M0MzRCMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhC
IC8qIEV4cGVjdGVkLmggKi87IH07CisJCUFERjJDRTY2MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1v
cnlGb290cHJpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBREYyQ0U2NzFFMzlG
MTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1v
cnlGb290cHJpbnQuY3BwICovOyB9OwogCQlCMzhGRDdCRDE2ODk1M0U4MDA2NUM5NjkgLyogRmVh
dHVyZURlZmluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIzOEZEN0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oICovOyB9Owog
CQlDNEY4QTkzNzE5QzY1RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEY4QTkzNjE5QzY1RUI0MDBCMkIxNUQg
LyogU3RvcHdhdGNoLmggKi87IH07CiAJCUM4QjBFMUExRTAxQTQ4NkVCOTVFMEQxMSAvKiBJbmRl
eFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEz
N0UxRDdEQkQ4NEFDMzhGQUU0RDM0IC8qIEluZGV4U2V0LmggKi87IH07CkBAIC03MTksNiArNzIx
LDggQEAKIAkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwZWN0ZWQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rw
cmludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJpbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURC
IC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZW1vcnlGb290cHJpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmVhdHVyZURlZmluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVRpbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAwNSw2ICsxMDA5LDggQEAKIAkJCQlBOEE0NzJD
QjE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmggKi8sCiAJCQkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVC
QzMwIC8qIE1lZGlhVGltZS5jcHAgKi8sCiAJCQkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8q
IE1lZGlhVGltZS5oICovLAorCQkJCUFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlG
b290cHJpbnQuaCAqLywKKwkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50LmNwcCAqLywKIAkJCQlBOEE0NzJDQzE1MUE4MjVCMDA0MTIzRkYgLyogTWVzc2FnZVF1
ZXVlLmggKi8sCiAJCQkJQThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3Iu
Y3BwICovLAogCQkJCUE4QTQ3MkNFMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmgg
Ki8sCkBAIC0xNDk0LDYgKzE1MDAsNyBAQAogCQkJCUE4QTQ3NDFDMTUxQTgyNUIwMDQxMjNGRiAv
KiBSZWZQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDFFMTUxQTgyNUIwMDQxMjNGRiAv
KiBSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3
MCAvKiBSdW5Mb29wLmggaW4gSGVhZGVycyAqLywKKwkJCQlBREYyQ0U2NjFFMzlGMTA2MDA2ODg5
REIgLyogTWVtb3J5Rm9vdHByaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDY5NDE5MjE2RUFB
RjZEMDAyNEUxNDYgLyogUnVuTG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTA5OEIw
MDFDMTY5RTA3MDAwODc3OTcgLyogU2FuZGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRG
M0IwRjcxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTcwMSw2ICsxNzA4LDcgQEAKIAkJCQkxQUNBREQ4NDE4ODQ0ODAxMDBEOEI3MUQg
LyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gaW4gU291cmNlcyAqLywKIAkJCQlB
OEE0NzNBRTE1MUE4MjVCMDA0MTIzRkYgLyogZGl5LWZwLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczQjAxNTFBODI1QjAwNDEyM0ZGIC8qIGRvdWJsZS1jb252ZXJzaW9uLmNjIGluIFNvdXJj
ZXMgKi8sCisJCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCQTE1MUE4MjVCMDA0MTIzRkYgLyogZHRvYS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCMzE1MUE4MjVCMDA0MTIzRkYgLyogZmFzdC1k
dG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZh
c3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDU4
YzExNmIuLjgxYWY5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC02NCw2ICs2NCw3IEBAIHNl
dChXVEZfSEVBREVSUwogICAgIE1hbGxvY1B0ci5oCiAgICAgTWF0aEV4dHJhcy5oCiAgICAgTWVk
aWFUaW1lLmgKKyAgICBNZW1vcnlGb290cHJpbnQuaAogICAgIE1lc3NhZ2VRdWV1ZS5oCiAgICAg
TWV0YUFsbG9jYXRvci5oCiAgICAgTWV0YUFsbG9jYXRvckhhbmRsZS5oCkBAIC0yMDQsNiArMjA1
LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgTUQ1LmNwcAogICAgIE1haW5UaHJlYWQuY3BwCiAg
ICAgTWVkaWFUaW1lLmNwcAorICAgIE1lbW9yeUZvb3RwcmludC5jcHAKICAgICBNZXRhQWxsb2Nh
dG9yLmNwcAogICAgIE1vbm90b25pY1RpbWUuY3BwCiAgICAgTnVtYmVyT2ZDb3Jlcy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlGb290cHJpbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmRjYzBkZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290
cHJpbnQuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVtb3J5Rm9v
dHByaW50LmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxtYWNoL21hY2guaD4K
KyNpbmNsdWRlIDxtYWNoL3Rhc2tfaW5mby5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgewor
CitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKK3sKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICB0YXNrX3ZtX2luZm9fZGF0YV90IHZtSW5mbzsKKyAgICBtYWNoX21zZ190
eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19WTV9JTkZPX0NPVU5UOworICAgIGtlcm5fcmV0dXJu
X3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hfdGFza19zZWxmKCksIFRBU0tfVk1fSU5GTywgKHRh
c2tfaW5mb190KSAmdm1JbmZvLCAmY291bnQpOworICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUND
RVNTKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHZtSW5mby5waHlzX2Zvb3RwcmludCk7CisjZWxzZQorICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVt
b3J5Rm9vdHByaW50LmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjhlY2E4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVz
cGFjZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1l
bW9yeUZvb3RwcmludCgpOworCit9CisKK3VzaW5nIFdURjo6bWVtb3J5Rm9vdHByaW50OworCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAKaW5kZXggYjFiMDZhYS4uMGQ1YTRh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcApAQCAtNDYsMTAgKzQ2
LDYgQEAgVk0mIGNvbW1vblZNU2xvdygpCiAgICAgCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5p
dGlhbGl6ZVRocmVhZGluZygpOwogICAgIGdfY29tbW9uVk1Pck51bGwgPSAmVk06OmNyZWF0ZUxl
YWtlZChMYXJnZUhlYXApLmxlYWtSZWYoKTsKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQp
Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhHQ0hlYXBTaXplID0gNCAqIEdCOwotICAgIGdf
Y29tbW9uVk1Pck51bGwtPmhlYXAuc2V0TWF4TGl2ZVNpemUobWF4R0NIZWFwU2l6ZSk7Ci0jZW5k
aWYKICAgICBnX2NvbW1vblZNT3JOdWxsLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gQXQgYW55
IHRpbWUsIHdlIG1heSBkbyB0aGluZ3MgdGhhdCBhZmZlY3QgdGhlIEdDLgogI2lmICFQTEFURk9S
TShJT1MpCiAgICAgZ19jb21tb25WTU9yTnVsbC0+c2V0RXhjbHVzaXZlVGhyZWFkKHN0ZDo6dGhp
c190aHJlYWQ6OmdldF9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmgKaW5kZXggMTgzNmMyYi4uNGQ1NzM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmgKQEAgLTEyNCw2ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
cnVuZSgpOwogICAgIHZvaWQgcHJ1bmVTb29uKCk7CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGl2ZVNpemUgKyBtX2RlYWRTaXplOyB9CisgICAgdW5zaWduZWQgbGl2ZVNp
emUoKSBjb25zdCB7IHJldHVybiBtX2xpdmVTaXplOyB9CisgICAgdW5zaWduZWQgZGVhZFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2RlYWRTaXplOyB9CiAKICAgICB2b2lkIHNldERlYWREZWNvZGVk
RGF0YURlbGV0aW9uSW50ZXJ2YWwoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBpbnRlcnZhbCkg
eyBtX2RlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgPSBpbnRlcnZhbDsgfQogICAgIHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggZDY0NDQ0Yy4uNWM0NTgxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0yOSwxMiArMjksMTQgQEAKICNp
bmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZVN0eWxlU2hlZXRP
d25lci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKQEAgLTEyOCw2ICsxMzAsMzYgQEAgdm9pZCByZWxlYXNl
TWVtb3J5KENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKICNlbmRp
ZgogfQogCitzdGF0aWMgdW5zaWduZWQgcGFnZUNvdW50KCkKK3sKKyAgICB1bnNpZ25lZCBjb3Vu
dCA9IDA7CisgICAgUGFnZTo6Zm9yRWFjaFBhZ2UoWyZdIChQYWdlJiBwYWdlKSB7CisgICAgICAg
IGlmICghcGFnZS5pc1V0aWxpdHlQYWdlKCkpCisgICAgICAgICAgICArK2NvdW50OyAKKyAgICB9
KTsKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3ZvaWQgbG9nTWVtb3J5U3RhdGlzdGljc0F0VGlt
ZU9mRGVhdGgoKQoreworICAgIGF1dG8mIHZtID0gY29tbW9uVk0oKTsKKyAgICBSRUxFQVNFX0xP
RyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeSB1c2FnZSBzdGF0aXN0aWNzIGF0IHRpbWUgb2YgZGVh
dGg6Iik7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJHQyBoZWFwIHNpemU6ICV6
dSIsIHZtLmhlYXAuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkdD
IGhlYXAgZXh0cmEgbWVtb3J5IHNpemU6ICV6dSIsIHZtLmhlYXAuZXh0cmFNZW1vcnlTaXplKCkp
OworI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVz
c3VyZSwgIkdDIGhlYXAgZXh0ZXJuYWwgbWVtb3J5OiAlenUiLCB2bS5oZWFwLmV4dGVybmFsTWVt
b3J5U2l6ZSgpKTsKKyNlbmRpZgorICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiR2xv
YmFsIG9iamVjdCBjb3VudDogJXp1Iiwgdm0uaGVhcC5nbG9iYWxPYmplY3RDb3VudCgpKTsKKwor
ICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiUGFnZSBjb3VudDogJXUiLCBwYWdlQ291
bnQoKSk7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJEb2N1bWVudCBjb3VudDog
JXUiLCBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhN
ZW1vcnlQcmVzc3VyZSwgIk1lbW9yeUNhY2hlIGxpdmUgc2l6ZTogJWx1IE1CIiwgTWVtb3J5Q2Fj
aGU6OnNpbmdsZXRvbigpLmxpdmVTaXplKCkgLyBNQik7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5
UHJlc3N1cmUsICJNZW1vcnlDYWNoZSBkZWFkIHNpemU6ICVsdSBNQiIsIE1lbW9yeUNhY2hlOjpz
aW5nbGV0b24oKS5kZWFkU2l6ZSgpIC8gTUIpOworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNz
dXJlLCAiTGl2ZSBKYXZhU2NyaXB0IG9iamVjdHM6Iik7CisgICAgZm9yIChhdXRvJiBpdCA6ICp2
bS5oZWFwLm9iamVjdFR5cGVDb3VudHMoKSkKKyAgICAgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJl
c3N1cmUsICIgICVzOiAlZCIsIGl0LmtleSwgaXQudmFsdWUpOworfQorCiAjaWYgIVBMQVRGT1JN
KENPQ09BKQogdm9pZCBwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpIHsgfQogdm9pZCBq
ZXR0aXNvbkV4cGVuc2l2ZU9iamVjdHNPblRvcExldmVsTmF2aWdhdGlvbigpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lbW9yeVJlbGVhc2UuaAppbmRleCAxZDk5MzcyLi45NDQwOGFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lbW9yeVJlbGVhc2UuaApAQCAtMzMsNSArMzMsNiBAQCBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbGVhc2VNZW1vcnkoQ3JpdGljYWwsIFN5bmNocm9ub3VzKTsKIHZvaWQgcGxhdGZvcm1S
ZWxlYXNlTWVtb3J5KENyaXRpY2FsKTsKIHZvaWQgamV0dGlzb25FeHBlbnNpdmVPYmplY3RzT25U
b3BMZXZlbE5hdmlnYXRpb24oKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJNZW1vcnlS
ZWxlYXNlTm90aWZ5Q2FsbGJhY2tzKCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGxvZ01lbW9yeVN0
YXRpc3RpY3NBdFRpbWVPZkRlYXRoKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4
IGI5YWMwZTUuLmZhNTQ5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8
d3RmL01lbW9yeUZvb3RwcmludC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEy
ICs0MCwxMTUgQEAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNpbmdsZXRvbigpCiB9CiAKIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVI
YW5kbGVyKCkKKyAgICA6IG1fbWVhc3VyZW1lbnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCkKICNpZiBPUyhM
SU5VWCkKLSAgICA6IG1faG9sZE9mZlRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpCisgICAgLCBtX2hvbGRPZmZUaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZU
aW1lckZpcmVkKQogI2VuZGlmCiB7CiB9CiAKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpz
ZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCB1c2UpCit7CisgICAgaWYgKHVz
ZSkKKyAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDMwKTsKKyAgICBl
bHNlCisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lci5zdG9wKCk7Cit9CisKKyNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKK3N0YXRpYyBjb25zdCBjaGFyKiB0b1N0cmluZyhNZW1vcnlVc2FnZVBv
bGljeSBwb2xpY3kpCit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIE1lbW9yeVVz
YWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQ6IHJldHVybiAiVW5yZXN0cmljdGVkIjsKKyAgICBjYXNl
IE1lbW9yeVVzYWdlUG9saWN5OjpDb25zZXJ2YXRpdmU6IHJldHVybiAiQ29uc2VydmF0aXZlIjsK
KyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q6IHJldHVybiAiU3RyaWN0IjsKKyAg
ICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYzogcmV0dXJuICJQYW5pYyI7CisgICAgfQor
fQorI2VuZGlmCisKK3N0YXRpYyBzaXplX3QgdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdl
UG9saWN5IHBvbGljeSkKK3sKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2UgTWVtb3J5
VXNhZ2VQb2xpY3k6OkNvbnNlcnZhdGl2ZToKKyAgICAgICAgcmV0dXJuIDEgKiBHQjsKKyAgICBj
YXNlIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q6CisgICAgICAgIHJldHVybiAyICogR0I7Cisg
ICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6UGFuaWM6CisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BV
KEFSTTY0KQorICAgICAgICByZXR1cm4gNCAqIEdCOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIDMg
KiBHQjsKKyNlbmRpZgorICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
K30KKworc3RhdGljIE1lbW9yeVVzYWdlUG9saWN5IHBvbGljeUZvckZvb3RwcmludChzaXplX3Qg
Zm9vdHByaW50KQoreworICAgIGlmIChmb290cHJpbnQgPj0gdGhyZXNob2xkRm9yUG9saWN5KE1l
bW9yeVVzYWdlUG9saWN5OjpQYW5pYykpCisgICAgICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGlj
eTo6UGFuaWM7CisgICAgaWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5
VXNhZ2VQb2xpY3k6OlN0cmljdCkpCisgICAgICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6
U3RyaWN0OworICAgIGlmIChmb290cHJpbnQgPj0gdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVz
YWdlUG9saWN5OjpDb25zZXJ2YXRpdmUpKQorICAgICAgICByZXR1cm4gTWVtb3J5VXNhZ2VQb2xp
Y3k6OkNvbnNlcnZhdGl2ZTsKKyAgICByZXR1cm4gTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJp
Y3RlZDsKK30KKworTkVWRVJfSU5MSU5FIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpkaWRF
eGNlZWRNZW1vcnlMaW1pdEFuZEZhaWxlZFRvUmVjb3ZlcigpCit7CisgICAgQ1JBU0goKTsKK30K
Kwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCgpCit7
CisgICAgYXV0byBmb290cHJpbnQgPSBtZW1vcnlGb290cHJpbnQoKTsKKyAgICBpZiAoIWZvb3Rw
cmludCkKKyAgICAgICAgcmV0dXJuOworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAi
Q3VycmVudCBtZW1vcnkgZm9vdHByaW50OiAlbHUgTUIiLCBmb290cHJpbnQudmFsdWUoKSAvIE1C
KTsKKworICAgIGF1dG8gbmV3UG9saWN5ID0gcG9saWN5Rm9yRm9vdHByaW50KGZvb3RwcmludC52
YWx1ZSgpKTsKKyAgICBpZiAobmV3UG9saWN5ID09IG1fbWVtb3J5VXNhZ2VQb2xpY3kpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTWVtb3J5IHVz
YWdlIHBvbGljeSBjaGFuZ2VkOiAlcyAtPiAlcyIsIHRvU3RyaW5nKG1fbWVtb3J5VXNhZ2VQb2xp
Y3kpLCB0b1N0cmluZyhuZXdQb2xpY3kpKTsKKworICAgIG1fbWVtb3J5VXNhZ2VQb2xpY3kgPSBu
ZXdQb2xpY3k7CisKKyAgICBpZiAobmV3UG9saWN5ID09IE1lbW9yeVVzYWdlUG9saWN5OjpVbnJl
c3RyaWN0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZXdQb2xpY3kgPT0gTWVtb3J5
VXNhZ2VQb2xpY3k6OkNvbnNlcnZhdGl2ZSkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMgcG9saWN5IGJ5IGNob29zaW5nIHdoaWNoIGNhY2hlcyBzaG91bGQgcmVzcGVjdCBpdCwg
YW5kIGhvb2tpbmcgdGhlbSB1cC4gCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
bmV3UG9saWN5ID09IE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3QpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0coTWVtb3J5UHJlc3N1cmUsICJBdHRlbXB0aW5nIHRvIHJlZHVjZSBtZW1vcnkgZm9vdHBy
aW50IGJ5IGZyZWVpbmcgbGVzcyBpbXBvcnRhbnQgb2JqZWN0cy4iKTsKKyAgICAgICAgcmVsZWFz
ZU1lbW9yeShDcml0aWNhbDo6Tm8sIFN5bmNocm9ub3VzOjpObyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChuZXdQb2xpY3kgPT0gTWVtb3J5VXNhZ2VQb2xp
Y3k6OlBhbmljKTsKKworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiQXR0ZW1wdGlu
ZyB0byByZWR1Y2UgbWVtb3J5IGZvb3RwcmludCBieSBmcmVlaW5nIG1vcmUgaW1wb3J0YW50IG9i
amVjdHMuIik7CisgICAgcmVsZWFzZU1lbW9yeShDcml0aWNhbDo6WWVzLCBTeW5jaHJvbm91czo6
WWVzKTsKKyAgICBhdXRvIG5ld0Zvb3RwcmludCA9IG1lbW9yeUZvb3RwcmludCgpOworICAgIFJF
TEVBU0VfQVNTRVJUKG5ld0Zvb3RwcmludCk7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1
cmUsICJOZXcgbWVtb3J5IGZvb3RwcmludDogJWx1IE1CIiwgbmV3Rm9vdHByaW50LnZhbHVlKCkg
LyBNQik7CisgICAgaWYgKG5ld0Zvb3RwcmludC52YWx1ZSgpIDwgdGhyZXNob2xkRm9yUG9saWN5
KE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYykpIHsKKyAgICAgICAgbV9tZW1vcnlVc2FnZVBvbGlj
eSA9IHBvbGljeUZvckZvb3RwcmludChuZXdGb290cHJpbnQudmFsdWUoKSk7CisgICAgICAgIFJF
TEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiUHJlc3N1cmUgcmVkdWNlZCBiZWxvdyBwYW5pYyB0
aHJlc2hvbGQuIE5ldyBtZW1vcnkgdXNhZ2UgcG9saWN5OiAlcyIsIHRvU3RyaW5nKG1fbWVtb3J5
VXNhZ2VQb2xpY3kpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0xPRyhN
ZW1vcnlQcmVzc3VyZSwgIkNyYXNoaW5nIGR1ZSB0byBleGNlc3NpdmUgbWVtb3J5IHVzYWdlICsg
aW5hYmlsaXR5IHRvIGZyZWUgdXAgbWVtb3J5IGJlbG93IHBhbmljIGxpbWl0LiIpOworICAgIGlm
IChtX2V4aXRUaW1lQ2FsbGJhY2spCisgICAgICAgIG1fZXhpdFRpbWVDYWxsYmFjaygpOworICAg
IENSQVNIKCk7Cit9CisKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpiZWdpblNpbXVsYXRl
ZE1lbW9yeVByZXNzdXJlKCkKIHsKICAgICBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmgKaW5kZXggNjAxYTQxZS4uYzA0YjU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTM0LDE2ICszNCwxNiBAQAogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogI2lmIFBMQVRG
T1JNKElPUykKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQ
cmltaXRpdmVzLmg+Ci0jZWxpZiBPUyhMSU5VWCkKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgor
I2VuZGlmCisKICNpZiBVU0UoR0xJQikKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAj
ZW5kaWYKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDYgKzU1LDEzIEBA
IGVudW0gTWVtb3J5UHJlc3N1cmVSZWFzb24gewogfTsKICNlbmRpZgogCitlbnVtIGNsYXNzIE1l
bW9yeVVzYWdlUG9saWN5IHsKKyAgICBVbnJlc3RyaWN0ZWQsIC8vIEFsbG9jYXRlIGFzIG11Y2gg
YXMgeW91IHdhbnQKKyAgICBDb25zZXJ2YXRpdmUsIC8vIE1heWJlIHlvdSBkb24ndCBjYWNoZSBl
dmVyeSBzaW5nbGUgdGhpbmcKKyAgICBTdHJpY3QsIC8vIFRpbWUgdG8gc3RhcnQgcGluY2hpbmcg
cGVubmllcyBmb3IgcmVhbAorICAgIFBhbmljLCAvLyBPSCBHT0QgV0UnUkUgU0lOS0lORywgVEhS
T1cgRVZFUllUSElORyBPVkVSQk9BUkQKK307CisKIGVudW0gY2xhc3MgQ3JpdGljYWwgeyBObywg
WWVzIH07CiBlbnVtIGNsYXNzIFN5bmNocm9ub3VzIHsgTm8sIFllcyB9OwogCkBAIC02OCwxMiAr
NzUsMTYgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnN0YWxsKCk7CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRv
cihib29sKTsKKworICAgIHZvaWQgc2V0RXhpdFRpbWVDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4gZnVuY3Rpb24pIHsgbV9leGl0VGltZUNhbGxiYWNrID0gV1RGTW92ZShmdW5jdGlvbik7
IH0KKwogICAgIHZvaWQgc2V0TG93TWVtb3J5SGFuZGxlcihMb3dNZW1vcnlIYW5kbGVyJiYgaGFu
ZGxlcikKICAgICB7CiAgICAgICAgIG1fbG93TWVtb3J5SGFuZGxlciA9IFdURk1vdmUoaGFuZGxl
cik7CiAgICAgfQogCi0gICAgYm9vbCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgfHwgbV9pc1NpbXVsYXRpbmdNZW1vcnlQcmVzc3Vy
ZTsgfQorICAgIGJvb2wgaXNVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QgeyByZXR1cm4gbV91
bmRlck1lbW9yeVByZXNzdXJlIHx8IG1faXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUgfHwgbWVt
b3J5VXNhZ2VQb2xpY3koKSA+PSBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0OyB9CiAgICAgdm9p
ZCBzZXRVbmRlck1lbW9yeVByZXNzdXJlKGJvb2wgYikgeyBtX3VuZGVyTWVtb3J5UHJlc3N1cmUg
PSBiOyB9CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMzgsNiArMTQ5LDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKIAor
ICAgIE1lbW9yeVVzYWdlUG9saWN5IG1lbW9yeVVzYWdlUG9saWN5KCkgY29uc3QgeyByZXR1cm4g
bV9tZW1vcnlVc2FnZVBvbGljeTsgfSAKKwogcHJpdmF0ZToKICAgICB2b2lkIHVuaW5zdGFsbCgp
OwogCkBAIC0xNDksNiArMTYyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbmRUb01lbW9y
eVByZXNzdXJlKENyaXRpY2FsLCBTeW5jaHJvbm91cyA9IFN5bmNocm9ub3VzOjpObyk7CiAgICAg
dm9pZCBwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpOwogCisgICAgTk9fUkVUVVJOX0RV
RV9UT19DUkFTSCB2b2lkIGRpZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFpbGVkVG9SZWNvdmVyKCk7
CisgICAgdm9pZCBtZWFzdXJlbWVudFRpbWVyRmlyZWQoKTsKKwogI2lmIE9TKExJTlVYKQogICAg
IGNsYXNzIEV2ZW50RkRQb2xsZXIgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVu
dEZEUG9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNzAsMTIgKzE4NiwxNSBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBib29sIG1faW5zdGFsbGVkIHsgZmFsc2UgfTsKLSAg
ICB0aW1lX3QgbV9sYXN0UmVzcG9uZFRpbWUgeyAwIH07CiAgICAgTG93TWVtb3J5SGFuZGxlciBt
X2xvd01lbW9yeUhhbmRsZXI7CiAKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX3VuZGVyTWVtb3J5
UHJlc3N1cmU7CiAgICAgYm9vbCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlIHsgZmFsc2Ug
fTsKIAorICAgIFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4gbV9tZWFzdXJl
bWVudFRpbWVyOworICAgIE1lbW9yeVVzYWdlUG9saWN5IG1fbWVtb3J5VXNhZ2VQb2xpY3kgeyBN
ZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0cmljdGVkIH07CisgICAgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+IG1fZXhpdFRpbWVDYWxsYmFjazsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhN
RTogQ2FuIHdlIHNoYXJlIG1vcmUgb2YgdGhpcyB3aXRoIE9wZW5Tb3VyY2U/CiAgICAgdWludDMy
X3QgbV9tZW1vcnlQcmVzc3VyZVJlYXNvbiB7IE1lbW9yeVByZXNzdXJlUmVhc29uTm9uZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTFjMjZiOS4uZGQ0
NGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yNjEs
NiArMjYxLDEyIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgICAgIG1lbW9yeVByZXNz
dXJlSGFuZGxlci5zZXRMb3dNZW1vcnlIYW5kbGVyKFtdIChDcml0aWNhbCBjcml0aWNhbCwgU3lu
Y2hyb25vdXMgc3luY2hyb25vdXMpIHsKICAgICAgICAgICAgIFdlYkNvcmU6OnJlbGVhc2VNZW1v
cnkoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKICAgICAgICAgfSk7CisjaWYgUExBVEZPUk0oTUFD
KQorICAgICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1v
cnlNb25pdG9yKHRydWUpOworICAgICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0RXhpdFRp
bWVDYWxsYmFjayhbXSAoKSB7CisgICAgICAgICAgICBXZWJDb3JlOjpsb2dNZW1vcnlTdGF0aXN0
aWNzQXRUaW1lT2ZEZWF0aCgpOworICAgICAgICB9KTsKKyNlbmRpZgogICAgICAgICBtZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaW5zdGFsbCgpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299925</attachid>
            <date>2017-01-27 01:47:59 -0800</date>
            <delta_ts>2017-01-30 04:37:53 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>wip-167491-3.diff</filename>
            <type>text/plain</type>
            <size>22870</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggZTc4MGMzYy4uZmZhNTAzZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTE3MDUsMTEgKzE3MDUsNiBAQCB2b2lk
IEhlYXA6Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpCiAgICAgbV9zd2VlcGVyLT5zdGFydFN3
ZWVwaW5nKCk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmRpZEV4Y2VlZE1heExpdmVT
aXplKCkKLXsKLSAgICBDUkFTSCgpOwotfQotCiB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25M
aW1pdHMoKQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKQEAgLTE3
NDEsOSArMTczNiw2IEBAIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAKICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiZXh0cmFNZW1vcnlTaXplKCkgPSAiLCBl
eHRyYU1lbW9yeVNpemUoKSwgIiwgY3VycmVudEhlYXBTaXplID0gIiwgY3VycmVudEhlYXBTaXpl
LCAiXG4iKTsKLQotICAgIGlmIChtX21heExpdmVTaXplICYmIGN1cnJlbnRIZWFwU2l6ZSA+IG1f
bWF4TGl2ZVNpemUpCi0gICAgICAgIGRpZEV4Y2VlZE1heExpdmVTaXplKCk7CiAgICAgCiAgICAg
aWYgKE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSAmJiBjdXJyZW50SGVhcFNpemUgPiBPcHRpb25z
OjpnY01heEhlYXBTaXplKCkpCiAgICAgICAgIEhlYXBTdGF0aXN0aWNzOjpleGl0V2l0aEZhaWx1
cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCAyYTYyMWI2Li45MWU0OGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0xMzIsOSArMTMyLDYgQEAgcHVibGljOgog
CiAgICAgVk0qIHZtKCkgY29uc3Q7CiAKLSAgICAvLyBTZXQgYSBoYXJkIGxpbWl0IHdoZXJlIEpT
QyB3aWxsIGNyYXNoIGlmIGxpdmUgaGVhcCBzaXplIGV4Y2VlZHMgaXQuCi0gICAgdm9pZCBzZXRN
YXhMaXZlU2l6ZShzaXplX3Qgc2l6ZSkgeyBtX21heExpdmVTaXplID0gc2l6ZTsgfQotCiAgICAg
TWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZTsgfQogICAg
IE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVh
ZHM7IH0KIApAQCAtNjAxLDkgKzU5OCw2IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fYmxvY2tC
eXRlc0FsbG9jYXRlZCB7IDAgfTsKICAgICBzaXplX3QgbV9leHRlcm5hbE1lbW9yeVNpemUgeyAw
IH07CiAjZW5kaWYKLQotICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBkaWRFeGNlZWRN
YXhMaXZlU2l6ZSgpOwotICAgIHNpemVfdCBtX21heExpdmVTaXplIHsgMCB9OwogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxNdXRhdG9yU2NoZWR1bGVyPiBtX3NjaGVkdWxlcjsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZkZDg3MDEuLmU0MmUw
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzM3LDYg
KzMzNyw4IEBACiAJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM3QjE1
MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovOyB9OwogCQlBOEE0NzQ4QzE1MUE4
MjY0MDA0MTIzRkYgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi87IH07
CiAJCUFEN0M0MzRCMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhC
IC8qIEV4cGVjdGVkLmggKi87IH07CisJCUFERjJDRTY2MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1v
cnlGb290cHJpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBREYyQ0U2NzFFMzlG
MTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1v
cnlGb290cHJpbnQuY3BwICovOyB9OwogCQlCMzhGRDdCRDE2ODk1M0U4MDA2NUM5NjkgLyogRmVh
dHVyZURlZmluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIzOEZEN0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oICovOyB9Owog
CQlDNEY4QTkzNzE5QzY1RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEY4QTkzNjE5QzY1RUI0MDBCMkIxNUQg
LyogU3RvcHdhdGNoLmggKi87IH07CiAJCUM4QjBFMUExRTAxQTQ4NkVCOTVFMEQxMSAvKiBJbmRl
eFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEz
N0UxRDdEQkQ4NEFDMzhGQUU0RDM0IC8qIEluZGV4U2V0LmggKi87IH07CkBAIC03MTksNiArNzIx
LDggQEAKIAkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwZWN0ZWQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rw
cmludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJpbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURC
IC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZW1vcnlGb290cHJpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmVhdHVyZURlZmluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVRpbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAwNSw2ICsxMDA5LDggQEAKIAkJCQlBOEE0NzJD
QjE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmggKi8sCiAJCQkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVC
QzMwIC8qIE1lZGlhVGltZS5jcHAgKi8sCiAJCQkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8q
IE1lZGlhVGltZS5oICovLAorCQkJCUFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlG
b290cHJpbnQuaCAqLywKKwkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9v
dHByaW50LmNwcCAqLywKIAkJCQlBOEE0NzJDQzE1MUE4MjVCMDA0MTIzRkYgLyogTWVzc2FnZVF1
ZXVlLmggKi8sCiAJCQkJQThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3Iu
Y3BwICovLAogCQkJCUE4QTQ3MkNFMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmgg
Ki8sCkBAIC0xNDk0LDYgKzE1MDAsNyBAQAogCQkJCUE4QTQ3NDFDMTUxQTgyNUIwMDQxMjNGRiAv
KiBSZWZQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDFFMTUxQTgyNUIwMDQxMjNGRiAv
KiBSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3
MCAvKiBSdW5Mb29wLmggaW4gSGVhZGVycyAqLywKKwkJCQlBREYyQ0U2NjFFMzlGMTA2MDA2ODg5
REIgLyogTWVtb3J5Rm9vdHByaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDY5NDE5MjE2RUFB
RjZEMDAyNEUxNDYgLyogUnVuTG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTA5OEIw
MDFDMTY5RTA3MDAwODc3OTcgLyogU2FuZGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRG
M0IwRjcxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTcwMSw2ICsxNzA4LDcgQEAKIAkJCQkxQUNBREQ4NDE4ODQ0ODAxMDBEOEI3MUQg
LyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gaW4gU291cmNlcyAqLywKIAkJCQlB
OEE0NzNBRTE1MUE4MjVCMDA0MTIzRkYgLyogZGl5LWZwLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczQjAxNTFBODI1QjAwNDEyM0ZGIC8qIGRvdWJsZS1jb252ZXJzaW9uLmNjIGluIFNvdXJj
ZXMgKi8sCisJCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCQTE1MUE4MjVCMDA0MTIzRkYgLyogZHRvYS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCMzE1MUE4MjVCMDA0MTIzRkYgLyogZmFzdC1k
dG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZh
c3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDU4
YzExNmIuLjgxYWY5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC02NCw2ICs2NCw3IEBAIHNl
dChXVEZfSEVBREVSUwogICAgIE1hbGxvY1B0ci5oCiAgICAgTWF0aEV4dHJhcy5oCiAgICAgTWVk
aWFUaW1lLmgKKyAgICBNZW1vcnlGb290cHJpbnQuaAogICAgIE1lc3NhZ2VRdWV1ZS5oCiAgICAg
TWV0YUFsbG9jYXRvci5oCiAgICAgTWV0YUFsbG9jYXRvckhhbmRsZS5oCkBAIC0yMDQsNiArMjA1
LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgTUQ1LmNwcAogICAgIE1haW5UaHJlYWQuY3BwCiAg
ICAgTWVkaWFUaW1lLmNwcAorICAgIE1lbW9yeUZvb3RwcmludC5jcHAKICAgICBNZXRhQWxsb2Nh
dG9yLmNwcAogICAgIE1vbm90b25pY1RpbWUuY3BwCiAgICAgTnVtYmVyT2ZDb3Jlcy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlGb290cHJpbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmRjYzBkZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290
cHJpbnQuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVtb3J5Rm9v
dHByaW50LmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxtYWNoL21hY2guaD4K
KyNpbmNsdWRlIDxtYWNoL3Rhc2tfaW5mby5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgewor
CitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKK3sKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICB0YXNrX3ZtX2luZm9fZGF0YV90IHZtSW5mbzsKKyAgICBtYWNoX21zZ190
eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19WTV9JTkZPX0NPVU5UOworICAgIGtlcm5fcmV0dXJu
X3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hfdGFza19zZWxmKCksIFRBU0tfVk1fSU5GTywgKHRh
c2tfaW5mb190KSAmdm1JbmZvLCAmY291bnQpOworICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUND
RVNTKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHZtSW5mby5waHlzX2Zvb3RwcmludCk7CisjZWxzZQorICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVt
b3J5Rm9vdHByaW50LmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjhlY2E4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVz
cGFjZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1l
bW9yeUZvb3RwcmludCgpOworCit9CisKK3VzaW5nIFdURjo6bWVtb3J5Rm9vdHByaW50OworCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAKaW5kZXggYjFiMDZhYS4uMGQ1YTRh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcApAQCAtNDYsMTAgKzQ2
LDYgQEAgVk0mIGNvbW1vblZNU2xvdygpCiAgICAgCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5p
dGlhbGl6ZVRocmVhZGluZygpOwogICAgIGdfY29tbW9uVk1Pck51bGwgPSAmVk06OmNyZWF0ZUxl
YWtlZChMYXJnZUhlYXApLmxlYWtSZWYoKTsKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQp
Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhHQ0hlYXBTaXplID0gNCAqIEdCOwotICAgIGdf
Y29tbW9uVk1Pck51bGwtPmhlYXAuc2V0TWF4TGl2ZVNpemUobWF4R0NIZWFwU2l6ZSk7Ci0jZW5k
aWYKICAgICBnX2NvbW1vblZNT3JOdWxsLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gQXQgYW55
IHRpbWUsIHdlIG1heSBkbyB0aGluZ3MgdGhhdCBhZmZlY3QgdGhlIEdDLgogI2lmICFQTEFURk9S
TShJT1MpCiAgICAgZ19jb21tb25WTU9yTnVsbC0+c2V0RXhjbHVzaXZlVGhyZWFkKHN0ZDo6dGhp
c190aHJlYWQ6OmdldF9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmgKaW5kZXggMTgzNmMyYi4uNGQ1NzM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmgKQEAgLTEyNCw2ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
cnVuZSgpOwogICAgIHZvaWQgcHJ1bmVTb29uKCk7CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGl2ZVNpemUgKyBtX2RlYWRTaXplOyB9CisgICAgdW5zaWduZWQgbGl2ZVNp
emUoKSBjb25zdCB7IHJldHVybiBtX2xpdmVTaXplOyB9CisgICAgdW5zaWduZWQgZGVhZFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2RlYWRTaXplOyB9CiAKICAgICB2b2lkIHNldERlYWREZWNvZGVk
RGF0YURlbGV0aW9uSW50ZXJ2YWwoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBpbnRlcnZhbCkg
eyBtX2RlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgPSBpbnRlcnZhbDsgfQogICAgIHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggZDY0NDQ0Yy4uMTNiMDBmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0yOSwxMiArMjksMTQgQEAKICNp
bmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb21tb25WTS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZVN0eWxlU2hlZXRP
d25lci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKQEAgLTEyOCw2ICsxMzAsMzggQEAgdm9pZCByZWxlYXNl
TWVtb3J5KENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKICNlbmRp
ZgogfQogCitzdGF0aWMgdW5zaWduZWQgcGFnZUNvdW50KCkKK3sKKyAgICB1bnNpZ25lZCBjb3Vu
dCA9IDA7CisgICAgUGFnZTo6Zm9yRWFjaFBhZ2UoWyZdIChQYWdlJiBwYWdlKSB7CisgICAgICAg
IGlmICghcGFnZS5pc1V0aWxpdHlQYWdlKCkpCisgICAgICAgICAgICArK2NvdW50OyAKKyAgICB9
KTsKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3ZvaWQgbG9nTWVtb3J5U3RhdGlzdGljc0F0VGlt
ZU9mRGVhdGgoKQoreworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGF1dG8mIHZtID0g
Y29tbW9uVk0oKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeSB1c2Fn
ZSBzdGF0aXN0aWNzIGF0IHRpbWUgb2YgZGVhdGg6Iik7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5
UHJlc3N1cmUsICJHQyBoZWFwIHNpemU6ICV6dSIsIHZtLmhlYXAuc2l6ZSgpKTsKKyAgICBSRUxF
QVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkdDIGhlYXAgZXh0cmEgbWVtb3J5IHNpemU6ICV6dSIs
IHZtLmhlYXAuZXh0cmFNZW1vcnlTaXplKCkpOworI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkK
KyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkdDIGhlYXAgZXh0ZXJuYWwgbWVtb3J5
OiAlenUiLCB2bS5oZWFwLmV4dGVybmFsTWVtb3J5U2l6ZSgpKTsKKyNlbmRpZgorICAgIFJFTEVB
U0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiR2xvYmFsIG9iamVjdCBjb3VudDogJXp1Iiwgdm0uaGVh
cC5nbG9iYWxPYmplY3RDb3VudCgpKTsKKworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJl
LCAiUGFnZSBjb3VudDogJXUiLCBwYWdlQ291bnQoKSk7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5
UHJlc3N1cmUsICJEb2N1bWVudCBjb3VudDogJXUiLCBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCku
c2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeUNhY2hlIGxp
dmUgc2l6ZTogJWx1IE1CIiwgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmxpdmVTaXplKCkgLyBN
Qik7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJNZW1vcnlDYWNoZSBkZWFkIHNp
emU6ICVsdSBNQiIsIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5kZWFkU2l6ZSgpIC8gTUIpOwor
ICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTGl2ZSBKYXZhU2NyaXB0IG9iamVjdHM6
Iik7CisgICAgZm9yIChhdXRvJiBpdCA6ICp2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMoKSkKKyAg
ICAgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICIgICVzOiAlZCIsIGl0LmtleSwgaXQu
dmFsdWUpOworI2VuZGlmCit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIHBsYXRmb3Jt
UmVsZWFzZU1lbW9yeShDcml0aWNhbCkgeyB9CiB2b2lkIGpldHRpc29uRXhwZW5zaXZlT2JqZWN0
c09uVG9wTGV2ZWxOYXZpZ2F0aW9uKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lbW9yeVJlbGVhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5o
CmluZGV4IDFkOTkzNzIuLjk0NDA4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVtb3J5UmVsZWFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5o
CkBAIC0zMyw1ICszMyw2IEBAIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsZWFzZU1lbW9yeShDcml0
aWNhbCwgU3luY2hyb25vdXMpOwogdm9pZCBwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwp
Owogdm9pZCBqZXR0aXNvbkV4cGVuc2l2ZU9iamVjdHNPblRvcExldmVsTmF2aWdhdGlvbigpOwog
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3Rlck1lbW9yeVJlbGVhc2VOb3RpZnlDYWxsYmFja3Mo
KTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgbG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVhdGgo
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggYjlhYzBlNS4uZmE1NDkzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCIK
IAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5Rm9vdHByaW50Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzksMTIgKzQwLDExNSBAQCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXImIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkKIH0KIAogTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKQorICAgIDogbV9tZWFz
dXJlbWVudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKQogI2lmIE9TKExJTlVYKQotICAgIDogbV9ob2xkT2Zm
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xk
T2ZmVGltZXJGaXJlZCkKKyAgICAsIG1faG9sZE9mZlRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpCiAjZW5kaWYKIHsK
IH0KIAordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVt
b3J5TW9uaXRvcihib29sIHVzZSkKK3sKKyAgICBpZiAodXNlKQorICAgICAgICBtX21lYXN1cmVt
ZW50VGltZXIuc3RhcnRSZXBlYXRpbmcoMzApOworICAgIGVsc2UKKyAgICAgICAgbV9tZWFzdXJl
bWVudFRpbWVyLnN0b3AoKTsKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorc3RhdGlj
IGNvbnN0IGNoYXIqIHRvU3RyaW5nKE1lbW9yeVVzYWdlUG9saWN5IHBvbGljeSkKK3sKKyAgICBz
d2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3Rl
ZDogcmV0dXJuICJVbnJlc3RyaWN0ZWQiOworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OkNv
bnNlcnZhdGl2ZTogcmV0dXJuICJDb25zZXJ2YXRpdmUiOworICAgIGNhc2UgTWVtb3J5VXNhZ2VQ
b2xpY3k6OlN0cmljdDogcmV0dXJuICJTdHJpY3QiOworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xp
Y3k6OlBhbmljOiByZXR1cm4gIlBhbmljIjsKKyAgICB9Cit9CisjZW5kaWYKKworc3RhdGljIHNp
emVfdCB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5KQoreworICAg
IHN3aXRjaCAocG9saWN5KSB7CisgICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6Q29uc2VydmF0
aXZlOgorICAgICAgICByZXR1cm4gMSAqIEdCOworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6
OlN0cmljdDoKKyAgICAgICAgcmV0dXJuIDIgKiBHQjsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9s
aWN5OjpQYW5pYzoKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisgICAgICAgIHJldHVy
biA0ICogR0I7CisjZWxzZQorICAgICAgICByZXR1cm4gMyAqIEdCOworI2VuZGlmCisgICAgY2Fz
ZSBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0cmljdGVkOgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgTWVtb3J5VXNh
Z2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVfdCBmb290cHJpbnQpCit7CisgICAgaWYg
KGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmlj
KSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYzsKKyAgICBpZiAoZm9v
dHByaW50ID49IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0KSkK
KyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q7CisgICAgaWYgKGZvb3Rw
cmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OkNvbnNlcnZhdGl2
ZSkpCisgICAgICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6Q29uc2VydmF0aXZlOworICAg
IHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0cmljdGVkOworfQorCitORVZFUl9JTkxJ
TkUgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmRpZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFp
bGVkVG9SZWNvdmVyKCkKK3sKKyAgICBDUkFTSCgpOworfQorCit2b2lkIE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKCkKK3sKKyAgICBhdXRvIGZvb3RwcmludCA9
IG1lbW9yeUZvb3RwcmludCgpOworICAgIGlmICghZm9vdHByaW50KQorICAgICAgICByZXR1cm47
CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJDdXJyZW50IG1lbW9yeSBmb290cHJp
bnQ6ICVsdSBNQiIsIGZvb3RwcmludC52YWx1ZSgpIC8gTUIpOworCisgICAgYXV0byBuZXdQb2xp
Y3kgPSBwb2xpY3lGb3JGb290cHJpbnQoZm9vdHByaW50LnZhbHVlKCkpOworICAgIGlmIChuZXdQ
b2xpY3kgPT0gbV9tZW1vcnlVc2FnZVBvbGljeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVM
RUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJNZW1vcnkgdXNhZ2UgcG9saWN5IGNoYW5nZWQ6ICVz
IC0+ICVzIiwgdG9TdHJpbmcobV9tZW1vcnlVc2FnZVBvbGljeSksIHRvU3RyaW5nKG5ld1BvbGlj
eSkpOworCisgICAgbV9tZW1vcnlVc2FnZVBvbGljeSA9IG5ld1BvbGljeTsKKworICAgIGlmIChu
ZXdQb2xpY3kgPT0gTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG5ld1BvbGljeSA9PSBNZW1vcnlVc2FnZVBvbGljeTo6Q29uc2VydmF0
aXZlKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwb2xpY3kgYnkgY2hvb3Np
bmcgd2hpY2ggY2FjaGVzIHNob3VsZCByZXNwZWN0IGl0LCBhbmQgaG9va2luZyB0aGVtIHVwLiAK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChuZXdQb2xpY3kgPT0gTWVtb3J5VXNh
Z2VQb2xpY3k6OlN0cmljdCkgeworICAgICAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwg
IkF0dGVtcHRpbmcgdG8gcmVkdWNlIG1lbW9yeSBmb290cHJpbnQgYnkgZnJlZWluZyBsZXNzIGlt
cG9ydGFudCBvYmplY3RzLiIpOworICAgICAgICByZWxlYXNlTWVtb3J5KENyaXRpY2FsOjpObywg
U3luY2hyb25vdXM6Ok5vKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJFTEVBU0Vf
QVNTRVJUKG5ld1BvbGljeSA9PSBNZW1vcnlVc2FnZVBvbGljeTo6UGFuaWMpOworCisgICAgUkVM
RUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJBdHRlbXB0aW5nIHRvIHJlZHVjZSBtZW1vcnkgZm9v
dHByaW50IGJ5IGZyZWVpbmcgbW9yZSBpbXBvcnRhbnQgb2JqZWN0cy4iKTsKKyAgICByZWxlYXNl
TWVtb3J5KENyaXRpY2FsOjpZZXMsIFN5bmNocm9ub3VzOjpZZXMpOworICAgIGF1dG8gbmV3Rm9v
dHByaW50ID0gbWVtb3J5Rm9vdHByaW50KCk7CisgICAgUkVMRUFTRV9BU1NFUlQobmV3Rm9vdHBy
aW50KTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk5ldyBtZW1vcnkgZm9vdHBy
aW50OiAlbHUgTUIiLCBuZXdGb290cHJpbnQudmFsdWUoKSAvIE1CKTsKKyAgICBpZiAobmV3Rm9v
dHByaW50LnZhbHVlKCkgPCB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OlBh
bmljKSkgeworICAgICAgICBtX21lbW9yeVVzYWdlUG9saWN5ID0gcG9saWN5Rm9yRm9vdHByaW50
KG5ld0Zvb3RwcmludC52YWx1ZSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1
cmUsICJQcmVzc3VyZSByZWR1Y2VkIGJlbG93IHBhbmljIHRocmVzaG9sZC4gTmV3IG1lbW9yeSB1
c2FnZSBwb2xpY3k6ICVzIiwgdG9TdHJpbmcobV9tZW1vcnlVc2FnZVBvbGljeSkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiQ3Jhc2hp
bmcgZHVlIHRvIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2UgKyBpbmFiaWxpdHkgdG8gZnJlZSB1cCBt
ZW1vcnkgYmVsb3cgcGFuaWMgbGltaXQuIik7CisgICAgaWYgKG1fZXhpdFRpbWVDYWxsYmFjaykK
KyAgICAgICAgbV9leGl0VGltZUNhbGxiYWNrKCk7CisgICAgQ1JBU0goKTsKK30KKwogdm9pZCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmJlZ2luU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKQogewog
ICAgIG1faXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAppbmRleCA2MDFhNDFlLi5jMDRi
NThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuaApAQCAtMzQsMTYgKzM0LDE2IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KLSNlbGlmIE9T
KExJTlVYKQotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjZW5kaWYKKwogI2lmIFVTRShHTElC
KQogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNlbmRpZgotI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNiArNTUsMTMgQEAgZW51bSBNZW1vcnlQcmVzc3VyZVJl
YXNvbiB7CiB9OwogI2VuZGlmCiAKK2VudW0gY2xhc3MgTWVtb3J5VXNhZ2VQb2xpY3kgeworICAg
IFVucmVzdHJpY3RlZCwgLy8gQWxsb2NhdGUgYXMgbXVjaCBhcyB5b3Ugd2FudAorICAgIENvbnNl
cnZhdGl2ZSwgLy8gTWF5YmUgeW91IGRvbid0IGNhY2hlIGV2ZXJ5IHNpbmdsZSB0aGluZworICAg
IFN0cmljdCwgLy8gVGltZSB0byBzdGFydCBwaW5jaGluZyBwZW5uaWVzIGZvciByZWFsCisgICAg
UGFuaWMsIC8vIE9IIEdPRCBXRSdSRSBTSU5LSU5HLCBUSFJPVyBFVkVSWVRISU5HIE9WRVJCT0FS
RAorfTsKKwogZW51bSBjbGFzcyBDcml0aWNhbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgU3lu
Y2hyb25vdXMgeyBObywgWWVzIH07CiAKQEAgLTY4LDEyICs3NSwxNiBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc3RhbGwoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25pdG9yKGJvb2wpOworCisgICAgdm9pZCBz
ZXRFeGl0VGltZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikgeyBtX2V4
aXRUaW1lQ2FsbGJhY2sgPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQorCiAgICAgdm9pZCBzZXRMb3dN
ZW1vcnlIYW5kbGVyKExvd01lbW9yeUhhbmRsZXImJiBoYW5kbGVyKQogICAgIHsKICAgICAgICAg
bV9sb3dNZW1vcnlIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKICAgICB9CiAKLSAgICBib29s
IGlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJNZW1vcnlQcmVz
c3VyZSB8fCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlOyB9CisgICAgYm9vbCBpc1VuZGVy
TWVtb3J5UHJlc3N1cmUoKSBjb25zdCB7IHJldHVybiBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgfHwg
bV9pc1NpbXVsYXRpbmdNZW1vcnlQcmVzc3VyZSB8fCBtZW1vcnlVc2FnZVBvbGljeSgpID49IE1l
bW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q7IH0KICAgICB2b2lkIHNldFVuZGVyTWVtb3J5UHJlc3N1
cmUoYm9vbCBiKSB7IG1fdW5kZXJNZW1vcnlQcmVzc3VyZSA9IGI7IH0KIAogI2lmIFBMQVRGT1JN
KElPUykKQEAgLTEzOCw2ICsxNDksOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBiZWdpblNpbXVsYXRlZE1lbW9yeVByZXNzdXJlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBlbmRTaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogCisgICAgTWVtb3J5VXNhZ2VQb2xpY3kg
bWVtb3J5VXNhZ2VQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX21lbW9yeVVzYWdlUG9saWN5OyB9
IAorCiBwcml2YXRlOgogICAgIHZvaWQgdW5pbnN0YWxsKCk7CiAKQEAgLTE0OSw2ICsxNjIsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwsIFN5
bmNocm9ub3VzID0gU3luY2hyb25vdXM6Ok5vKTsKICAgICB2b2lkIHBsYXRmb3JtUmVsZWFzZU1l
bW9yeShDcml0aWNhbCk7CiAKKyAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZGlkRXhj
ZWVkTWVtb3J5TGltaXRBbmRGYWlsZWRUb1JlY292ZXIoKTsKKyAgICB2b2lkIG1lYXN1cmVtZW50
VGltZXJGaXJlZCgpOworCiAjaWYgT1MoTElOVVgpCiAgICAgY2xhc3MgRXZlbnRGRFBvbGxlciB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50RkRQb2xsZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTE3MCwxMiArMTg2LDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIGJvb2wgbV9pbnN0YWxsZWQgeyBmYWxzZSB9OwotICAgIHRpbWVfdCBtX2xhc3RSZXNwb25k
VGltZSB7IDAgfTsKICAgICBMb3dNZW1vcnlIYW5kbGVyIG1fbG93TWVtb3J5SGFuZGxlcjsKIAog
ICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fdW5kZXJNZW1vcnlQcmVzc3VyZTsKICAgICBib29sIG1f
aXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUgeyBmYWxzZSB9OwogCisgICAgUnVuTG9vcDo6VGlt
ZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPiBtX21lYXN1cmVtZW50VGltZXI7CisgICAgTWVtb3J5
VXNhZ2VQb2xpY3kgbV9tZW1vcnlVc2FnZVBvbGljeSB7IE1lbW9yeVVzYWdlUG9saWN5OjpVbnJl
c3RyaWN0ZWQgfTsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9leGl0VGltZUNhbGxiYWNr
OworCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1FOiBDYW4gd2Ugc2hhcmUgbW9yZSBv
ZiB0aGlzIHdpdGggT3BlblNvdXJjZT8KICAgICB1aW50MzJfdCBtX21lbW9yeVByZXNzdXJlUmVh
c29uIHsgTWVtb3J5UHJlc3N1cmVSZWFzb25Ob25lIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCBlMWMyNmI5Li5kZDQ0ZjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI2MSw2ICsyNjEsMTIgQEAgdm9pZCBXZWJQ
cm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKICAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldExvd01lbW9y
eUhhbmRsZXIoW10gKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykg
ewogICAgICAgICAgICAgV2ViQ29yZTo6cmVsZWFzZU1lbW9yeShjcml0aWNhbCwgc3luY2hyb25v
dXMpOwogICAgICAgICB9KTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIG1lbW9yeVByZXNz
dXJlSGFuZGxlci5zZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3IodHJ1ZSk7CisgICAg
ICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5zZXRFeGl0VGltZUNhbGxiYWNrKFtdICgpIHsKKyAg
ICAgICAgICAgIFdlYkNvcmU6OmxvZ01lbW9yeVN0YXRpc3RpY3NBdFRpbWVPZkRlYXRoKCk7Cisg
ICAgICAgIH0pOworI2VuZGlmCiAgICAgICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5pbnN0YWxs
KCk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300098</attachid>
            <date>2017-01-30 04:37:53 -0800</date>
            <delta_ts>2017-01-30 17:52:16 -0800</delta_ts>
            <desc>Getting closer</desc>
            <filename>bug-167491.diff</filename>
            <type>text/plain</type>
            <size>28254</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRiOGQ4ZThhMWQwLi40YTdhMzQ5YWM4YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDEtMzAgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEluLXByb2Nlc3Mg
bWVtb3J5IHByZXNzdXJlIG1vbml0b3IgZm9yIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgorICAgICAg
ICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY3NDkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgc2xvcHB5ICJtYXggbGl2ZSBoZWFw
IHNpemUiIG1lY2hhbmlzbSBmcm9tIEpTQyBpbiBmYXZvciBvZiB0aGUgbmV3CisgICAgICAgIFdl
YkNvcmUtc2lkZSBtZW1vcnkgZm9vdHByaW50IG1vbml0b3IuCisKKyAgICAgICAgKiBoZWFwL0hl
YXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6ZGlkRXhjZWVkTWF4TGl2ZVNpemUpOiBEZWxldGVkLgorICAgICAg
ICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjpzZXRNYXhMaXZlU2l6ZSk6IERl
bGV0ZWQuCisKIDIwMTctMDEtMjggIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5lZWQgc29tZSBsaW1pdCBvbiBBc3luYyBDYWxsIFN0
YWNrcyBmb3IgYXN5bmMgbG9vcHMgKHJBRiBsb29wcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKaW5kZXggYmM5YjZkMzJhMmIuLjBjMDIwYjM2Y2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcApAQCAtMTcwNSwxMSArMTcwNSw2IEBAIHZvaWQgSGVhcDo6bm90aWZ5SW5j
cmVtZW50YWxTd2VlcGVyKCkKICAgICBtX3N3ZWVwZXItPnN0YXJ0U3dlZXBpbmcoKTsKIH0KIAot
TkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6ZGlkRXhjZWVkTWF4TGl2ZVNpemUoKQotewotICAgIENS
QVNIKCk7Ci19Ci0KIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiB7CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwpAQCAtMTc0MSw5ICsxNzM2LDYgQEAg
dm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKIAogICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICBkYXRhTG9nKCJleHRyYU1lbW9yeVNpemUoKSA9ICIsIGV4dHJhTWVtb3J5U2l6ZSgp
LCAiLCBjdXJyZW50SGVhcFNpemUgPSAiLCBjdXJyZW50SGVhcFNpemUsICJcbiIpOwotCi0gICAg
aWYgKG1fbWF4TGl2ZVNpemUgJiYgY3VycmVudEhlYXBTaXplID4gbV9tYXhMaXZlU2l6ZSkKLSAg
ICAgICAgZGlkRXhjZWVkTWF4TGl2ZVNpemUoKTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6Z2NN
YXhIZWFwU2l6ZSgpICYmIGN1cnJlbnRIZWFwU2l6ZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUo
KSkKICAgICAgICAgSGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCmluZGV4IDJhNjIxYjZjYTQ2Li45MWU0OGFlOWY3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMTMyLDkgKzEzMiw2IEBAIHB1YmxpYzoKIAogICAgIFZN
KiB2bSgpIGNvbnN0OwogCi0gICAgLy8gU2V0IGEgaGFyZCBsaW1pdCB3aGVyZSBKU0Mgd2lsbCBj
cmFzaCBpZiBsaXZlIGhlYXAgc2l6ZSBleGNlZWRzIGl0LgotICAgIHZvaWQgc2V0TWF4TGl2ZVNp
emUoc2l6ZV90IHNpemUpIHsgbV9tYXhMaXZlU2l6ZSA9IHNpemU7IH0KLQogICAgIE1hcmtlZFNw
YWNlJiBvYmplY3RTcGFjZSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2U7IH0KICAgICBNYWNoaW5l
VGhyZWFkcyYgbWFjaGluZVRocmVhZHMoKSB7IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAK
QEAgLTYwMSw5ICs1OTgsNiBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX2Jsb2NrQnl0ZXNBbGxv
Y2F0ZWQgeyAwIH07CiAgICAgc2l6ZV90IG1fZXh0ZXJuYWxNZW1vcnlTaXplIHsgMCB9OwogI2Vu
ZGlmCi0KLSAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZGlkRXhjZWVkTWF4TGl2ZVNp
emUoKTsKLSAgICBzaXplX3QgbV9tYXhMaXZlU2l6ZSB7IDAgfTsKICAgICAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TXV0YXRvclNjaGVkdWxlcj4gbV9zY2hlZHVsZXI7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEyMDBh
ZGJmMzFlLi5mNzRjZjE2NGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wMS0zMCAgQW5k
cmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gSW4tcHJvY2Vz
cyBtZW1vcnkgcHJlc3N1cmUgbW9uaXRvciBmb3IgV2ViQ29udGVudCBwcm9jZXNzZXMuCisgICAg
ICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjc0OTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgV1RGIGhlbHBlciBmdW5jdGlvbiBmb3Ig
Z2V0dGluZyB0aGUgY3VycmVudCBwcm9jZXNzJ3MgbWVtb3J5IGZvb3RwcmludC4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvTWVtb3J5Rm9vdHByaW50LmNwcDoKKyAgICAgICAgKFdU
Rjo6bWVtb3J5Rm9vdHByaW50KToKKyAgICAgICAgKiB3dGYvTWVtb3J5Rm9vdHByaW50Lmg6CisK
IDIwMTctMDEtMjggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ2hlY2sgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgaW5zdGVhZCBvZiBzcGVjaWZpYyBo
ZWFkZXJzIHdoZW4gaW1wb3J0aW5nIGZyb20gV2ViS2l0QWRkaXRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZGQ4NzAxNzM5ZS4uZTQyZTBhNWU5OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzM3LDYgKzMz
Nyw4IEBACiAJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM3QjE1MUE4
MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovOyB9OwogCQlBOEE0NzQ4QzE1MUE4MjY0
MDA0MTIzRkYgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi87IH07CiAJ
CUFEN0M0MzRCMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8q
IEV4cGVjdGVkLmggKi87IH07CisJCUFERjJDRTY2MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlG
b290cHJpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBREYyQ0U2NzFFMzlGMTA2
MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlG
b290cHJpbnQuY3BwICovOyB9OwogCQlCMzhGRDdCRDE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVy
ZURlZmluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIzOEZEN0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oICovOyB9OwogCQlD
NEY4QTkzNzE5QzY1RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEY4QTkzNjE5QzY1RUI0MDBCMkIxNUQgLyog
U3RvcHdhdGNoLmggKi87IH07CiAJCUM4QjBFMUExRTAxQTQ4NkVCOTVFMEQxMSAvKiBJbmRleFNl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzN0Ux
RDdEQkQ4NEFDMzhGQUU0RDM0IC8qIEluZGV4U2V0LmggKi87IH07CkBAIC03MTksNiArNzIxLDgg
QEAKIAkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwZWN0ZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rwcmlu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJpbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8q
IE1lbW9yeUZvb3RwcmludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZW1vcnlGb290cHJpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzhG
RDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmVhdHVyZURlZmluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVRpbWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAwNSw2ICsxMDA5LDggQEAKIAkJCQlBOEE0NzJDQjE1
MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmggKi8sCiAJCQkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMw
IC8qIE1lZGlhVGltZS5jcHAgKi8sCiAJCQkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1l
ZGlhVGltZS5oICovLAorCQkJCUFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290
cHJpbnQuaCAqLywKKwkJCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHBy
aW50LmNwcCAqLywKIAkJCQlBOEE0NzJDQzE1MUE4MjVCMDA0MTIzRkYgLyogTWVzc2FnZVF1ZXVl
LmggKi8sCiAJCQkJQThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3Bw
ICovLAogCQkJCUE4QTQ3MkNFMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmggKi8s
CkBAIC0xNDk0LDYgKzE1MDAsNyBAQAogCQkJCUE4QTQ3NDFDMTUxQTgyNUIwMDQxMjNGRiAvKiBS
ZWZQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDFFMTUxQTgyNUIwMDQxMjNGRiAvKiBS
ZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJDREVEMEY0MTgxMTVDODUwMDREQkE3MCAv
KiBSdW5Mb29wLmggaW4gSGVhZGVycyAqLywKKwkJCQlBREYyQ0U2NjFFMzlGMTA2MDA2ODg5REIg
LyogTWVtb3J5Rm9vdHByaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDY5NDE5MjE2RUFBRjZE
MDAyNEUxNDYgLyogUnVuTG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTA5OEIwMDFD
MTY5RTA3MDAwODc3OTcgLyogU2FuZGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRGM0Iw
RjcxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCBpbiBIZWFkZXJzICov
LApAQCAtMTcwMSw2ICsxNzA4LDcgQEAKIAkJCQkxQUNBREQ4NDE4ODQ0ODAxMDBEOEI3MUQgLyog
RGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzNBRTE1MUE4MjVCMDA0MTIzRkYgLyogZGl5LWZwLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDczQjAxNTFBODI1QjAwNDEyM0ZGIC8qIGRvdWJsZS1jb252ZXJzaW9uLmNjIGluIFNvdXJjZXMg
Ki8sCisJCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCQTE1MUE4MjVCMDA0MTIzRkYgLyogZHRvYS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCMzE1MUE4MjVCMDA0MTIzRkYgLyogZmFzdC1kdG9h
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RC
aXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDU4YzEx
NmJkZDExLi44MWFmOTEyNzYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTY0LDYgKzY0LDcg
QEAgc2V0KFdURl9IRUFERVJTCiAgICAgTWFsbG9jUHRyLmgKICAgICBNYXRoRXh0cmFzLmgKICAg
ICBNZWRpYVRpbWUuaAorICAgIE1lbW9yeUZvb3RwcmludC5oCiAgICAgTWVzc2FnZVF1ZXVlLmgK
ICAgICBNZXRhQWxsb2NhdG9yLmgKICAgICBNZXRhQWxsb2NhdG9ySGFuZGxlLmgKQEAgLTIwNCw2
ICsyMDUsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBNRDUuY3BwCiAgICAgTWFpblRocmVhZC5j
cHAKICAgICBNZWRpYVRpbWUuY3BwCisgICAgTWVtb3J5Rm9vdHByaW50LmNwcAogICAgIE1ldGFB
bGxvY2F0b3IuY3BwCiAgICAgTW9ub3RvbmljVGltZS5jcHAKICAgICBOdW1iZXJPZkNvcmVzLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50LmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmRjYzBkZTYxMWIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvTWVtb3J5Rm9vdHByaW50LmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk1lbW9yeUZvb3RwcmludC5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8
bWFjaC9tYWNoLmg+CisjaW5jbHVkZSA8bWFjaC90YXNrX2luZm8uaD4KKyNlbmRpZgorCituYW1l
c3BhY2UgV1RGIHsKKworc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1lbW9yeUZvb3RwcmludCgpCit7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdGFza192bV9pbmZvX2RhdGFfdCB2bUluZm87Cisg
ICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3VudCA9IFRBU0tfVk1fSU5GT19DT1VOVDsKKyAg
ICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRhc2tfaW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNL
X1ZNX0lORk8sICh0YXNrX2luZm9fdCkgJnZtSW5mbywgJmNvdW50KTsKKyAgICBpZiAocmVzdWx0
ICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8ucGh5c19mb290cHJpbnQpOworI2Vsc2UKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5oIGIvU291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHBy
aW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdiOGVjYThlOTcx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50LmgKQEAg
LTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IG1lbW9yeUZvb3RwcmludCgpOworCit9CisKK3VzaW5nIFdURjo6
bWVtb3J5Rm9vdHByaW50OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTgzOTllYjNhNzUuLmVkZmI1Zjc3M2U0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTctMDEtMzAgIEFuZHJlYXMgS2xpbmcg
IDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEluLXByb2Nlc3MgbWVtb3J5IHBy
ZXNzdXJlIG1vbml0b3IgZm9yIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgorICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTY3NDkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0aW1lci1iYXNlZCBtZW1vcnkgcHJlc3N1cmUgbW9u
aXRvciB0aGF0IGNoZWNrcyB0aGUgcHJvY2VzcyBtZW1vcnkKKyAgICAgICAgZm9vdHByaW50IGV2
ZXJ5IDMwIHNlY29uZHMgYW5kIHJlYWN0cyB0byBjaGFuZ2VzIGJ5IHNldHRpbmcgYSBNZW1vcnlV
c2FnZVBvbGljeS4KKworICAgICAgICBUaGVyZSBhcmUgZm91ciBNZW1vcnlVc2FnZVBvbGljeSB2
YWx1ZXM6CisKKyAgICAgICAgICAgIC0gVW5yZXN0cmljdGVkIChiZWxvdyAxR0IpCisgICAgICAg
ICAgICAtIENvbnNlcnZhdGl2ZSAoYWJvdmUgMUdCKQorICAgICAgICAgICAgLSBTdHJpY3QgKGFi
b3ZlIDJHQikKKyAgICAgICAgICAgIC0gUGFuaWMgKGFib3ZlIDRHQikKKworICAgICAgICBUcmFu
c2l0aW9uaW5nIHRvIGEgaGlnaGVyIHBvbGljeSB3aWxsIGNhdXNlIG1lbW9yeSBwcmVzc3VyZSBo
YW5kbGVycyB0byBydW46CisKKyAgICAgICAgQXQgU3RyaWN0LCB3ZSBydW4gdGhlICJub24tY3Jp
dGljYWwiIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyLCB0aGVuIGNhcnJ5IG9uLgorCisgICAgICAg
IEF0IFBhbmljLCB3ZSBydW4gdGhlICJjcml0aWNhbCIgbWVtb3J5IHByZXNzdXJlIGhhbmRsZXIg
c3luY2hyb25vc2x5LCBhbmQgdGhlbgorICAgICAgICBpbW1lZGlhdGVseSByZS1tZWFzdXJlIHRo
ZSBmb290cHJpbnQuIElmIHRoZSBwcmVzc3VyZSBoYW5kbGVyIGZhaWxlZCB0byBicmluZworICAg
ICAgICB1cyBiZWxvdyB0aGUgNEdCIHRocmVzaG9sZCwgd2Uga2lsbCB0aGUgcHJvY2Vzcy4KKwor
ICAgICAgICBCZWZvcmUga2lsbGluZyB0aGUgcHJvY2VzcywgYW4gaW5zdGFsbGFibGUgZXhpdC10
aW1lIGNhbGxiYWNrIHdpbGwgcnVuLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28gaW5zdGFsbHMg
c3VjaCBhIGNhbGxiYWNrIHRoYXQgcHJpbnRzIG91dCBzb21lIHRpbWUtb2YtZGVhdGgKKyAgICAg
ICAgc3RhdGlzdGljcyBhYm91dCBDKysgYW5kIEphdmFTY3JpcHQgbWVtb3J5IHVzYWdlIHRvIGhv
cGVmdWxseSBoZWxwIHVuZGVyc3RhbmQKKyAgICAgICAgd2hhdCB3YXMgc29ha2luZyB1cCBhbGwg
dGhlIG1lbW9yeS4KKworICAgICAgICBUaGUgY3VycmVudCBNZW1vcnlVc2FnZVBvbGljeSBjYW4g
YmUgcmV0cmlldmVkIGxpa2Ugc286CisKKyAgICAgICAgICAgIE1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6c2luZ2xldG9uKCkubWVtb3J5VXNhZ2VQb2xpY3koKQorCisgICAgICAgIEZvciBTdHJpY3Qg
YW5kIGFib3ZlLCB0aGUgb2xkLXN0eWxlICJpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSIgd2lsbCBh
bHNvIHJldHVybiB0cnVlLgorCisgICAgICAgICogYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tbW9uVk1TbG93KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpsaXZlU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6ZGVhZFNpemUpOgorICAgICAgICAqIHBh
Z2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6bG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVhdGgpOgorICAgICAg
ICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
Ok1lbW9yeVByZXNzdXJlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjp0aHJlc2hvbGRGb3JQb2xpY3kp
OgorICAgICAgICAoV2ViQ29yZTo6cG9saWN5Rm9yRm9vdHByaW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6ZGlkRXhjZWVkTWVtb3J5TGltaXRBbmRGYWlsZWRU
b1JlY292ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFz
dXJlbWVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRFeGl0
VGltZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
aXNVbmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6bWVtb3J5VXNhZ2VQb2xpY3kpOgorCiAyMDE3LTAxLTMwICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBTZXZlcmFsIHdlYiB0aW1p
bmcgdGVzdHMgY3Jhc2ggaW4gR1RLKyBhbmQgQXBwbGVXaW4gYm90cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ29tbW9uVk0uY3BwCmluZGV4IGIxYjA2YWEwNzQwLi4wZDVhNGE2MDZlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcApAQCAtNDYsMTAgKzQ2LDYgQEAg
Vk0mIGNvbW1vblZNU2xvdygpCiAgICAgCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6
ZVRocmVhZGluZygpOwogICAgIGdfY29tbW9uVk1Pck51bGwgPSAmVk06OmNyZWF0ZUxlYWtlZChM
YXJnZUhlYXApLmxlYWtSZWYoKTsKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCi0gICAg
c3RhdGljIGNvbnN0IHNpemVfdCBtYXhHQ0hlYXBTaXplID0gNCAqIEdCOwotICAgIGdfY29tbW9u
Vk1Pck51bGwtPmhlYXAuc2V0TWF4TGl2ZVNpemUobWF4R0NIZWFwU2l6ZSk7Ci0jZW5kaWYKICAg
ICBnX2NvbW1vblZNT3JOdWxsLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gQXQgYW55IHRpbWUs
IHdlIG1heSBkbyB0aGluZ3MgdGhhdCBhZmZlY3QgdGhlIEdDLgogI2lmICFQTEFURk9STShJT1Mp
CiAgICAgZ19jb21tb25WTU9yTnVsbC0+c2V0RXhjbHVzaXZlVGhyZWFkKHN0ZDo6dGhpc190aHJl
YWQ6OmdldF9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgK
aW5kZXggMTgzNmMyYmYxMDAuLjRkNTczOGNhYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtMTI0LDYgKzEyNCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHBydW5lKCk7CiAgICAgdm9pZCBwcnVuZVNvb24oKTsKICAgICB1bnNpZ25lZCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9saXZlU2l6ZSArIG1fZGVhZFNpemU7IH0KKyAgICB1bnNpZ25lZCBsaXZl
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZVNpemU7IH0KKyAgICB1bnNpZ25lZCBkZWFkU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVhZFNpemU7IH0KIAogICAgIHZvaWQgc2V0RGVhZERlY29k
ZWREYXRhRGVsZXRpb25JbnRlcnZhbChzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGludGVydmFs
KSB7IG1fZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IGludGVydmFsOyB9CiAgICAg
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFs
KCkgY29uc3QgeyByZXR1cm4gbV9kZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCBkNjQ0NDRjZjBkYS4uOWJiM2Qz
ZjRiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAtMjksMTIgKzI5
LDE0IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkdDQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVT
dHlsZVNoZWV0T3duZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCkBAIC0xMjgsNiArMTMwLDQwIEBAIHZv
aWQgcmVsZWFzZU1lbW9yeShDcml0aWNhbCBjcml0aWNhbCwgU3luY2hyb25vdXMgc3luY2hyb25v
dXMpCiAjZW5kaWYKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorc3RhdGljIHVuc2ln
bmVkIHBhZ2VDb3VudCgpCit7CisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIFBhZ2U6OmZv
ckVhY2hQYWdlKFsmXSAoUGFnZSYgcGFnZSkgeworICAgICAgICBpZiAoIXBhZ2UuaXNVdGlsaXR5
UGFnZSgpKQorICAgICAgICAgICAgKytjb3VudDsKKyAgICB9KTsKKyAgICByZXR1cm4gY291bnQ7
Cit9CisjZW5kaWYKKwordm9pZCBsb2dNZW1vcnlTdGF0aXN0aWNzQXRUaW1lT2ZEZWF0aCgpCit7
CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgYXV0byYgdm0gPSBjb21tb25WTSgpOwor
ICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTWVtb3J5IHVzYWdlIHN0YXRpc3RpY3Mg
YXQgdGltZSBvZiBkZWF0aDoiKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkdD
IGhlYXAgc2l6ZTogJXp1Iiwgdm0uaGVhcC5zaXplKCkpOworICAgIFJFTEVBU0VfTE9HKE1lbW9y
eVByZXNzdXJlLCAiR0MgaGVhcCBleHRyYSBtZW1vcnkgc2l6ZTogJXp1Iiwgdm0uaGVhcC5leHRy
YU1lbW9yeVNpemUoKSk7CisjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQorICAgIFJFTEVBU0Vf
TE9HKE1lbW9yeVByZXNzdXJlLCAiR0MgaGVhcCBleHRlcm5hbCBtZW1vcnk6ICV6dSIsIHZtLmhl
YXAuZXh0ZXJuYWxNZW1vcnlTaXplKCkpOworI2VuZGlmCisgICAgUkVMRUFTRV9MT0coTWVtb3J5
UHJlc3N1cmUsICJHbG9iYWwgb2JqZWN0IGNvdW50OiAlenUiLCB2bS5oZWFwLmdsb2JhbE9iamVj
dENvdW50KCkpOworCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJQYWdlIGNvdW50
OiAldSIsIHBhZ2VDb3VudCgpKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkRv
Y3VtZW50IGNvdW50OiAldSIsIERvY3VtZW50OjphbGxEb2N1bWVudHMoKS5zaXplKCkpOworICAg
IFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTWVtb3J5Q2FjaGUgbGl2ZSBzaXplOiAlbHUg
TUIiLCBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkubGl2ZVNpemUoKSAvIE1CKTsKKyAgICBSRUxF
QVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeUNhY2hlIGRlYWQgc2l6ZTogJWx1IE1CIiwg
TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmRlYWRTaXplKCkgLyBNQik7CisgICAgUkVMRUFTRV9M
T0coTWVtb3J5UHJlc3N1cmUsICJMaXZlIEphdmFTY3JpcHQgb2JqZWN0czoiKTsKKyAgICBmb3Ig
KGF1dG8mIGl0IDogKnZtLmhlYXAub2JqZWN0VHlwZUNvdW50cygpKQorICAgICAgICBSRUxFQVNF
X0xPRyhNZW1vcnlQcmVzc3VyZSwgIiAgJXM6ICVkIiwgaXQua2V5LCBpdC52YWx1ZSk7CisjZW5k
aWYKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5
KENyaXRpY2FsKSB7IH0KIHZvaWQgamV0dGlzb25FeHBlbnNpdmVPYmplY3RzT25Ub3BMZXZlbE5h
dmlnYXRpb24oKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmgKaW5kZXggMWQ5OTM3
MmNhZjIuLjk0NDA4YWUxMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9y
eVJlbGVhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuaApAQCAt
MzMsNSArMzMsNiBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbGVhc2VNZW1vcnkoQ3JpdGljYWws
IFN5bmNocm9ub3VzKTsKIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKTsKIHZv
aWQgamV0dGlzb25FeHBlbnNpdmVPYmplY3RzT25Ub3BMZXZlbE5hdmlnYXRpb24oKTsKIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJNZW1vcnlSZWxlYXNlTm90aWZ5Q2FsbGJhY2tzKCk7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIGxvZ01lbW9yeVN0YXRpc3RpY3NBdFRpbWVPZkRlYXRoKCk7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IGI5YWMwZTU5MDBkLi5mYTU0OTM2NGY3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZUhhbmRsZXIu
aCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5Rm9vdHByaW50
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzksMTIgKzQwLDExNSBAQCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXImIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkKIH0KIAog
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKQorICAgIDogbV9t
ZWFzdXJlbWVudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKQogI2lmIE9TKExJTlVYKQotICAgIDogbV9ob2xk
T2ZmVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpo
b2xkT2ZmVGltZXJGaXJlZCkKKyAgICAsIG1faG9sZE9mZlRpbWVyKFJ1bkxvb3A6Om1haW4oKSwg
dGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpCiAjZW5kaWYK
IHsKIH0KIAordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGlj
TWVtb3J5TW9uaXRvcihib29sIHVzZSkKK3sKKyAgICBpZiAodXNlKQorICAgICAgICBtX21lYXN1
cmVtZW50VGltZXIuc3RhcnRSZXBlYXRpbmcoMzApOworICAgIGVsc2UKKyAgICAgICAgbV9tZWFz
dXJlbWVudFRpbWVyLnN0b3AoKTsKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorc3Rh
dGljIGNvbnN0IGNoYXIqIHRvU3RyaW5nKE1lbW9yeVVzYWdlUG9saWN5IHBvbGljeSkKK3sKKyAg
ICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJp
Y3RlZDogcmV0dXJuICJVbnJlc3RyaWN0ZWQiOworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6
OkNvbnNlcnZhdGl2ZTogcmV0dXJuICJDb25zZXJ2YXRpdmUiOworICAgIGNhc2UgTWVtb3J5VXNh
Z2VQb2xpY3k6OlN0cmljdDogcmV0dXJuICJTdHJpY3QiOworICAgIGNhc2UgTWVtb3J5VXNhZ2VQ
b2xpY3k6OlBhbmljOiByZXR1cm4gIlBhbmljIjsKKyAgICB9Cit9CisjZW5kaWYKKworc3RhdGlj
IHNpemVfdCB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5KQorewor
ICAgIHN3aXRjaCAocG9saWN5KSB7CisgICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6Q29uc2Vy
dmF0aXZlOgorICAgICAgICByZXR1cm4gMSAqIEdCOworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xp
Y3k6OlN0cmljdDoKKyAgICAgICAgcmV0dXJuIDIgKiBHQjsKKyAgICBjYXNlIE1lbW9yeVVzYWdl
UG9saWN5OjpQYW5pYzoKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCisgICAgICAgIHJl
dHVybiA0ICogR0I7CisjZWxzZQorICAgICAgICByZXR1cm4gMyAqIEdCOworI2VuZGlmCisgICAg
Y2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0cmljdGVkOgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgTWVtb3J5
VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVfdCBmb290cHJpbnQpCit7CisgICAg
aWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OlBh
bmljKSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYzsKKyAgICBpZiAo
Zm9vdHByaW50ID49IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0
KSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q7CisgICAgaWYgKGZv
b3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OkNvbnNlcnZh
dGl2ZSkpCisgICAgICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6Q29uc2VydmF0aXZlOwor
ICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0cmljdGVkOworfQorCitORVZFUl9J
TkxJTkUgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmRpZEV4Y2VlZE1lbW9yeUxpbWl0QW5k
RmFpbGVkVG9SZWNvdmVyKCkKK3sKKyAgICBDUkFTSCgpOworfQorCit2b2lkIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKCkKK3sKKyAgICBhdXRvIGZvb3Rwcmlu
dCA9IG1lbW9yeUZvb3RwcmludCgpOworICAgIGlmICghZm9vdHByaW50KQorICAgICAgICByZXR1
cm47CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJDdXJyZW50IG1lbW9yeSBmb290
cHJpbnQ6ICVsdSBNQiIsIGZvb3RwcmludC52YWx1ZSgpIC8gTUIpOworCisgICAgYXV0byBuZXdQ
b2xpY3kgPSBwb2xpY3lGb3JGb290cHJpbnQoZm9vdHByaW50LnZhbHVlKCkpOworICAgIGlmIChu
ZXdQb2xpY3kgPT0gbV9tZW1vcnlVc2FnZVBvbGljeSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJNZW1vcnkgdXNhZ2UgcG9saWN5IGNoYW5nZWQ6
ICVzIC0+ICVzIiwgdG9TdHJpbmcobV9tZW1vcnlVc2FnZVBvbGljeSksIHRvU3RyaW5nKG5ld1Bv
bGljeSkpOworCisgICAgbV9tZW1vcnlVc2FnZVBvbGljeSA9IG5ld1BvbGljeTsKKworICAgIGlm
IChuZXdQb2xpY3kgPT0gTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKG5ld1BvbGljeSA9PSBNZW1vcnlVc2FnZVBvbGljeTo6Q29uc2Vy
dmF0aXZlKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwb2xpY3kgYnkgY2hv
b3Npbmcgd2hpY2ggY2FjaGVzIHNob3VsZCByZXNwZWN0IGl0LCBhbmQgaG9va2luZyB0aGVtIHVw
LiAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChuZXdQb2xpY3kgPT0gTWVtb3J5
VXNhZ2VQb2xpY3k6OlN0cmljdCkgeworICAgICAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3Vy
ZSwgIkF0dGVtcHRpbmcgdG8gcmVkdWNlIG1lbW9yeSBmb290cHJpbnQgYnkgZnJlZWluZyBsZXNz
IGltcG9ydGFudCBvYmplY3RzLiIpOworICAgICAgICByZWxlYXNlTWVtb3J5KENyaXRpY2FsOjpO
bywgU3luY2hyb25vdXM6Ok5vKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJFTEVB
U0VfQVNTRVJUKG5ld1BvbGljeSA9PSBNZW1vcnlVc2FnZVBvbGljeTo6UGFuaWMpOworCisgICAg
UkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJBdHRlbXB0aW5nIHRvIHJlZHVjZSBtZW1vcnkg
Zm9vdHByaW50IGJ5IGZyZWVpbmcgbW9yZSBpbXBvcnRhbnQgb2JqZWN0cy4iKTsKKyAgICByZWxl
YXNlTWVtb3J5KENyaXRpY2FsOjpZZXMsIFN5bmNocm9ub3VzOjpZZXMpOworICAgIGF1dG8gbmV3
Rm9vdHByaW50ID0gbWVtb3J5Rm9vdHByaW50KCk7CisgICAgUkVMRUFTRV9BU1NFUlQobmV3Rm9v
dHByaW50KTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk5ldyBtZW1vcnkgZm9v
dHByaW50OiAlbHUgTUIiLCBuZXdGb290cHJpbnQudmFsdWUoKSAvIE1CKTsKKyAgICBpZiAobmV3
Rm9vdHByaW50LnZhbHVlKCkgPCB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6
OlBhbmljKSkgeworICAgICAgICBtX21lbW9yeVVzYWdlUG9saWN5ID0gcG9saWN5Rm9yRm9vdHBy
aW50KG5ld0Zvb3RwcmludC52YWx1ZSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJl
c3N1cmUsICJQcmVzc3VyZSByZWR1Y2VkIGJlbG93IHBhbmljIHRocmVzaG9sZC4gTmV3IG1lbW9y
eSB1c2FnZSBwb2xpY3k6ICVzIiwgdG9TdHJpbmcobV9tZW1vcnlVc2FnZVBvbGljeSkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiQ3Jh
c2hpbmcgZHVlIHRvIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2UgKyBpbmFiaWxpdHkgdG8gZnJlZSB1
cCBtZW1vcnkgYmVsb3cgcGFuaWMgbGltaXQuIik7CisgICAgaWYgKG1fZXhpdFRpbWVDYWxsYmFj
aykKKyAgICAgICAgbV9leGl0VGltZUNhbGxiYWNrKCk7CisgICAgQ1JBU0goKTsKK30KKwogdm9p
ZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmJlZ2luU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKQog
ewogICAgIG1faXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAppbmRleCA2MDFhNDFlZGFl
OC4uYzA0YjU4ZjYwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9y
eVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oCkBAIC0zNCwxNiArMzQsMTYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5o
PgotI2VsaWYgT1MoTElOVVgpCi0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNlbmRpZgorCiAj
aWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2VuZGlmCi0jZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw2ICs1NSwxMyBAQCBlbnVtIE1lbW9y
eVByZXNzdXJlUmVhc29uIHsKIH07CiAjZW5kaWYKIAorZW51bSBjbGFzcyBNZW1vcnlVc2FnZVBv
bGljeSB7CisgICAgVW5yZXN0cmljdGVkLCAvLyBBbGxvY2F0ZSBhcyBtdWNoIGFzIHlvdSB3YW50
CisgICAgQ29uc2VydmF0aXZlLCAvLyBNYXliZSB5b3UgZG9uJ3QgY2FjaGUgZXZlcnkgc2luZ2xl
IHRoaW5nCisgICAgU3RyaWN0LCAvLyBUaW1lIHRvIHN0YXJ0IHBpbmNoaW5nIHBlbm5pZXMgZm9y
IHJlYWwKKyAgICBQYW5pYywgLy8gT0ggR09EIFdFJ1JFIFNJTktJTkcsIFRIUk9XIEVWRVJZVEhJ
TkcgT1ZFUkJPQVJECit9OworCiBlbnVtIGNsYXNzIENyaXRpY2FsIHsgTm8sIFllcyB9OwogZW51
bSBjbGFzcyBTeW5jaHJvbm91cyB7IE5vLCBZZXMgfTsKIApAQCAtNjgsMTIgKzc1LDE2IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zdGFsbCgpOwogCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCk7CisK
KyAgICB2b2lkIHNldEV4aXRUaW1lQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0
aW9uKSB7IG1fZXhpdFRpbWVDYWxsYmFjayA9IFdURk1vdmUoZnVuY3Rpb24pOyB9CisKICAgICB2
b2lkIHNldExvd01lbW9yeUhhbmRsZXIoTG93TWVtb3J5SGFuZGxlciYmIGhhbmRsZXIpCiAgICAg
ewogICAgICAgICBtX2xvd01lbW9yeUhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOwogICAgIH0K
IAotICAgIGJvb2wgaXNVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QgeyByZXR1cm4gbV91bmRl
ck1lbW9yeVByZXNzdXJlIHx8IG1faXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmU7IH0KKyAgICBi
b29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJNZW1vcnlQ
cmVzc3VyZSB8fCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlIHx8IG1lbW9yeVVzYWdlUG9s
aWN5KCkgPj0gTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdDsgfQogICAgIHZvaWQgc2V0VW5kZXJN
ZW1vcnlQcmVzc3VyZShib29sIGIpIHsgbV91bmRlck1lbW9yeVByZXNzdXJlID0gYjsgfQogCiAj
aWYgUExBVEZPUk0oSU9TKQpAQCAtMTM4LDYgKzE0OSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGJlZ2luU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGVuZFNpbXVsYXRlZE1lbW9yeVByZXNzdXJlKCk7CiAKKyAgICBNZW1vcnlV
c2FnZVBvbGljeSBtZW1vcnlVc2FnZVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNh
Z2VQb2xpY3k7IH0gCisKIHByaXZhdGU6CiAgICAgdm9pZCB1bmluc3RhbGwoKTsKIApAQCAtMTQ5
LDYgKzE2Miw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25kVG9NZW1vcnlQcmVzc3VyZShD
cml0aWNhbCwgU3luY2hyb25vdXMgPSBTeW5jaHJvbm91czo6Tm8pOwogICAgIHZvaWQgcGxhdGZv
cm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKTsKIAorICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0gg
dm9pZCBkaWRFeGNlZWRNZW1vcnlMaW1pdEFuZEZhaWxlZFRvUmVjb3ZlcigpOworICAgIHZvaWQg
bWVhc3VyZW1lbnRUaW1lckZpcmVkKCk7CisKICNpZiBPUyhMSU5VWCkKICAgICBjbGFzcyBFdmVu
dEZEUG9sbGVyIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRGRFBvbGxlcik7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTcwLDEyICsxODYsMTUgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgYm9vbCBtX2luc3RhbGxlZCB7IGZhbHNlIH07Ci0gICAgdGltZV90IG1f
bGFzdFJlc3BvbmRUaW1lIHsgMCB9OwogICAgIExvd01lbW9yeUhhbmRsZXIgbV9sb3dNZW1vcnlI
YW5kbGVyOwogCiAgICAgc3RkOjphdG9taWM8Ym9vbD4gbV91bmRlck1lbW9yeVByZXNzdXJlOwog
ICAgIGJvb2wgbV9pc1NpbXVsYXRpbmdNZW1vcnlQcmVzc3VyZSB7IGZhbHNlIH07CiAKKyAgICBS
dW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1fbWVhc3VyZW1lbnRUaW1lcjsK
KyAgICBNZW1vcnlVc2FnZVBvbGljeSBtX21lbW9yeVVzYWdlUG9saWN5IHsgTWVtb3J5VXNhZ2VQ
b2xpY3k6OlVucmVzdHJpY3RlZCB9OworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2V4aXRU
aW1lQ2FsbGJhY2s7CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IENhbiB3ZSBz
aGFyZSBtb3JlIG9mIHRoaXMgd2l0aCBPcGVuU291cmNlPwogICAgIHVpbnQzMl90IG1fbWVtb3J5
UHJlc3N1cmVSZWFzb24geyBNZW1vcnlQcmVzc3VyZVJlYXNvbk5vbmUgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBjMDgzYzM3ODJkNC4uYjA2NGQ1MzMzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxNy0wMS0zMCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gSW4tcHJvY2VzcyBtZW1vcnkgcHJlc3N1cmUgbW9uaXRvciBmb3IgV2ViQ29udGVudCBw
cm9jZXNzZXMuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjc0OTE+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIHRoZSBpbi1w
cm9jZXNzIG1lbW9yeSBtb25pdG9yIGZvciBXZWJDb250ZW50IHByb2Nlc3NlcyBvbiBtYWNPUy4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAxNy0wMS0yOSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1RocmVhZGVk
IENvbXBvc2l0b3JdIENyYXNoIG9uIFdlYkNvcmU6OkdMQ29udGV4dDo6dmVyc2lvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkNjMyZWM3MzcwMC4uYjUx
OTVhODA5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MjYxLDYgKzI2MSwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICBtZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuc2V0TG93TWVtb3J5SGFuZGxlcihbXSAoQ3JpdGljYWwgY3JpdGljYWws
IFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKSB7CiAgICAgICAgICAgICBXZWJDb3JlOjpyZWxlYXNl
TWVtb3J5KGNyaXRpY2FsLCBzeW5jaHJvbm91cyk7CiAgICAgICAgIH0pOworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldFNob3VsZFVzZVBlcmlvZGlj
TWVtb3J5TW9uaXRvcih0cnVlKTsKKyAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldEV4
aXRUaW1lQ2FsbGJhY2soW10gKCkgeworICAgICAgICAgICAgV2ViQ29yZTo6bG9nTWVtb3J5U3Rh
dGlzdGljc0F0VGltZU9mRGVhdGgoKTsKKyAgICAgICAgfSk7CisjZW5kaWYKICAgICAgICAgbWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmluc3RhbGwoKTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300172</attachid>
            <date>2017-01-30 17:52:16 -0800</date>
            <delta_ts>2017-01-30 18:29:07 -0800</delta_ts>
            <desc>Basically a patch</desc>
            <filename>bug-167491-2.diff</filename>
            <type>text/plain</type>
            <size>30371</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRiOGQ4ZThhMWQwLi5kZTIwYjA1NGFlMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDEtMzEgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEluLXByb2Nlc3Mg
bWVtb3J5IHByZXNzdXJlIG1vbml0b3IgZm9yIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgorICAgICAg
ICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY3NDkxPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzAxMTYwNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBzbG9wcHkgIm1heCBsaXZlIGhlYXAgc2l6ZSIgbWVjaGFuaXNtIGZyb20g
SlNDIGluIGZhdm9yIG9mIHRoZSBuZXcKKyAgICAgICAgV2ViQ29yZS1zaWRlIG1lbW9yeSBmb290
cHJpbnQgbW9uaXRvci4KKworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6
OkhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpkaWRF
eGNlZWRNYXhMaXZlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldE1heExpdmVTaXplKTogRGVsZXRlZC4KKwogMjAxNy0wMS0yOCAg
TWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogTmVlZCBzb21lIGxpbWl0IG9uIEFzeW5jIENhbGwgU3RhY2tzIGZvciBhc3luYyBsb29wcyAo
ckFGIGxvb3BzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCBiYzliNmQzMmEy
Yi4uMGMwMjBiMzZjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0xNzA1
LDExICsxNzA1LDYgQEAgdm9pZCBIZWFwOjpub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKQogICAg
IG1fc3dlZXBlci0+c3RhcnRTd2VlcGluZygpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBIZWFw
OjpkaWRFeGNlZWRNYXhMaXZlU2l6ZSgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQogdm9pZCBIZWFw
Ojp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7CkBAIC0xNzQxLDkgKzE3MzYsNiBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9j
YXRpb25MaW1pdHMoKQogCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coImV4dHJh
TWVtb3J5U2l6ZSgpID0gIiwgZXh0cmFNZW1vcnlTaXplKCksICIsIGN1cnJlbnRIZWFwU2l6ZSA9
ICIsIGN1cnJlbnRIZWFwU2l6ZSwgIlxuIik7Ci0KLSAgICBpZiAobV9tYXhMaXZlU2l6ZSAmJiBj
dXJyZW50SGVhcFNpemUgPiBtX21heExpdmVTaXplKQotICAgICAgICBkaWRFeGNlZWRNYXhMaXZl
U2l6ZSgpOwogICAgIAogICAgIGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkgJiYgY3VycmVu
dEhlYXBTaXplID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQogICAgICAgICBIZWFwU3RhdGlz
dGljczo6ZXhpdFdpdGhGYWlsdXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXgg
MmE2MjFiNmNhNDYuLjkxZTQ4YWU5ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBA
IC0xMzIsOSArMTMyLDYgQEAgcHVibGljOgogCiAgICAgVk0qIHZtKCkgY29uc3Q7CiAKLSAgICAv
LyBTZXQgYSBoYXJkIGxpbWl0IHdoZXJlIEpTQyB3aWxsIGNyYXNoIGlmIGxpdmUgaGVhcCBzaXpl
IGV4Y2VlZHMgaXQuCi0gICAgdm9pZCBzZXRNYXhMaXZlU2l6ZShzaXplX3Qgc2l6ZSkgeyBtX21h
eExpdmVTaXplID0gc2l6ZTsgfQotCiAgICAgTWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyBy
ZXR1cm4gbV9vYmplY3RTcGFjZTsgfQogICAgIE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFk
cygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVhZHM7IH0KIApAQCAtNjAxLDkgKzU5OCw2IEBAIHBy
aXZhdGU6CiAgICAgc2l6ZV90IG1fYmxvY2tCeXRlc0FsbG9jYXRlZCB7IDAgfTsKICAgICBzaXpl
X3QgbV9leHRlcm5hbE1lbW9yeVNpemUgeyAwIH07CiAjZW5kaWYKLQotICAgIE5PX1JFVFVSTl9E
VUVfVE9fQ1JBU0ggdm9pZCBkaWRFeGNlZWRNYXhMaXZlU2l6ZSgpOwotICAgIHNpemVfdCBtX21h
eExpdmVTaXplIHsgMCB9OwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdG9yU2NoZWR1
bGVyPiBtX3NjaGVkdWxlcjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMTIwMGFkYmYzMWUuLjUwMGZhOWVkZjI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTAxLTMxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KKworICAgICAgICBbTWFjXSBJbi1wcm9jZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25p
dG9yIGZvciBXZWJDb250ZW50IHByb2Nlc3Nlcy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE2NzQ5MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMTE2MDcyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFdURiBoZWxwZXIg
ZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIGN1cnJlbnQgcHJvY2VzcydzIG1lbW9yeSBmb290cHJp
bnQuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL01lbW9yeUZvb3RwcmludC5jcHA6
CisgICAgICAgIChXVEY6Om1lbW9yeUZvb3RwcmludCk6CisgICAgICAgICogd3RmL01lbW9yeUZv
b3RwcmludC5oOgorCiAyMDE3LTAxLTI4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIENoZWNrIFVTRShBUFBMRV9JTlRFUk5BTF9TREspIGluc3RlYWQg
b2Ygc3BlY2lmaWMgaGVhZGVycyB3aGVuIGltcG9ydGluZyBmcm9tIFdlYktpdEFkZGl0aW9ucwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmRkODcwMTczOWUu
LmU0MmUwYTVlOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTMzNyw2ICszMzcsOCBAQAogCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhy
ZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLzsgfTsKIAkJQThB
NDc0OEMxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZp
Zy5oICovOyB9OwogCQlBRDdDNDM0QjFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEN0M0MzRBMUREMkE0
QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovOyB9OworCQlBREYyQ0U2NjFFMzlGMTA2MDA2ODg5
REIgLyogTWVtb3J5Rm9vdHByaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQURG
MkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2NTFFMzlGMTA2MDA2ODg5
REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCAqLzsgfTsKIAkJQjM4RkQ3QkQxNjg5NTNFODAwNjVD
OTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMu
aCAqLzsgfTsKIAkJQzRGOEE5MzcxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGOEE5MzYxOUM2NUVC
NDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovOyB9OwogCQlDOEIwRTFBMUUwMUE0ODZFQjk1RTBE
MTEgLyogSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMzdFMUQ3REJEODRBQzM4RkFFNEQzNCAvKiBJbmRleFNldC5oICovOyB9OwpAQCAt
NzE5LDYgKzcyMSw4IEBACiAJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWRE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVhZERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8q
IGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4
cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cGVjdGVkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBN
ZW1vcnlGb290cHJpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5
Rm9vdHByaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERjJDRTY1MUUzOUYx
MDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0
Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcHdhdGNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRp
YVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUaW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDUsNiArMTAwOSw4IEBACiAJ
CQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4
NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMw
MEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywKKwkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIg
LyogTWVtb3J5Rm9vdHByaW50LmggKi8sCisJCQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8q
IE1lbW9yeUZvb3RwcmludC5jcHAgKi8sCiAJCQkJQThBNDcyQ0MxNTFBODI1QjAwNDEyM0ZGIC8q
IE1lc3NhZ2VRdWV1ZS5oICovLAogCQkJCUE4QTQ3MkNEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRh
QWxsb2NhdG9yLmNwcCAqLywKIAkJCQlBOEE0NzJDRTE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFs
bG9jYXRvci5oICovLApAQCAtMTQ5NCw2ICsxNTAwLDcgQEAKIAkJCQlBOEE0NzQxQzE1MUE4MjVC
MDA0MTIzRkYgLyogUmVmUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQxRTE1MUE4MjVC
MDA0MTIzRkYgLyogUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQ0RFRDBGNDE4MTE1
Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQURGMkNFNjYxRTM5
RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ2
OTQxOTIxNkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUwOThCMDAxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0RjNCMEY3MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmgg
aW4gSGVhZGVycyAqLywKQEAgLTE3MDEsNiArMTcwOCw3IEBACiAJCQkJMUFDQUREODQxODg0NDgw
MTAwRDhCNzFEIC8qIERlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDczQUUxNTFBODI1QjAwNDEyM0ZGIC8qIGRpeS1mcC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5j
YyBpbiBTb3VyY2VzICovLAorCQkJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlG
b290cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQkExNTFBODI1QjAwNDEyM0ZG
IC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjMxNTFBODI1QjAwNDEyM0ZG
IC8qIGZhc3QtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0
RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAppbmRleCA1OGMxMTZiZGQxMS4uODFhZjkxMjc2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBA
IC02NCw2ICs2NCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIE1hbGxvY1B0ci5oCiAgICAgTWF0
aEV4dHJhcy5oCiAgICAgTWVkaWFUaW1lLmgKKyAgICBNZW1vcnlGb290cHJpbnQuaAogICAgIE1l
c3NhZ2VRdWV1ZS5oCiAgICAgTWV0YUFsbG9jYXRvci5oCiAgICAgTWV0YUFsbG9jYXRvckhhbmRs
ZS5oCkBAIC0yMDQsNiArMjA1LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgTUQ1LmNwcAogICAg
IE1haW5UaHJlYWQuY3BwCiAgICAgTWVkaWFUaW1lLmNwcAorICAgIE1lbW9yeUZvb3RwcmludC5j
cHAKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE1vbm90b25pY1RpbWUuY3BwCiAgICAgTnVt
YmVyT2ZDb3Jlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3Rwcmlu
dC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kY2MwZGU2MTFiMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorI2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlG
b290cHJpbnQoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHRhc2tfdm1faW5mb19kYXRh
X3Qgdm1JbmZvOworICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgY291bnQgPSBUQVNLX1ZNX0lO
Rk9fQ09VTlQ7CisgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNrX2luZm8obWFjaF90YXNr
X3NlbGYoKSwgVEFTS19WTV9JTkZPLCAodGFza19pbmZvX3QpICZ2bUluZm8sICZjb3VudCk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4odm1JbmZvLnBoeXNfZm9vdHByaW50
KTsKKyNlbHNlCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNlbmRpZgorfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuaCBiL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeUZvb3RwcmludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43YjhlY2E4ZTk3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZv
b3RwcmludC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0VYUE9S
VF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlGb290cHJpbnQoKTsKKworfQor
Cit1c2luZyBXVEY6Om1lbW9yeUZvb3RwcmludDsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU4Mzk5ZWIzYTc1
Li5hYWFhM2VkMzIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE3LTAxLTMxICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBJbi1wcm9j
ZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25pdG9yIGZvciBXZWJDb250ZW50IHByb2Nlc3Nlcy4KKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NzQ5MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMwMTE2MDcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyB0aW1lci1iYXNlZCBtZW1vcnkgcHJlc3N1cmUgbW9uaXRvciB0aGF0
IGNoZWNrcyB0aGUgcHJvY2VzcyBtZW1vcnkKKyAgICAgICAgZm9vdHByaW50IGV2ZXJ5IDMwIHNl
Y29uZHMgYW5kIHJlYWN0cyB0byBjaGFuZ2VzIGJ5IHNldHRpbmcgYSBNZW1vcnlVc2FnZVBvbGlj
eS4KKworICAgICAgICBUaGVyZSBhcmUgZm91ciBNZW1vcnlVc2FnZVBvbGljeSB2YWx1ZXM6CisK
KyAgICAgICAgICAgIC0gVW5yZXN0cmljdGVkIChiZWxvdyAxR0IpCisgICAgICAgICAgICAtIENv
bnNlcnZhdGl2ZSAoYWJvdmUgMUdCKQorICAgICAgICAgICAgLSBTdHJpY3QgKGFib3ZlIDJHQikK
KyAgICAgICAgICAgIC0gUGFuaWMgKGFib3ZlIDRHQiwgb3IgM0dCIGlmIDMyLWJpdCkKKworICAg
ICAgICBUcmFuc2l0aW9uaW5nIHRvIGEgaGlnaGVyIHBvbGljeSB3aWxsIGNhdXNlIG1lbW9yeSBw
cmVzc3VyZSBoYW5kbGVycyB0byBydW46CisKKyAgICAgICAgQXQgU3RyaWN0LCB3ZSBydW4gdGhl
ICJub24tY3JpdGljYWwiIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyLCB0aGVuIGNhcnJ5IG9uLgor
CisgICAgICAgIEF0IFBhbmljLCB3ZSBydW4gdGhlICJjcml0aWNhbCIgbWVtb3J5IHByZXNzdXJl
IGhhbmRsZXIgc3luY2hyb25vc2x5LCBhbmQgdGhlbgorICAgICAgICBpbW1lZGlhdGVseSByZS1t
ZWFzdXJlIHRoZSBmb290cHJpbnQuIElmIHRoZSBwcmVzc3VyZSBoYW5kbGVyIGZhaWxlZCB0byBi
cmluZworICAgICAgICB1cyBiZWxvdyB0aGUgNEdCIHRocmVzaG9sZCwgd2Uga2lsbCB0aGUgcHJv
Y2Vzcy4KKworICAgICAgICBCZWZvcmUga2lsbGluZyB0aGUgcHJvY2VzcywgYW4gaW5zdGFsbGFi
bGUgZXhpdC10aW1lIGNhbGxiYWNrIHdpbGwgcnVuLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28g
aW5zdGFsbHMgc3VjaCBhIGNhbGxiYWNrIHRoYXQgcHJpbnRzIG91dCBzb21lIHRpbWUtb2YtZGVh
dGgKKyAgICAgICAgc3RhdGlzdGljcyBhYm91dCBDKysgYW5kIEphdmFTY3JpcHQgbWVtb3J5IHVz
YWdlIHRvIGhvcGVmdWxseSBoZWxwIHVuZGVyc3RhbmQKKyAgICAgICAgd2hhdCB3YXMgc29ha2lu
ZyB1cCBhbGwgdGhlIG1lbW9yeS4KKworICAgICAgICBUaGUgY3VycmVudCBNZW1vcnlVc2FnZVBv
bGljeSBjYW4gYmUgcmV0cmlldmVkIGxpa2Ugc286CisKKyAgICAgICAgICAgIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2luZ2xldG9uKCkubWVtb3J5VXNhZ2VQb2xpY3koKQorCisgICAgICAgIEZv
ciBTdHJpY3QgYW5kIGFib3ZlLCB0aGUgb2xkLXN0eWxlICJpc1VuZGVyTWVtb3J5UHJlc3N1cmUo
KSIgd2lsbCBhbHNvIHJldHVybiB0cnVlLgorCisgICAgICAgICogYmluZGluZ3MvanMvQ29tbW9u
Vk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tbW9uVk1TbG93KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjps
aXZlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6ZGVhZFNpemUpOgorICAg
ICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6bG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVhdGgp
OgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjp0aHJlc2hvbGRG
b3JQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6cG9saWN5Rm9yRm9vdHByaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6ZGlkRXhjZWVkTWVtb3J5TGltaXRB
bmRGYWlsZWRUb1JlY292ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpzZXRFeGl0VGltZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6aXNVbmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6bWVtb3J5VXNhZ2VQb2xpY3kpOgorCiAyMDE3LTAxLTMwICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBTZXZlcmFs
IHdlYiB0aW1pbmcgdGVzdHMgY3Jhc2ggaW4gR1RLKyBhbmQgQXBwbGVXaW4gYm90cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCmluZGV4IGIxYjA2YWEwNzQwLi4wZDVhNGE2
MDZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcApAQCAtNDYsMTAg
KzQ2LDYgQEAgVk0mIGNvbW1vblZNU2xvdygpCiAgICAgCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6
aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIGdfY29tbW9uVk1Pck51bGwgPSAmVk06OmNyZWF0
ZUxlYWtlZChMYXJnZUhlYXApLmxlYWtSZWYoKTsKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhHQ0hlYXBTaXplID0gNCAqIEdCOwotICAg
IGdfY29tbW9uVk1Pck51bGwtPmhlYXAuc2V0TWF4TGl2ZVNpemUobWF4R0NIZWFwU2l6ZSk7Ci0j
ZW5kaWYKICAgICBnX2NvbW1vblZNT3JOdWxsLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gQXQg
YW55IHRpbWUsIHdlIG1heSBkbyB0aGluZ3MgdGhhdCBhZmZlY3QgdGhlIEdDLgogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgZ19jb21tb25WTU9yTnVsbC0+c2V0RXhjbHVzaXZlVGhyZWFkKHN0ZDo6
dGhpc190aHJlYWQ6OmdldF9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmgKaW5kZXggMTgzNmMyYmYxMDAuLjRkNTczOGNhYjAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtMTI0LDYgKzEyNCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBydW5lKCk7CiAgICAgdm9pZCBwcnVuZVNvb24oKTsKICAgICB1bnNpZ25lZCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9saXZlU2l6ZSArIG1fZGVhZFNpemU7IH0KKyAgICB1bnNp
Z25lZCBsaXZlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZVNpemU7IH0KKyAgICB1bnNpZ25l
ZCBkZWFkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVhZFNpemU7IH0KIAogICAgIHZvaWQgc2V0
RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
IGludGVydmFsKSB7IG1fZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IGludGVydmFs
OyB9CiAgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkZWFkRGVjb2RlZERhdGFEZWxldGlv
bkludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9kZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVy
dmFsOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCBkNjQ0NDRjZjBk
YS4uOTQxYmM4OWY5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAt
MjksMTIgKzI5LDE0IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiQ2hy
b21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uVk0uaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUg
IkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbmxpbmVTdHlsZVNoZWV0T3duZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCkBAIC00NSw2ICs0Nywx
MCBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJSZXNvdXJjZVVzYWdlVGhyZWFk
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCByZWxlYXNl
Tm9uY3JpdGljYWxNZW1vcnkoKQpAQCAtMTI4LDYgKzEzNCw2NiBAQCB2b2lkIHJlbGVhc2VNZW1v
cnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKQogI2VuZGlmCiB9
CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK3N0YXRpYyB1bnNpZ25lZCBwYWdlQ291bnQo
KQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICBQYWdlOjpmb3JFYWNoUGFnZShbJl0g
KFBhZ2UmIHBhZ2UpIHsKKyAgICAgICAgaWYgKCFwYWdlLmlzVXRpbGl0eVBhZ2UoKSkKKyAgICAg
ICAgICAgICsrY291bnQ7CisgICAgfSk7CisgICAgcmV0dXJuIGNvdW50OworfQorI2VuZGlmCisK
K3N0YXRpYyBzaXplX3Qgdm1QYWdlU2l6ZSgpCit7CisjaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDAwMDAKKyAgICByZXR1cm4gdm1fa2Vy
bmVsX3BhZ2Vfc2l6ZTsKKyNlbHNlCisgICAgc3RhdGljIHNpemVfdCBjYWNoZWQgPSBzeXNjb25m
KF9TQ19QQUdFU0laRSk7CisgICAgcmV0dXJuIGNhY2hlZDsKKyNlbmRpZgorfQorCit2b2lkIGxv
Z01lbW9yeVN0YXRpc3RpY3NBdFRpbWVPZkRlYXRoKCkKK3sKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIHBhZ2VTaXplID0gdm1QYWdlU2l6
ZSgpOworICAgIGF1dG8gcGFnZXMgPSBwYWdlc1BlclZNVGFnKCk7CisKKyAgICBSRUxFQVNFX0xP
RyhNZW1vcnlQcmVzc3VyZSwgIkRpcnR5IG1lbW9yeSBwZXIgVk0gdGFnIGF0IHRpbWUgb2YgZGVh
dGg6Iik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CisgICAgICAg
IHNpemVfdCBkaXJ0eSA9IHBhZ2VzW2ldLmRpcnR5ICogcGFnZVNpemU7CisgICAgICAgIGlmICgh
ZGlydHkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgU3RyaW5nIHRhZ05hbWUgPSBk
aXNwbGF5TmFtZUZvclZNVGFnKGkpOworICAgICAgICBpZiAoIXRhZ05hbWUpCisgICAgICAgICAg
ICB0YWdOYW1lID0gU3RyaW5nOjpmb3JtYXQoIlRhZyAldSIsIGkpOworICAgICAgICBSRUxFQVNF
X0xPRyhNZW1vcnlQcmVzc3VyZSwgIiUxNnM6ICVsdSBNQiIsIHRhZ05hbWUubGF0aW4xKCkuZGF0
YSgpLCBkaXJ0eSAvIE1CKTsKKyAgICB9CisjZW5kaWYKKworICAgIGF1dG8mIHZtID0gY29tbW9u
Vk0oKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeSB1c2FnZSBzdGF0
aXN0aWNzIGF0IHRpbWUgb2YgZGVhdGg6Iik7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1
cmUsICJHQyBoZWFwIHNpemU6ICV6dSIsIHZtLmhlYXAuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xP
RyhNZW1vcnlQcmVzc3VyZSwgIkdDIGhlYXAgZXh0cmEgbWVtb3J5IHNpemU6ICV6dSIsIHZtLmhl
YXAuZXh0cmFNZW1vcnlTaXplKCkpOworI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKKyAgICBS
RUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkdDIGhlYXAgZXh0ZXJuYWwgbWVtb3J5OiAlenUi
LCB2bS5oZWFwLmV4dGVybmFsTWVtb3J5U2l6ZSgpKTsKKyNlbmRpZgorICAgIFJFTEVBU0VfTE9H
KE1lbW9yeVByZXNzdXJlLCAiR2xvYmFsIG9iamVjdCBjb3VudDogJXp1Iiwgdm0uaGVhcC5nbG9i
YWxPYmplY3RDb3VudCgpKTsKKworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiUGFn
ZSBjb3VudDogJXUiLCBwYWdlQ291bnQoKSk7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1
cmUsICJEb2N1bWVudCBjb3VudDogJXUiLCBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkuc2l6ZSgp
KTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeUNhY2hlIGxpdmUgc2l6
ZTogJWx1IE1CIiwgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmxpdmVTaXplKCkgLyBNQik7Cisg
ICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJNZW1vcnlDYWNoZSBkZWFkIHNpemU6ICVs
dSBNQiIsIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5kZWFkU2l6ZSgpIC8gTUIpOworICAgIFJF
TEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTGl2ZSBKYXZhU2NyaXB0IG9iamVjdHM6Iik7Cisg
ICAgZm9yIChhdXRvJiBpdCA6ICp2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMoKSkKKyAgICAgICAg
UkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICIgICVzOiAlZCIsIGl0LmtleSwgaXQudmFsdWUp
OworI2VuZGlmCit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIHBsYXRmb3JtUmVsZWFz
ZU1lbW9yeShDcml0aWNhbCkgeyB9CiB2b2lkIGpldHRpc29uRXhwZW5zaXZlT2JqZWN0c09uVG9w
TGV2ZWxOYXZpZ2F0aW9uKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01l
bW9yeVJlbGVhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5oCmluZGV4
IDFkOTkzNzJjYWYyLi45NDQwOGFlMTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9NZW1vcnlSZWxlYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNl
LmgKQEAgLTMzLDUgKzMzLDYgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxlYXNlTWVtb3J5KENy
aXRpY2FsLCBTeW5jaHJvbm91cyk7CiB2b2lkIHBsYXRmb3JtUmVsZWFzZU1lbW9yeShDcml0aWNh
bCk7CiB2b2lkIGpldHRpc29uRXhwZW5zaXZlT2JqZWN0c09uVG9wTGV2ZWxOYXZpZ2F0aW9uKCk7
CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyTWVtb3J5UmVsZWFzZU5vdGlmeUNhbGxiYWNr
cygpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2dNZW1vcnlTdGF0aXN0aWNzQXRUaW1lT2ZEZWF0
aCgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCBiOWFjMGU1OTAwZC4uZjZkMjFm
NWQxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJl
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUZv
b3RwcmludC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwxMjAgQEAg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigp
CiB9CiAKIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkKKyAg
ICA6IG1fbWVhc3VyZW1lbnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCkKICNpZiBPUyhMSU5VWCkKLSAgICA6
IG1faG9sZE9mZlRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpCisgICAgLCBtX2hvbGRPZmZUaW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZUaW1lckZpcmVkKQog
I2VuZGlmCiB7CiB9CiAKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQ
ZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCB1c2UpCit7CisgICAgaWYgKHVzZSkKKyAgICAgICAg
bV9tZWFzdXJlbWVudFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDMwKTsKKyAgICBlbHNlCisgICAgICAg
IG1fbWVhc3VyZW1lbnRUaW1lci5zdG9wKCk7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKK3N0YXRpYyBjb25zdCBjaGFyKiB0b1N0cmluZyhNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kp
Cit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpV
bnJlc3RyaWN0ZWQ6IHJldHVybiAiVW5yZXN0cmljdGVkIjsKKyAgICBjYXNlIE1lbW9yeVVzYWdl
UG9saWN5OjpDb25zZXJ2YXRpdmU6IHJldHVybiAiQ29uc2VydmF0aXZlIjsKKyAgICBjYXNlIE1l
bW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q6IHJldHVybiAiU3RyaWN0IjsKKyAgICBjYXNlIE1lbW9y
eVVzYWdlUG9saWN5OjpQYW5pYzogcmV0dXJuICJQYW5pYyI7CisgICAgfQorfQorI2VuZGlmCisK
K3N0YXRpYyBzaXplX3QgdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5IHBvbGlj
eSkKK3sKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6
OkNvbnNlcnZhdGl2ZToKKyAgICAgICAgcmV0dXJuIDEgKiBHQjsKKyAgICBjYXNlIE1lbW9yeVVz
YWdlUG9saWN5OjpTdHJpY3Q6CisgICAgICAgIHJldHVybiAyICogR0I7CisgICAgY2FzZSBNZW1v
cnlVc2FnZVBvbGljeTo6UGFuaWM6CisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorICAg
ICAgICByZXR1cm4gNCAqIEdCOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIDMgKiBHQjsKKyNlbmRp
ZgorICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZDoKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorfQorCitzdGF0aWMgTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVf
dCBmb290cHJpbnQpCit7CisgICAgaWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3ko
TWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljKSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9s
aWN5OjpQYW5pYzsKKyAgICBpZiAoZm9vdHByaW50ID49IHRocmVzaG9sZEZvclBvbGljeShNZW1v
cnlVc2FnZVBvbGljeTo6U3RyaWN0KSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5
OjpTdHJpY3Q7CisgICAgaWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5
VXNhZ2VQb2xpY3k6OkNvbnNlcnZhdGl2ZSkpCisgICAgICAgIHJldHVybiBNZW1vcnlVc2FnZVBv
bGljeTo6Q29uc2VydmF0aXZlOworICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0
cmljdGVkOworfQorCitORVZFUl9JTkxJTkUgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmRp
ZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFpbGVkVG9SZWNvdmVyKCkKK3sKKyAgICBDUkFTSCgpOwor
fQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKCkK
K3sKKyAgICBhdXRvIGZvb3RwcmludCA9IG1lbW9yeUZvb3RwcmludCgpOworICAgIGlmICghZm9v
dHByaW50KQorICAgICAgICByZXR1cm47CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUs
ICJDdXJyZW50IG1lbW9yeSBmb290cHJpbnQ6ICVsdSBNQiIsIGZvb3RwcmludC52YWx1ZSgpIC8g
TUIpOworCisgICAgYXV0byBuZXdQb2xpY3kgPSBwb2xpY3lGb3JGb290cHJpbnQoZm9vdHByaW50
LnZhbHVlKCkpOworICAgIGlmIChuZXdQb2xpY3kgPT0gbV9tZW1vcnlVc2FnZVBvbGljeSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJNZW1vcnkg
dXNhZ2UgcG9saWN5IGNoYW5nZWQ6ICVzIC0+ICVzIiwgdG9TdHJpbmcobV9tZW1vcnlVc2FnZVBv
bGljeSksIHRvU3RyaW5nKG5ld1BvbGljeSkpOworCisgICAgbV9tZW1vcnlVc2FnZVBvbGljeSA9
IG5ld1BvbGljeTsKKworICAgIGlmIChuZXdQb2xpY3kgPT0gTWVtb3J5VXNhZ2VQb2xpY3k6OlVu
cmVzdHJpY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG5ld1BvbGljeSA9PSBNZW1v
cnlVc2FnZVBvbGljeTo6Q29uc2VydmF0aXZlKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBwb2xpY3kgYnkgY2hvb3Npbmcgd2hpY2ggY2FjaGVzIHNob3VsZCByZXNwZWN0IGl0
LCBhbmQgaG9va2luZyB0aGVtIHVwLiAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChuZXdQb2xpY3kgPT0gTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdCkgeworICAgICAgICBSRUxF
QVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkF0dGVtcHRpbmcgdG8gcmVkdWNlIG1lbW9yeSBmb290
cHJpbnQgYnkgZnJlZWluZyBsZXNzIGltcG9ydGFudCBvYmplY3RzLiIpOworICAgICAgICByZWxl
YXNlTWVtb3J5KENyaXRpY2FsOjpObywgU3luY2hyb25vdXM6Ok5vKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKG5ld1BvbGljeSA9PSBNZW1vcnlVc2FnZVBv
bGljeTo6UGFuaWMpOworCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJBdHRlbXB0
aW5nIHRvIHJlZHVjZSBtZW1vcnkgZm9vdHByaW50IGJ5IGZyZWVpbmcgbW9yZSBpbXBvcnRhbnQg
b2JqZWN0cy4iKTsKKyAgICByZWxlYXNlTWVtb3J5KENyaXRpY2FsOjpZZXMsIFN5bmNocm9ub3Vz
OjpZZXMpOworCisgICAgLy8gUmVtZWFzdXJlIGZvb3RwcmludCB0byBzZWUgaG93IHdlbGwgdGhl
IHByZXNzdXJlIGhhbmRsZXIgZGlkLgorICAgIGZvb3RwcmludCA9IG1lbW9yeUZvb3RwcmludCgp
OworICAgIFJFTEVBU0VfQVNTRVJUKGZvb3RwcmludCk7CisKKyAgICBSRUxFQVNFX0xPRyhNZW1v
cnlQcmVzc3VyZSwgIk5ldyBtZW1vcnkgZm9vdHByaW50OiAlbHUgTUIiLCBmb290cHJpbnQudmFs
dWUoKSAvIE1CKTsKKyAgICBpZiAoZm9vdHByaW50LnZhbHVlKCkgPCB0aHJlc2hvbGRGb3JQb2xp
Y3koTWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljKSkgeworICAgICAgICBtX21lbW9yeVVzYWdlUG9s
aWN5ID0gcG9saWN5Rm9yRm9vdHByaW50KGZvb3RwcmludC52YWx1ZSgpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJQcmVzc3VyZSByZWR1Y2VkIGJlbG93IHBhbmljIHRo
cmVzaG9sZC4gTmV3IG1lbW9yeSB1c2FnZSBwb2xpY3k6ICVzIiwgdG9TdHJpbmcobV9tZW1vcnlV
c2FnZVBvbGljeSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUkVMRUFTRV9MT0co
TWVtb3J5UHJlc3N1cmUsICJDcmFzaGluZyBkdWUgdG8gZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSAr
IGluYWJpbGl0eSB0byBmcmVlIHVwIG1lbW9yeSBiZWxvdyBwYW5pYyBsaW1pdC4iKTsKKyAgICBp
ZiAobV9leGl0VGltZUNhbGxiYWNrKQorICAgICAgICBtX2V4aXRUaW1lQ2FsbGJhY2soKTsKKyAg
ICBkaWRFeGNlZWRNZW1vcnlMaW1pdEFuZEZhaWxlZFRvUmVjb3ZlcigpOworfQorCiB2b2lkIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6YmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpCiB7CiAg
ICAgbV9pc1NpbXVsYXRpbmdNZW1vcnlQcmVzc3VyZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4IDYwMWE0MWVkYWU4Li5j
MDRiNThmNjA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmgKQEAgLTM0LDE2ICszNCwxNiBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNs
dWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0j
ZWxpZiBPUyhMSU5VWCkKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2VuZGlmCisKICNpZiBV
U0UoR0xJQikKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKLSNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDYgKzU1LDEzIEBAIGVudW0gTWVtb3J5UHJl
c3N1cmVSZWFzb24gewogfTsKICNlbmRpZgogCitlbnVtIGNsYXNzIE1lbW9yeVVzYWdlUG9saWN5
IHsKKyAgICBVbnJlc3RyaWN0ZWQsIC8vIEFsbG9jYXRlIGFzIG11Y2ggYXMgeW91IHdhbnQKKyAg
ICBDb25zZXJ2YXRpdmUsIC8vIE1heWJlIHlvdSBkb24ndCBjYWNoZSBldmVyeSBzaW5nbGUgdGhp
bmcKKyAgICBTdHJpY3QsIC8vIFRpbWUgdG8gc3RhcnQgcGluY2hpbmcgcGVubmllcyBmb3IgcmVh
bAorICAgIFBhbmljLCAvLyBPSCBHT0QgV0UnUkUgU0lOS0lORywgVEhST1cgRVZFUllUSElORyBP
VkVSQk9BUkQKK307CisKIGVudW0gY2xhc3MgQ3JpdGljYWwgeyBObywgWWVzIH07CiBlbnVtIGNs
YXNzIFN5bmNocm9ub3VzIHsgTm8sIFllcyB9OwogCkBAIC02OCwxMiArNzUsMTYgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnN0YWxsKCk7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sKTsKKworICAg
IHZvaWQgc2V0RXhpdFRpbWVDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24p
IHsgbV9leGl0VGltZUNhbGxiYWNrID0gV1RGTW92ZShmdW5jdGlvbik7IH0KKwogICAgIHZvaWQg
c2V0TG93TWVtb3J5SGFuZGxlcihMb3dNZW1vcnlIYW5kbGVyJiYgaGFuZGxlcikKICAgICB7CiAg
ICAgICAgIG1fbG93TWVtb3J5SGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7CiAgICAgfQogCi0g
ICAgYm9vbCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdCB7IHJldHVybiBtX3VuZGVyTWVt
b3J5UHJlc3N1cmUgfHwgbV9pc1NpbXVsYXRpbmdNZW1vcnlQcmVzc3VyZTsgfQorICAgIGJvb2wg
aXNVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QgeyByZXR1cm4gbV91bmRlck1lbW9yeVByZXNz
dXJlIHx8IG1faXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUgfHwgbWVtb3J5VXNhZ2VQb2xpY3ko
KSA+PSBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0OyB9CiAgICAgdm9pZCBzZXRVbmRlck1lbW9y
eVByZXNzdXJlKGJvb2wgYikgeyBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgPSBiOyB9CiAKICNpZiBQ
TEFURk9STShJT1MpCkBAIC0xMzgsNiArMTQ5LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZW5kU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKIAorICAgIE1lbW9yeVVzYWdl
UG9saWN5IG1lbW9yeVVzYWdlUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2FnZVBv
bGljeTsgfSAKKwogcHJpdmF0ZToKICAgICB2b2lkIHVuaW5zdGFsbCgpOwogCkBAIC0xNDksNiAr
MTYyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbmRUb01lbW9yeVByZXNzdXJlKENyaXRp
Y2FsLCBTeW5jaHJvbm91cyA9IFN5bmNocm9ub3VzOjpObyk7CiAgICAgdm9pZCBwbGF0Zm9ybVJl
bGVhc2VNZW1vcnkoQ3JpdGljYWwpOwogCisgICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lk
IGRpZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFpbGVkVG9SZWNvdmVyKCk7CisgICAgdm9pZCBtZWFz
dXJlbWVudFRpbWVyRmlyZWQoKTsKKwogI2lmIE9TKExJTlVYKQogICAgIGNsYXNzIEV2ZW50RkRQ
b2xsZXIgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudEZEUG9sbGVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNzAsMTIgKzE4NiwxNSBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICAgICBib29sIG1faW5zdGFsbGVkIHsgZmFsc2UgfTsKLSAgICB0aW1lX3QgbV9sYXN0
UmVzcG9uZFRpbWUgeyAwIH07CiAgICAgTG93TWVtb3J5SGFuZGxlciBtX2xvd01lbW9yeUhhbmRs
ZXI7CiAKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX3VuZGVyTWVtb3J5UHJlc3N1cmU7CiAgICAg
Ym9vbCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlIHsgZmFsc2UgfTsKIAorICAgIFJ1bkxv
b3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4gbV9tZWFzdXJlbWVudFRpbWVyOworICAg
IE1lbW9yeVVzYWdlUG9saWN5IG1fbWVtb3J5VXNhZ2VQb2xpY3kgeyBNZW1vcnlVc2FnZVBvbGlj
eTo6VW5yZXN0cmljdGVkIH07CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZXhpdFRpbWVD
YWxsYmFjazsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogQ2FuIHdlIHNoYXJl
IG1vcmUgb2YgdGhpcyB3aXRoIE9wZW5Tb3VyY2U/CiAgICAgdWludDMyX3QgbV9tZW1vcnlQcmVz
c3VyZVJlYXNvbiB7IE1lbW9yeVByZXNzdXJlUmVhc29uTm9uZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMw
ODNjMzc4MmQ0Li41NDZlNTk3ZjNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3
LTAxLTMxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFj
XSBJbi1wcm9jZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25pdG9yIGZvciBXZWJDb250ZW50IHByb2Nl
c3Nlcy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NzQ5MT4KKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMwMTE2MDcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuYWJsZSB0aGUgaW4tcHJvY2VzcyBtZW1vcnkgbW9uaXRvciBmb3Ig
V2ViQ29udGVudCBwcm9jZXNzZXMgb24gbWFjT1MgMTAuMTIrCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFs
aXplV2ViUHJvY2Vzcyk6CisKIDIwMTctMDEtMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtUaHJlYWRlZCBDb21wb3NpdG9yXSBDcmFzaCBv
biBXZWJDb3JlOjpHTENvbnRleHQ6OnZlcnNpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggZDYzMmVjNzM3MDAuLjFmODc3N2IyNDY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI2MSw2ICsyNjEsMTIgQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldExv
d01lbW9yeUhhbmRsZXIoW10gKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJv
bm91cykgewogICAgICAgICAgICAgV2ViQ29yZTo6cmVsZWFzZU1lbW9yeShjcml0aWNhbCwgc3lu
Y2hyb25vdXMpOwogICAgICAgICB9KTsKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEyMDAKKyAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5k
bGVyLnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcih0cnVlKTsKKyAgICAgICAgbWVt
b3J5UHJlc3N1cmVIYW5kbGVyLnNldEV4aXRUaW1lQ2FsbGJhY2soW10gKCkgeworICAgICAgICAg
ICAgV2ViQ29yZTo6bG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVhdGgoKTsKKyAgICAgICAg
fSk7CisjZW5kaWYKICAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLmluc3RhbGwoKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWxlYWtzIGIvVG9vbHMvU2NyaXB0
cy9ydW4tbGVha3MKaW5kZXggYjg2ZjgxNGJlOWQuLjczNTA5MGNkMGE4IDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3J1bi1sZWFrcworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1sZWFrcwpAQCAt
MTA4LDcgKzEwOCw4IEBAIHN1YiBydW5MZWFrcygkKQogewogICAgIG15ICgkcGlkT3JFeGVjdXRh
YmxlTmFtZSkgPSBAXzsKICAgICAKLSAgICBteSBAbGVha3NPdXRwdXQgPSBgbGVha3MgJHBpZE9y
RXhlY3V0YWJsZU5hbWVgOworICAgIG15ICR0ID0gdGltZTsKKyAgICBteSBAbGVha3NPdXRwdXQg
PSBgbGVha3MgLS1vdXRwdXRHcmFwaD0vdG1wL3RhcHUtJHQubWVtZ3JhcGggJHBpZE9yRXhlY3V0
YWJsZU5hbWVgOwogICAgIGlmICghQGxlYWtzT3V0cHV0KSB7CiAgICAgICAgIHJlcG9ydEVycm9y
KCJFcnJvciBydW5uaW5nIGxlYWtzIHRvb2wuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTEzNCw3
ICsxMzUsNyBAQCBzdWIgcGFyc2VMZWFrc091dHB1dChcQCkKIAogICAgICMgU2tpcCBoZWFkZXIg
c2VjdGlvbiB1bnRpbCB0aGUgZmlyc3QgdHdvICJQcm9jZXNzICIgbGluZXMuCiAgICAgIyBGSVhN
RTogSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgd2lzaCB0byBwcm9wYWdhdGUgdGhlIGhlYWRlciBzZWN0
aW9uIHRocm91Z2ggdG8gb3VyIG91dHB1dC4KLSAgICB1bnRpbCAoJGxlYWtzT3V0cHV0LT5bMF0g
PX4gL15Qcm9jZXNzIC8pIHsKKyAgICB1bnRpbCAoJGxlYWtzT3V0cHV0LT5bMF0gPX4gL15PdXRw
dXQgLykgewogICAgICAgICBzaGlmdCBAJGxlYWtzT3V0cHV0OwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300178</attachid>
            <date>2017-01-30 18:29:07 -0800</date>
            <delta_ts>2017-01-30 21:26:31 -0800</delta_ts>
            <desc>Basically a patch that also builds</desc>
            <filename>bug-167491-3.diff</filename>
            <type>text/plain</type>
            <size>31112</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRiOGQ4ZThhMWQwLi5kZTIwYjA1NGFlMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDEtMzEgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEluLXByb2Nlc3Mg
bWVtb3J5IHByZXNzdXJlIG1vbml0b3IgZm9yIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgorICAgICAg
ICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY3NDkxPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzAxMTYwNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBzbG9wcHkgIm1heCBsaXZlIGhlYXAgc2l6ZSIgbWVjaGFuaXNtIGZyb20g
SlNDIGluIGZhdm9yIG9mIHRoZSBuZXcKKyAgICAgICAgV2ViQ29yZS1zaWRlIG1lbW9yeSBmb290
cHJpbnQgbW9uaXRvci4KKworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6
OkhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpkaWRF
eGNlZWRNYXhMaXZlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldE1heExpdmVTaXplKTogRGVsZXRlZC4KKwogMjAxNy0wMS0yOCAg
TWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogTmVlZCBzb21lIGxpbWl0IG9uIEFzeW5jIENhbGwgU3RhY2tzIGZvciBhc3luYyBsb29wcyAo
ckFGIGxvb3BzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCBiYzliNmQzMmEy
Yi4uMGMwMjBiMzZjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0xNzA1
LDExICsxNzA1LDYgQEAgdm9pZCBIZWFwOjpub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKQogICAg
IG1fc3dlZXBlci0+c3RhcnRTd2VlcGluZygpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBIZWFw
OjpkaWRFeGNlZWRNYXhMaXZlU2l6ZSgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQogdm9pZCBIZWFw
Ojp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7CkBAIC0xNzQxLDkgKzE3MzYsNiBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9j
YXRpb25MaW1pdHMoKQogCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coImV4dHJh
TWVtb3J5U2l6ZSgpID0gIiwgZXh0cmFNZW1vcnlTaXplKCksICIsIGN1cnJlbnRIZWFwU2l6ZSA9
ICIsIGN1cnJlbnRIZWFwU2l6ZSwgIlxuIik7Ci0KLSAgICBpZiAobV9tYXhMaXZlU2l6ZSAmJiBj
dXJyZW50SGVhcFNpemUgPiBtX21heExpdmVTaXplKQotICAgICAgICBkaWRFeGNlZWRNYXhMaXZl
U2l6ZSgpOwogICAgIAogICAgIGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkgJiYgY3VycmVu
dEhlYXBTaXplID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQogICAgICAgICBIZWFwU3RhdGlz
dGljczo6ZXhpdFdpdGhGYWlsdXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXgg
MmE2MjFiNmNhNDYuLjkxZTQ4YWU5ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBA
IC0xMzIsOSArMTMyLDYgQEAgcHVibGljOgogCiAgICAgVk0qIHZtKCkgY29uc3Q7CiAKLSAgICAv
LyBTZXQgYSBoYXJkIGxpbWl0IHdoZXJlIEpTQyB3aWxsIGNyYXNoIGlmIGxpdmUgaGVhcCBzaXpl
IGV4Y2VlZHMgaXQuCi0gICAgdm9pZCBzZXRNYXhMaXZlU2l6ZShzaXplX3Qgc2l6ZSkgeyBtX21h
eExpdmVTaXplID0gc2l6ZTsgfQotCiAgICAgTWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyBy
ZXR1cm4gbV9vYmplY3RTcGFjZTsgfQogICAgIE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFk
cygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVhZHM7IH0KIApAQCAtNjAxLDkgKzU5OCw2IEBAIHBy
aXZhdGU6CiAgICAgc2l6ZV90IG1fYmxvY2tCeXRlc0FsbG9jYXRlZCB7IDAgfTsKICAgICBzaXpl
X3QgbV9leHRlcm5hbE1lbW9yeVNpemUgeyAwIH07CiAjZW5kaWYKLQotICAgIE5PX1JFVFVSTl9E
VUVfVE9fQ1JBU0ggdm9pZCBkaWRFeGNlZWRNYXhMaXZlU2l6ZSgpOwotICAgIHNpemVfdCBtX21h
eExpdmVTaXplIHsgMCB9OwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdG9yU2NoZWR1
bGVyPiBtX3NjaGVkdWxlcjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMTIwMGFkYmYzMWUuLjUwMGZhOWVkZjI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTAxLTMxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KKworICAgICAgICBbTWFjXSBJbi1wcm9jZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25p
dG9yIGZvciBXZWJDb250ZW50IHByb2Nlc3Nlcy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE2NzQ5MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMTE2MDcyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFdURiBoZWxwZXIg
ZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIGN1cnJlbnQgcHJvY2VzcydzIG1lbW9yeSBmb290cHJp
bnQuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL01lbW9yeUZvb3RwcmludC5jcHA6
CisgICAgICAgIChXVEY6Om1lbW9yeUZvb3RwcmludCk6CisgICAgICAgICogd3RmL01lbW9yeUZv
b3RwcmludC5oOgorCiAyMDE3LTAxLTI4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIENoZWNrIFVTRShBUFBMRV9JTlRFUk5BTF9TREspIGluc3RlYWQg
b2Ygc3BlY2lmaWMgaGVhZGVycyB3aGVuIGltcG9ydGluZyBmcm9tIFdlYktpdEFkZGl0aW9ucwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmRkODcwMTczOWUu
LmU0MmUwYTVlOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTMzNyw2ICszMzcsOCBAQAogCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhy
ZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLzsgfTsKIAkJQThB
NDc0OEMxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZp
Zy5oICovOyB9OwogCQlBRDdDNDM0QjFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEN0M0MzRBMUREMkE0
QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovOyB9OworCQlBREYyQ0U2NjFFMzlGMTA2MDA2ODg5
REIgLyogTWVtb3J5Rm9vdHByaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQURG
MkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2NTFFMzlGMTA2MDA2ODg5
REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCAqLzsgfTsKIAkJQjM4RkQ3QkQxNjg5NTNFODAwNjVD
OTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMu
aCAqLzsgfTsKIAkJQzRGOEE5MzcxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGOEE5MzYxOUM2NUVC
NDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovOyB9OwogCQlDOEIwRTFBMUUwMUE0ODZFQjk1RTBE
MTEgLyogSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMzdFMUQ3REJEODRBQzM4RkFFNEQzNCAvKiBJbmRleFNldC5oICovOyB9OwpAQCAt
NzE5LDYgKzcyMSw4IEBACiAJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWRE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVhZERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8q
IGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4
cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cGVjdGVkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBN
ZW1vcnlGb290cHJpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5
Rm9vdHByaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERjJDRTY1MUUzOUYx
MDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0
Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcHdhdGNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRp
YVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUaW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDUsNiArMTAwOSw4IEBACiAJ
CQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4
NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMw
MEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywKKwkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIg
LyogTWVtb3J5Rm9vdHByaW50LmggKi8sCisJCQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8q
IE1lbW9yeUZvb3RwcmludC5jcHAgKi8sCiAJCQkJQThBNDcyQ0MxNTFBODI1QjAwNDEyM0ZGIC8q
IE1lc3NhZ2VRdWV1ZS5oICovLAogCQkJCUE4QTQ3MkNEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRh
QWxsb2NhdG9yLmNwcCAqLywKIAkJCQlBOEE0NzJDRTE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFs
bG9jYXRvci5oICovLApAQCAtMTQ5NCw2ICsxNTAwLDcgQEAKIAkJCQlBOEE0NzQxQzE1MUE4MjVC
MDA0MTIzRkYgLyogUmVmUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQxRTE1MUE4MjVC
MDA0MTIzRkYgLyogUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQ0RFRDBGNDE4MTE1
Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQURGMkNFNjYxRTM5
RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ2
OTQxOTIxNkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUwOThCMDAxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0RjNCMEY3MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmgg
aW4gSGVhZGVycyAqLywKQEAgLTE3MDEsNiArMTcwOCw3IEBACiAJCQkJMUFDQUREODQxODg0NDgw
MTAwRDhCNzFEIC8qIERlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDczQUUxNTFBODI1QjAwNDEyM0ZGIC8qIGRpeS1mcC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5j
YyBpbiBTb3VyY2VzICovLAorCQkJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlG
b290cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQkExNTFBODI1QjAwNDEyM0ZG
IC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjMxNTFBODI1QjAwNDEyM0ZG
IC8qIGZhc3QtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0
RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAppbmRleCA1OGMxMTZiZGQxMS4uODFhZjkxMjc2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBA
IC02NCw2ICs2NCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIE1hbGxvY1B0ci5oCiAgICAgTWF0
aEV4dHJhcy5oCiAgICAgTWVkaWFUaW1lLmgKKyAgICBNZW1vcnlGb290cHJpbnQuaAogICAgIE1l
c3NhZ2VRdWV1ZS5oCiAgICAgTWV0YUFsbG9jYXRvci5oCiAgICAgTWV0YUFsbG9jYXRvckhhbmRs
ZS5oCkBAIC0yMDQsNiArMjA1LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgTUQ1LmNwcAogICAg
IE1haW5UaHJlYWQuY3BwCiAgICAgTWVkaWFUaW1lLmNwcAorICAgIE1lbW9yeUZvb3RwcmludC5j
cHAKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE1vbm90b25pY1RpbWUuY3BwCiAgICAgTnVt
YmVyT2ZDb3Jlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3Rwcmlu
dC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kY2MwZGU2MTFiMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorI2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlG
b290cHJpbnQoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHRhc2tfdm1faW5mb19kYXRh
X3Qgdm1JbmZvOworICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgY291bnQgPSBUQVNLX1ZNX0lO
Rk9fQ09VTlQ7CisgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNrX2luZm8obWFjaF90YXNr
X3NlbGYoKSwgVEFTS19WTV9JTkZPLCAodGFza19pbmZvX3QpICZ2bUluZm8sICZjb3VudCk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4odm1JbmZvLnBoeXNfZm9vdHByaW50
KTsKKyNlbHNlCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNlbmRpZgorfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuaCBiL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeUZvb3RwcmludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43YjhlY2E4ZTk3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZv
b3RwcmludC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0VYUE9S
VF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlGb290cHJpbnQoKTsKKworfQor
Cit1c2luZyBXVEY6Om1lbW9yeUZvb3RwcmludDsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU4Mzk5ZWIzYTc1
Li5hYWFhM2VkMzIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE3LTAxLTMxICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBJbi1wcm9j
ZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25pdG9yIGZvciBXZWJDb250ZW50IHByb2Nlc3Nlcy4KKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NzQ5MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMwMTE2MDcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyB0aW1lci1iYXNlZCBtZW1vcnkgcHJlc3N1cmUgbW9uaXRvciB0aGF0
IGNoZWNrcyB0aGUgcHJvY2VzcyBtZW1vcnkKKyAgICAgICAgZm9vdHByaW50IGV2ZXJ5IDMwIHNl
Y29uZHMgYW5kIHJlYWN0cyB0byBjaGFuZ2VzIGJ5IHNldHRpbmcgYSBNZW1vcnlVc2FnZVBvbGlj
eS4KKworICAgICAgICBUaGVyZSBhcmUgZm91ciBNZW1vcnlVc2FnZVBvbGljeSB2YWx1ZXM6CisK
KyAgICAgICAgICAgIC0gVW5yZXN0cmljdGVkIChiZWxvdyAxR0IpCisgICAgICAgICAgICAtIENv
bnNlcnZhdGl2ZSAoYWJvdmUgMUdCKQorICAgICAgICAgICAgLSBTdHJpY3QgKGFib3ZlIDJHQikK
KyAgICAgICAgICAgIC0gUGFuaWMgKGFib3ZlIDRHQiwgb3IgM0dCIGlmIDMyLWJpdCkKKworICAg
ICAgICBUcmFuc2l0aW9uaW5nIHRvIGEgaGlnaGVyIHBvbGljeSB3aWxsIGNhdXNlIG1lbW9yeSBw
cmVzc3VyZSBoYW5kbGVycyB0byBydW46CisKKyAgICAgICAgQXQgU3RyaWN0LCB3ZSBydW4gdGhl
ICJub24tY3JpdGljYWwiIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyLCB0aGVuIGNhcnJ5IG9uLgor
CisgICAgICAgIEF0IFBhbmljLCB3ZSBydW4gdGhlICJjcml0aWNhbCIgbWVtb3J5IHByZXNzdXJl
IGhhbmRsZXIgc3luY2hyb25vc2x5LCBhbmQgdGhlbgorICAgICAgICBpbW1lZGlhdGVseSByZS1t
ZWFzdXJlIHRoZSBmb290cHJpbnQuIElmIHRoZSBwcmVzc3VyZSBoYW5kbGVyIGZhaWxlZCB0byBi
cmluZworICAgICAgICB1cyBiZWxvdyB0aGUgNEdCIHRocmVzaG9sZCwgd2Uga2lsbCB0aGUgcHJv
Y2Vzcy4KKworICAgICAgICBCZWZvcmUga2lsbGluZyB0aGUgcHJvY2VzcywgYW4gaW5zdGFsbGFi
bGUgZXhpdC10aW1lIGNhbGxiYWNrIHdpbGwgcnVuLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28g
aW5zdGFsbHMgc3VjaCBhIGNhbGxiYWNrIHRoYXQgcHJpbnRzIG91dCBzb21lIHRpbWUtb2YtZGVh
dGgKKyAgICAgICAgc3RhdGlzdGljcyBhYm91dCBDKysgYW5kIEphdmFTY3JpcHQgbWVtb3J5IHVz
YWdlIHRvIGhvcGVmdWxseSBoZWxwIHVuZGVyc3RhbmQKKyAgICAgICAgd2hhdCB3YXMgc29ha2lu
ZyB1cCBhbGwgdGhlIG1lbW9yeS4KKworICAgICAgICBUaGUgY3VycmVudCBNZW1vcnlVc2FnZVBv
bGljeSBjYW4gYmUgcmV0cmlldmVkIGxpa2Ugc286CisKKyAgICAgICAgICAgIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2luZ2xldG9uKCkubWVtb3J5VXNhZ2VQb2xpY3koKQorCisgICAgICAgIEZv
ciBTdHJpY3QgYW5kIGFib3ZlLCB0aGUgb2xkLXN0eWxlICJpc1VuZGVyTWVtb3J5UHJlc3N1cmUo
KSIgd2lsbCBhbHNvIHJldHVybiB0cnVlLgorCisgICAgICAgICogYmluZGluZ3MvanMvQ29tbW9u
Vk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tbW9uVk1TbG93KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjps
aXZlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6ZGVhZFNpemUpOgorICAg
ICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6bG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVhdGgp
OgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjp0aHJlc2hvbGRG
b3JQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6cG9saWN5Rm9yRm9vdHByaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6ZGlkRXhjZWVkTWVtb3J5TGltaXRB
bmRGYWlsZWRUb1JlY292ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpzZXRFeGl0VGltZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6aXNVbmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6bWVtb3J5VXNhZ2VQb2xpY3kpOgorCiAyMDE3LTAxLTMwICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBTZXZlcmFs
IHdlYiB0aW1pbmcgdGVzdHMgY3Jhc2ggaW4gR1RLKyBhbmQgQXBwbGVXaW4gYm90cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCmluZGV4IGIxYjA2YWEwNzQwLi4wZDVhNGE2
MDZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcApAQCAtNDYsMTAg
KzQ2LDYgQEAgVk0mIGNvbW1vblZNU2xvdygpCiAgICAgCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6
aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIGdfY29tbW9uVk1Pck51bGwgPSAmVk06OmNyZWF0
ZUxlYWtlZChMYXJnZUhlYXApLmxlYWtSZWYoKTsKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhHQ0hlYXBTaXplID0gNCAqIEdCOwotICAg
IGdfY29tbW9uVk1Pck51bGwtPmhlYXAuc2V0TWF4TGl2ZVNpemUobWF4R0NIZWFwU2l6ZSk7Ci0j
ZW5kaWYKICAgICBnX2NvbW1vblZNT3JOdWxsLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gQXQg
YW55IHRpbWUsIHdlIG1heSBkbyB0aGluZ3MgdGhhdCBhZmZlY3QgdGhlIEdDLgogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgZ19jb21tb25WTU9yTnVsbC0+c2V0RXhjbHVzaXZlVGhyZWFkKHN0ZDo6
dGhpc190aHJlYWQ6OmdldF9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmgKaW5kZXggMTgzNmMyYmYxMDAuLjRkNTczOGNhYjAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtMTI0LDYgKzEyNCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBydW5lKCk7CiAgICAgdm9pZCBwcnVuZVNvb24oKTsKICAgICB1bnNpZ25lZCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9saXZlU2l6ZSArIG1fZGVhZFNpemU7IH0KKyAgICB1bnNp
Z25lZCBsaXZlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZVNpemU7IH0KKyAgICB1bnNpZ25l
ZCBkZWFkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVhZFNpemU7IH0KIAogICAgIHZvaWQgc2V0
RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
IGludGVydmFsKSB7IG1fZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IGludGVydmFs
OyB9CiAgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkZWFkRGVjb2RlZERhdGFEZWxldGlv
bkludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9kZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVy
dmFsOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCBkNjQ0NDRjZjBk
YS4uOThmZjIwMzBmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAt
MjksMTIgKzI5LDE0IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiQ2hy
b21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uVk0uaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUg
IkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbmxpbmVTdHlsZVNoZWV0T3duZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCkBAIC00NSw2ICs0Nywx
MCBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJSZXNvdXJjZVVzYWdlVGhyZWFk
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCByZWxlYXNl
Tm9uY3JpdGljYWxNZW1vcnkoKQpAQCAtMTI4LDYgKzEzNCw1NiBAQCB2b2lkIHJlbGVhc2VNZW1v
cnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKQogI2VuZGlmCiB9
CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK3N0YXRpYyB1bnNpZ25lZCBwYWdlQ291bnQo
KQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICBQYWdlOjpmb3JFYWNoUGFnZShbJl0g
KFBhZ2UmIHBhZ2UpIHsKKyAgICAgICAgaWYgKCFwYWdlLmlzVXRpbGl0eVBhZ2UoKSkKKyAgICAg
ICAgICAgICsrY291bnQ7CisgICAgfSk7CisgICAgcmV0dXJuIGNvdW50OworfQorI2VuZGlmCisK
K3ZvaWQgbG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVhdGgoKQoreworI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gcGFnZVNpemUgPSB2
bVBhZ2VTaXplKCk7CisgICAgYXV0byBwYWdlcyA9IHBhZ2VzUGVyVk1UYWcoKTsKKworICAgIFJF
TEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiRGlydHkgbWVtb3J5IHBlciBWTSB0YWcgYXQgdGlt
ZSBvZiBkZWF0aDoiKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyArK2kpIHsK
KyAgICAgICAgc2l6ZV90IGRpcnR5ID0gcGFnZXNbaV0uZGlydHkgKiBwYWdlU2l6ZTsKKyAgICAg
ICAgaWYgKCFkaXJ0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBTdHJpbmcgdGFn
TmFtZSA9IGRpc3BsYXlOYW1lRm9yVk1UYWcoaSk7CisgICAgICAgIGlmICghdGFnTmFtZSkKKyAg
ICAgICAgICAgIHRhZ05hbWUgPSBTdHJpbmc6OmZvcm1hdCgiVGFnICV1IiwgaSk7CisgICAgICAg
IFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiJTE2czogJWx1IE1CIiwgdGFnTmFtZS5sYXRp
bjEoKS5kYXRhKCksIGRpcnR5IC8gTUIpOworICAgIH0KKyNlbmRpZgorCisgICAgYXV0byYgdm0g
PSBjb21tb25WTSgpOworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTWVtb3J5IHVz
YWdlIHN0YXRpc3RpY3MgYXQgdGltZSBvZiBkZWF0aDoiKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1v
cnlQcmVzc3VyZSwgIkdDIGhlYXAgc2l6ZTogJXp1Iiwgdm0uaGVhcC5zaXplKCkpOworICAgIFJF
TEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiR0MgaGVhcCBleHRyYSBtZW1vcnkgc2l6ZTogJXp1
Iiwgdm0uaGVhcC5leHRyYU1lbW9yeVNpemUoKSk7CisjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdF
KQorICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiR0MgaGVhcCBleHRlcm5hbCBtZW1v
cnk6ICV6dSIsIHZtLmhlYXAuZXh0ZXJuYWxNZW1vcnlTaXplKCkpOworI2VuZGlmCisgICAgUkVM
RUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJHbG9iYWwgb2JqZWN0IGNvdW50OiAlenUiLCB2bS5o
ZWFwLmdsb2JhbE9iamVjdENvdW50KCkpOworCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1
cmUsICJQYWdlIGNvdW50OiAldSIsIHBhZ2VDb3VudCgpKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1v
cnlQcmVzc3VyZSwgIkRvY3VtZW50IGNvdW50OiAldSIsIERvY3VtZW50OjphbGxEb2N1bWVudHMo
KS5zaXplKCkpOworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTWVtb3J5Q2FjaGUg
bGl2ZSBzaXplOiAlbHUgTUIiLCBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkubGl2ZVNpemUoKSAv
IE1CKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeUNhY2hlIGRlYWQg
c2l6ZTogJWx1IE1CIiwgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmRlYWRTaXplKCkgLyBNQik7
CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJMaXZlIEphdmFTY3JpcHQgb2JqZWN0
czoiKTsKKyAgICBmb3IgKGF1dG8mIGl0IDogKnZtLmhlYXAub2JqZWN0VHlwZUNvdW50cygpKQor
ICAgICAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIiAgJXM6ICVkIiwgaXQua2V5LCBp
dC52YWx1ZSk7CisjZW5kaWYKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgcGxhdGZv
cm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKSB7IH0KIHZvaWQgamV0dGlzb25FeHBlbnNpdmVPYmpl
Y3RzT25Ub3BMZXZlbE5hdmlnYXRpb24oKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVtb3J5UmVsZWFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNl
LmgKaW5kZXggMWQ5OTM3MmNhZjIuLjk0NDA4YWUxMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lbW9yeVJlbGVhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9y
eVJlbGVhc2UuaApAQCAtMzMsNSArMzMsNiBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbGVhc2VN
ZW1vcnkoQ3JpdGljYWwsIFN5bmNocm9ub3VzKTsKIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5
KENyaXRpY2FsKTsKIHZvaWQgamV0dGlzb25FeHBlbnNpdmVPYmplY3RzT25Ub3BMZXZlbE5hdmln
YXRpb24oKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJNZW1vcnlSZWxlYXNlTm90aWZ5
Q2FsbGJhY2tzKCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGxvZ01lbW9yeVN0YXRpc3RpY3NBdFRp
bWVPZkRlYXRoKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmgKaW5kZXggZDk3MWY1ZWE4MzkuLjE4YTFlNjc1NDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaApAQCAtODAsNiArODAs
NyBAQCBzdHJ1Y3QgVGFnSW5mbyB7CiB9OwogCiBjb25zdCBjaGFyKiBkaXNwbGF5TmFtZUZvclZN
VGFnKHVuc2lnbmVkKTsKK3NpemVfdCB2bVBhZ2VTaXplKCk7CiBzdGQ6OmFycmF5PFRhZ0luZm8s
IDI1Nj4gcGFnZXNQZXJWTVRhZygpOwogdm9pZCBsb2dGb290cHJpbnRDb21wYXJpc29uKGNvbnN0
IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiYsIGNvbnN0IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2
PiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291
cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZVRocmVhZENvY29hLm1tCmluZGV4IDY5MTM2YWRmNGY3Li4wNjRhNjFhY2NlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFk
Q29jb2EubW0KQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgc2l6ZV90IHZtUGFnZVNpemUoKQorc2l6ZV90IHZtUGFnZVNpemUoKQogewogI2lmIFBMQVRG
T1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwCiAg
ICAgcmV0dXJuIHZtX2tlcm5lbF9wYWdlX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCBiOWFjMGU1OTAwZC4uZjZkMjFm
NWQxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJl
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUZv
b3RwcmludC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwxMjAgQEAg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigp
CiB9CiAKIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkKKyAg
ICA6IG1fbWVhc3VyZW1lbnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCkKICNpZiBPUyhMSU5VWCkKLSAgICA6
IG1faG9sZE9mZlRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpCisgICAgLCBtX2hvbGRPZmZUaW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZUaW1lckZpcmVkKQog
I2VuZGlmCiB7CiB9CiAKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQ
ZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCB1c2UpCit7CisgICAgaWYgKHVzZSkKKyAgICAgICAg
bV9tZWFzdXJlbWVudFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDMwKTsKKyAgICBlbHNlCisgICAgICAg
IG1fbWVhc3VyZW1lbnRUaW1lci5zdG9wKCk7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKK3N0YXRpYyBjb25zdCBjaGFyKiB0b1N0cmluZyhNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kp
Cit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpV
bnJlc3RyaWN0ZWQ6IHJldHVybiAiVW5yZXN0cmljdGVkIjsKKyAgICBjYXNlIE1lbW9yeVVzYWdl
UG9saWN5OjpDb25zZXJ2YXRpdmU6IHJldHVybiAiQ29uc2VydmF0aXZlIjsKKyAgICBjYXNlIE1l
bW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q6IHJldHVybiAiU3RyaWN0IjsKKyAgICBjYXNlIE1lbW9y
eVVzYWdlUG9saWN5OjpQYW5pYzogcmV0dXJuICJQYW5pYyI7CisgICAgfQorfQorI2VuZGlmCisK
K3N0YXRpYyBzaXplX3QgdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5IHBvbGlj
eSkKK3sKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6
OkNvbnNlcnZhdGl2ZToKKyAgICAgICAgcmV0dXJuIDEgKiBHQjsKKyAgICBjYXNlIE1lbW9yeVVz
YWdlUG9saWN5OjpTdHJpY3Q6CisgICAgICAgIHJldHVybiAyICogR0I7CisgICAgY2FzZSBNZW1v
cnlVc2FnZVBvbGljeTo6UGFuaWM6CisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorICAg
ICAgICByZXR1cm4gNCAqIEdCOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIDMgKiBHQjsKKyNlbmRp
ZgorICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZDoKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorfQorCitzdGF0aWMgTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVf
dCBmb290cHJpbnQpCit7CisgICAgaWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3ko
TWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljKSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9s
aWN5OjpQYW5pYzsKKyAgICBpZiAoZm9vdHByaW50ID49IHRocmVzaG9sZEZvclBvbGljeShNZW1v
cnlVc2FnZVBvbGljeTo6U3RyaWN0KSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5
OjpTdHJpY3Q7CisgICAgaWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5
VXNhZ2VQb2xpY3k6OkNvbnNlcnZhdGl2ZSkpCisgICAgICAgIHJldHVybiBNZW1vcnlVc2FnZVBv
bGljeTo6Q29uc2VydmF0aXZlOworICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0
cmljdGVkOworfQorCitORVZFUl9JTkxJTkUgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmRp
ZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFpbGVkVG9SZWNvdmVyKCkKK3sKKyAgICBDUkFTSCgpOwor
fQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKCkK
K3sKKyAgICBhdXRvIGZvb3RwcmludCA9IG1lbW9yeUZvb3RwcmludCgpOworICAgIGlmICghZm9v
dHByaW50KQorICAgICAgICByZXR1cm47CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUs
ICJDdXJyZW50IG1lbW9yeSBmb290cHJpbnQ6ICVsdSBNQiIsIGZvb3RwcmludC52YWx1ZSgpIC8g
TUIpOworCisgICAgYXV0byBuZXdQb2xpY3kgPSBwb2xpY3lGb3JGb290cHJpbnQoZm9vdHByaW50
LnZhbHVlKCkpOworICAgIGlmIChuZXdQb2xpY3kgPT0gbV9tZW1vcnlVc2FnZVBvbGljeSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJNZW1vcnkg
dXNhZ2UgcG9saWN5IGNoYW5nZWQ6ICVzIC0+ICVzIiwgdG9TdHJpbmcobV9tZW1vcnlVc2FnZVBv
bGljeSksIHRvU3RyaW5nKG5ld1BvbGljeSkpOworCisgICAgbV9tZW1vcnlVc2FnZVBvbGljeSA9
IG5ld1BvbGljeTsKKworICAgIGlmIChuZXdQb2xpY3kgPT0gTWVtb3J5VXNhZ2VQb2xpY3k6OlVu
cmVzdHJpY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG5ld1BvbGljeSA9PSBNZW1v
cnlVc2FnZVBvbGljeTo6Q29uc2VydmF0aXZlKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBwb2xpY3kgYnkgY2hvb3Npbmcgd2hpY2ggY2FjaGVzIHNob3VsZCByZXNwZWN0IGl0
LCBhbmQgaG9va2luZyB0aGVtIHVwLiAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChuZXdQb2xpY3kgPT0gTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdCkgeworICAgICAgICBSRUxF
QVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkF0dGVtcHRpbmcgdG8gcmVkdWNlIG1lbW9yeSBmb290
cHJpbnQgYnkgZnJlZWluZyBsZXNzIGltcG9ydGFudCBvYmplY3RzLiIpOworICAgICAgICByZWxl
YXNlTWVtb3J5KENyaXRpY2FsOjpObywgU3luY2hyb25vdXM6Ok5vKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKG5ld1BvbGljeSA9PSBNZW1vcnlVc2FnZVBv
bGljeTo6UGFuaWMpOworCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJBdHRlbXB0
aW5nIHRvIHJlZHVjZSBtZW1vcnkgZm9vdHByaW50IGJ5IGZyZWVpbmcgbW9yZSBpbXBvcnRhbnQg
b2JqZWN0cy4iKTsKKyAgICByZWxlYXNlTWVtb3J5KENyaXRpY2FsOjpZZXMsIFN5bmNocm9ub3Vz
OjpZZXMpOworCisgICAgLy8gUmVtZWFzdXJlIGZvb3RwcmludCB0byBzZWUgaG93IHdlbGwgdGhl
IHByZXNzdXJlIGhhbmRsZXIgZGlkLgorICAgIGZvb3RwcmludCA9IG1lbW9yeUZvb3RwcmludCgp
OworICAgIFJFTEVBU0VfQVNTRVJUKGZvb3RwcmludCk7CisKKyAgICBSRUxFQVNFX0xPRyhNZW1v
cnlQcmVzc3VyZSwgIk5ldyBtZW1vcnkgZm9vdHByaW50OiAlbHUgTUIiLCBmb290cHJpbnQudmFs
dWUoKSAvIE1CKTsKKyAgICBpZiAoZm9vdHByaW50LnZhbHVlKCkgPCB0aHJlc2hvbGRGb3JQb2xp
Y3koTWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljKSkgeworICAgICAgICBtX21lbW9yeVVzYWdlUG9s
aWN5ID0gcG9saWN5Rm9yRm9vdHByaW50KGZvb3RwcmludC52YWx1ZSgpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJQcmVzc3VyZSByZWR1Y2VkIGJlbG93IHBhbmljIHRo
cmVzaG9sZC4gTmV3IG1lbW9yeSB1c2FnZSBwb2xpY3k6ICVzIiwgdG9TdHJpbmcobV9tZW1vcnlV
c2FnZVBvbGljeSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUkVMRUFTRV9MT0co
TWVtb3J5UHJlc3N1cmUsICJDcmFzaGluZyBkdWUgdG8gZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSAr
IGluYWJpbGl0eSB0byBmcmVlIHVwIG1lbW9yeSBiZWxvdyBwYW5pYyBsaW1pdC4iKTsKKyAgICBp
ZiAobV9leGl0VGltZUNhbGxiYWNrKQorICAgICAgICBtX2V4aXRUaW1lQ2FsbGJhY2soKTsKKyAg
ICBkaWRFeGNlZWRNZW1vcnlMaW1pdEFuZEZhaWxlZFRvUmVjb3ZlcigpOworfQorCiB2b2lkIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6YmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpCiB7CiAg
ICAgbV9pc1NpbXVsYXRpbmdNZW1vcnlQcmVzc3VyZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4IDYwMWE0MWVkYWU4Li5j
MDRiNThmNjA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmgKQEAgLTM0LDE2ICszNCwxNiBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNs
dWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0j
ZWxpZiBPUyhMSU5VWCkKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2VuZGlmCisKICNpZiBV
U0UoR0xJQikKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKLSNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDYgKzU1LDEzIEBAIGVudW0gTWVtb3J5UHJl
c3N1cmVSZWFzb24gewogfTsKICNlbmRpZgogCitlbnVtIGNsYXNzIE1lbW9yeVVzYWdlUG9saWN5
IHsKKyAgICBVbnJlc3RyaWN0ZWQsIC8vIEFsbG9jYXRlIGFzIG11Y2ggYXMgeW91IHdhbnQKKyAg
ICBDb25zZXJ2YXRpdmUsIC8vIE1heWJlIHlvdSBkb24ndCBjYWNoZSBldmVyeSBzaW5nbGUgdGhp
bmcKKyAgICBTdHJpY3QsIC8vIFRpbWUgdG8gc3RhcnQgcGluY2hpbmcgcGVubmllcyBmb3IgcmVh
bAorICAgIFBhbmljLCAvLyBPSCBHT0QgV0UnUkUgU0lOS0lORywgVEhST1cgRVZFUllUSElORyBP
VkVSQk9BUkQKK307CisKIGVudW0gY2xhc3MgQ3JpdGljYWwgeyBObywgWWVzIH07CiBlbnVtIGNs
YXNzIFN5bmNocm9ub3VzIHsgTm8sIFllcyB9OwogCkBAIC02OCwxMiArNzUsMTYgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnN0YWxsKCk7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sKTsKKworICAg
IHZvaWQgc2V0RXhpdFRpbWVDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24p
IHsgbV9leGl0VGltZUNhbGxiYWNrID0gV1RGTW92ZShmdW5jdGlvbik7IH0KKwogICAgIHZvaWQg
c2V0TG93TWVtb3J5SGFuZGxlcihMb3dNZW1vcnlIYW5kbGVyJiYgaGFuZGxlcikKICAgICB7CiAg
ICAgICAgIG1fbG93TWVtb3J5SGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7CiAgICAgfQogCi0g
ICAgYm9vbCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdCB7IHJldHVybiBtX3VuZGVyTWVt
b3J5UHJlc3N1cmUgfHwgbV9pc1NpbXVsYXRpbmdNZW1vcnlQcmVzc3VyZTsgfQorICAgIGJvb2wg
aXNVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QgeyByZXR1cm4gbV91bmRlck1lbW9yeVByZXNz
dXJlIHx8IG1faXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUgfHwgbWVtb3J5VXNhZ2VQb2xpY3ko
KSA+PSBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0OyB9CiAgICAgdm9pZCBzZXRVbmRlck1lbW9y
eVByZXNzdXJlKGJvb2wgYikgeyBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgPSBiOyB9CiAKICNpZiBQ
TEFURk9STShJT1MpCkBAIC0xMzgsNiArMTQ5LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZW5kU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKIAorICAgIE1lbW9yeVVzYWdl
UG9saWN5IG1lbW9yeVVzYWdlUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2FnZVBv
bGljeTsgfSAKKwogcHJpdmF0ZToKICAgICB2b2lkIHVuaW5zdGFsbCgpOwogCkBAIC0xNDksNiAr
MTYyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbmRUb01lbW9yeVByZXNzdXJlKENyaXRp
Y2FsLCBTeW5jaHJvbm91cyA9IFN5bmNocm9ub3VzOjpObyk7CiAgICAgdm9pZCBwbGF0Zm9ybVJl
bGVhc2VNZW1vcnkoQ3JpdGljYWwpOwogCisgICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lk
IGRpZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFpbGVkVG9SZWNvdmVyKCk7CisgICAgdm9pZCBtZWFz
dXJlbWVudFRpbWVyRmlyZWQoKTsKKwogI2lmIE9TKExJTlVYKQogICAgIGNsYXNzIEV2ZW50RkRQ
b2xsZXIgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudEZEUG9sbGVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNzAsMTIgKzE4NiwxNSBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICAgICBib29sIG1faW5zdGFsbGVkIHsgZmFsc2UgfTsKLSAgICB0aW1lX3QgbV9sYXN0
UmVzcG9uZFRpbWUgeyAwIH07CiAgICAgTG93TWVtb3J5SGFuZGxlciBtX2xvd01lbW9yeUhhbmRs
ZXI7CiAKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX3VuZGVyTWVtb3J5UHJlc3N1cmU7CiAgICAg
Ym9vbCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlIHsgZmFsc2UgfTsKIAorICAgIFJ1bkxv
b3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4gbV9tZWFzdXJlbWVudFRpbWVyOworICAg
IE1lbW9yeVVzYWdlUG9saWN5IG1fbWVtb3J5VXNhZ2VQb2xpY3kgeyBNZW1vcnlVc2FnZVBvbGlj
eTo6VW5yZXN0cmljdGVkIH07CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZXhpdFRpbWVD
YWxsYmFjazsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogQ2FuIHdlIHNoYXJl
IG1vcmUgb2YgdGhpcyB3aXRoIE9wZW5Tb3VyY2U/CiAgICAgdWludDMyX3QgbV9tZW1vcnlQcmVz
c3VyZVJlYXNvbiB7IE1lbW9yeVByZXNzdXJlUmVhc29uTm9uZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMw
ODNjMzc4MmQ0Li41NDZlNTk3ZjNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3
LTAxLTMxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFj
XSBJbi1wcm9jZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25pdG9yIGZvciBXZWJDb250ZW50IHByb2Nl
c3Nlcy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NzQ5MT4KKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMwMTE2MDcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuYWJsZSB0aGUgaW4tcHJvY2VzcyBtZW1vcnkgbW9uaXRvciBmb3Ig
V2ViQ29udGVudCBwcm9jZXNzZXMgb24gbWFjT1MgMTAuMTIrCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFs
aXplV2ViUHJvY2Vzcyk6CisKIDIwMTctMDEtMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtUaHJlYWRlZCBDb21wb3NpdG9yXSBDcmFzaCBv
biBXZWJDb3JlOjpHTENvbnRleHQ6OnZlcnNpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggZDYzMmVjNzM3MDAuLjFmODc3N2IyNDY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI2MSw2ICsyNjEsMTIgQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldExv
d01lbW9yeUhhbmRsZXIoW10gKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJv
bm91cykgewogICAgICAgICAgICAgV2ViQ29yZTo6cmVsZWFzZU1lbW9yeShjcml0aWNhbCwgc3lu
Y2hyb25vdXMpOwogICAgICAgICB9KTsKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEyMDAKKyAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5k
bGVyLnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcih0cnVlKTsKKyAgICAgICAgbWVt
b3J5UHJlc3N1cmVIYW5kbGVyLnNldEV4aXRUaW1lQ2FsbGJhY2soW10gKCkgeworICAgICAgICAg
ICAgV2ViQ29yZTo6bG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVhdGgoKTsKKyAgICAgICAg
fSk7CisjZW5kaWYKICAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLmluc3RhbGwoKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWxlYWtzIGIvVG9vbHMvU2NyaXB0
cy9ydW4tbGVha3MKaW5kZXggYjg2ZjgxNGJlOWQuLjczNTA5MGNkMGE4IDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3J1bi1sZWFrcworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1sZWFrcwpAQCAt
MTA4LDcgKzEwOCw4IEBAIHN1YiBydW5MZWFrcygkKQogewogICAgIG15ICgkcGlkT3JFeGVjdXRh
YmxlTmFtZSkgPSBAXzsKICAgICAKLSAgICBteSBAbGVha3NPdXRwdXQgPSBgbGVha3MgJHBpZE9y
RXhlY3V0YWJsZU5hbWVgOworICAgIG15ICR0ID0gdGltZTsKKyAgICBteSBAbGVha3NPdXRwdXQg
PSBgbGVha3MgLS1vdXRwdXRHcmFwaD0vdG1wL3RhcHUtJHQubWVtZ3JhcGggJHBpZE9yRXhlY3V0
YWJsZU5hbWVgOwogICAgIGlmICghQGxlYWtzT3V0cHV0KSB7CiAgICAgICAgIHJlcG9ydEVycm9y
KCJFcnJvciBydW5uaW5nIGxlYWtzIHRvb2wuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTEzNCw3
ICsxMzUsNyBAQCBzdWIgcGFyc2VMZWFrc091dHB1dChcQCkKIAogICAgICMgU2tpcCBoZWFkZXIg
c2VjdGlvbiB1bnRpbCB0aGUgZmlyc3QgdHdvICJQcm9jZXNzICIgbGluZXMuCiAgICAgIyBGSVhN
RTogSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgd2lzaCB0byBwcm9wYWdhdGUgdGhlIGhlYWRlciBzZWN0
aW9uIHRocm91Z2ggdG8gb3VyIG91dHB1dC4KLSAgICB1bnRpbCAoJGxlYWtzT3V0cHV0LT5bMF0g
PX4gL15Qcm9jZXNzIC8pIHsKKyAgICB1bnRpbCAoJGxlYWtzT3V0cHV0LT5bMF0gPX4gL15PdXRw
dXQgLykgewogICAgICAgICBzaGlmdCBAJGxlYWtzT3V0cHV0OwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300185</attachid>
            <date>2017-01-30 21:26:31 -0800</date>
            <delta_ts>2017-02-02 06:51:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167491-3.diff</filename>
            <type>text/plain</type>
            <size>30273</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRiOGQ4ZThhMWQwLi5kZTIwYjA1NGFlMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDEtMzEgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEluLXByb2Nlc3Mg
bWVtb3J5IHByZXNzdXJlIG1vbml0b3IgZm9yIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgorICAgICAg
ICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY3NDkxPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzAxMTYwNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBzbG9wcHkgIm1heCBsaXZlIGhlYXAgc2l6ZSIgbWVjaGFuaXNtIGZyb20g
SlNDIGluIGZhdm9yIG9mIHRoZSBuZXcKKyAgICAgICAgV2ViQ29yZS1zaWRlIG1lbW9yeSBmb290
cHJpbnQgbW9uaXRvci4KKworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6
OkhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpkaWRF
eGNlZWRNYXhMaXZlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldE1heExpdmVTaXplKTogRGVsZXRlZC4KKwogMjAxNy0wMS0yOCAg
TWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogTmVlZCBzb21lIGxpbWl0IG9uIEFzeW5jIENhbGwgU3RhY2tzIGZvciBhc3luYyBsb29wcyAo
ckFGIGxvb3BzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCBiYzliNmQzMmEy
Yi4uMGMwMjBiMzZjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0xNzA1
LDExICsxNzA1LDYgQEAgdm9pZCBIZWFwOjpub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKQogICAg
IG1fc3dlZXBlci0+c3RhcnRTd2VlcGluZygpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBIZWFw
OjpkaWRFeGNlZWRNYXhMaXZlU2l6ZSgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQogdm9pZCBIZWFw
Ojp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7CkBAIC0xNzQxLDkgKzE3MzYsNiBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9j
YXRpb25MaW1pdHMoKQogCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coImV4dHJh
TWVtb3J5U2l6ZSgpID0gIiwgZXh0cmFNZW1vcnlTaXplKCksICIsIGN1cnJlbnRIZWFwU2l6ZSA9
ICIsIGN1cnJlbnRIZWFwU2l6ZSwgIlxuIik7Ci0KLSAgICBpZiAobV9tYXhMaXZlU2l6ZSAmJiBj
dXJyZW50SGVhcFNpemUgPiBtX21heExpdmVTaXplKQotICAgICAgICBkaWRFeGNlZWRNYXhMaXZl
U2l6ZSgpOwogICAgIAogICAgIGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkgJiYgY3VycmVu
dEhlYXBTaXplID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQogICAgICAgICBIZWFwU3RhdGlz
dGljczo6ZXhpdFdpdGhGYWlsdXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXgg
MmE2MjFiNmNhNDYuLjkxZTQ4YWU5ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBA
IC0xMzIsOSArMTMyLDYgQEAgcHVibGljOgogCiAgICAgVk0qIHZtKCkgY29uc3Q7CiAKLSAgICAv
LyBTZXQgYSBoYXJkIGxpbWl0IHdoZXJlIEpTQyB3aWxsIGNyYXNoIGlmIGxpdmUgaGVhcCBzaXpl
IGV4Y2VlZHMgaXQuCi0gICAgdm9pZCBzZXRNYXhMaXZlU2l6ZShzaXplX3Qgc2l6ZSkgeyBtX21h
eExpdmVTaXplID0gc2l6ZTsgfQotCiAgICAgTWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyBy
ZXR1cm4gbV9vYmplY3RTcGFjZTsgfQogICAgIE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFk
cygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVhZHM7IH0KIApAQCAtNjAxLDkgKzU5OCw2IEBAIHBy
aXZhdGU6CiAgICAgc2l6ZV90IG1fYmxvY2tCeXRlc0FsbG9jYXRlZCB7IDAgfTsKICAgICBzaXpl
X3QgbV9leHRlcm5hbE1lbW9yeVNpemUgeyAwIH07CiAjZW5kaWYKLQotICAgIE5PX1JFVFVSTl9E
VUVfVE9fQ1JBU0ggdm9pZCBkaWRFeGNlZWRNYXhMaXZlU2l6ZSgpOwotICAgIHNpemVfdCBtX21h
eExpdmVTaXplIHsgMCB9OwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdG9yU2NoZWR1
bGVyPiBtX3NjaGVkdWxlcjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMTIwMGFkYmYzMWUuLjUwMGZhOWVkZjI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTAxLTMxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KKworICAgICAgICBbTWFjXSBJbi1wcm9jZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25p
dG9yIGZvciBXZWJDb250ZW50IHByb2Nlc3Nlcy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE2NzQ5MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMTE2MDcyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFdURiBoZWxwZXIg
ZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIGN1cnJlbnQgcHJvY2VzcydzIG1lbW9yeSBmb290cHJp
bnQuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL01lbW9yeUZvb3RwcmludC5jcHA6
CisgICAgICAgIChXVEY6Om1lbW9yeUZvb3RwcmludCk6CisgICAgICAgICogd3RmL01lbW9yeUZv
b3RwcmludC5oOgorCiAyMDE3LTAxLTI4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIENoZWNrIFVTRShBUFBMRV9JTlRFUk5BTF9TREspIGluc3RlYWQg
b2Ygc3BlY2lmaWMgaGVhZGVycyB3aGVuIGltcG9ydGluZyBmcm9tIFdlYktpdEFkZGl0aW9ucwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmRkODcwMTczOWUu
LmU0MmUwYTVlOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTMzNyw2ICszMzcsOCBAQAogCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhy
ZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLzsgfTsKIAkJQThB
NDc0OEMxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZp
Zy5oICovOyB9OwogCQlBRDdDNDM0QjFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEN0M0MzRBMUREMkE0
QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovOyB9OworCQlBREYyQ0U2NjFFMzlGMTA2MDA2ODg5
REIgLyogTWVtb3J5Rm9vdHByaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQURG
MkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2NTFFMzlGMTA2MDA2ODg5
REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCAqLzsgfTsKIAkJQjM4RkQ3QkQxNjg5NTNFODAwNjVD
OTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMu
aCAqLzsgfTsKIAkJQzRGOEE5MzcxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGOEE5MzYxOUM2NUVC
NDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovOyB9OwogCQlDOEIwRTFBMUUwMUE0ODZFQjk1RTBE
MTEgLyogSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMzdFMUQ3REJEODRBQzM4RkFFNEQzNCAvKiBJbmRleFNldC5oICovOyB9OwpAQCAt
NzE5LDYgKzcyMSw4IEBACiAJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWRE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVhZERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8q
IGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4
cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cGVjdGVkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERjJDRTY0MUUzOUYxMDYwMDY4ODlEQiAvKiBN
ZW1vcnlGb290cHJpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5
Rm9vdHByaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERjJDRTY1MUUzOUYx
MDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0
Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcHdhdGNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRp
YVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUaW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDUsNiArMTAwOSw4IEBACiAJ
CQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4
NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMw
MEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywKKwkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIg
LyogTWVtb3J5Rm9vdHByaW50LmggKi8sCisJCQkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8q
IE1lbW9yeUZvb3RwcmludC5jcHAgKi8sCiAJCQkJQThBNDcyQ0MxNTFBODI1QjAwNDEyM0ZGIC8q
IE1lc3NhZ2VRdWV1ZS5oICovLAogCQkJCUE4QTQ3MkNEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRh
QWxsb2NhdG9yLmNwcCAqLywKIAkJCQlBOEE0NzJDRTE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFs
bG9jYXRvci5oICovLApAQCAtMTQ5NCw2ICsxNTAwLDcgQEAKIAkJCQlBOEE0NzQxQzE1MUE4MjVC
MDA0MTIzRkYgLyogUmVmUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQxRTE1MUE4MjVC
MDA0MTIzRkYgLyogUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQ0RFRDBGNDE4MTE1
Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQURGMkNFNjYxRTM5
RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ2
OTQxOTIxNkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUwOThCMDAxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0RjNCMEY3MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmgg
aW4gSGVhZGVycyAqLywKQEAgLTE3MDEsNiArMTcwOCw3IEBACiAJCQkJMUFDQUREODQxODg0NDgw
MTAwRDhCNzFEIC8qIERlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDczQUUxNTFBODI1QjAwNDEyM0ZGIC8qIGRpeS1mcC5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5j
YyBpbiBTb3VyY2VzICovLAorCQkJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlG
b290cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQkExNTFBODI1QjAwNDEyM0ZG
IC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjMxNTFBODI1QjAwNDEyM0ZG
IC8qIGZhc3QtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0
RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAppbmRleCA1OGMxMTZiZGQxMS4uODFhZjkxMjc2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBA
IC02NCw2ICs2NCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIE1hbGxvY1B0ci5oCiAgICAgTWF0
aEV4dHJhcy5oCiAgICAgTWVkaWFUaW1lLmgKKyAgICBNZW1vcnlGb290cHJpbnQuaAogICAgIE1l
c3NhZ2VRdWV1ZS5oCiAgICAgTWV0YUFsbG9jYXRvci5oCiAgICAgTWV0YUFsbG9jYXRvckhhbmRs
ZS5oCkBAIC0yMDQsNiArMjA1LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgTUQ1LmNwcAogICAg
IE1haW5UaHJlYWQuY3BwCiAgICAgTWVkaWFUaW1lLmNwcAorICAgIE1lbW9yeUZvb3RwcmludC5j
cHAKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE1vbm90b25pY1RpbWUuY3BwCiAgICAgTnVt
YmVyT2ZDb3Jlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3Rwcmlu
dC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kY2MwZGU2MTFiMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorI2luY2x1ZGUgPG1hY2gvdGFza19pbmZvLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlG
b290cHJpbnQoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHRhc2tfdm1faW5mb19kYXRh
X3Qgdm1JbmZvOworICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgY291bnQgPSBUQVNLX1ZNX0lO
Rk9fQ09VTlQ7CisgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNrX2luZm8obWFjaF90YXNr
X3NlbGYoKSwgVEFTS19WTV9JTkZPLCAodGFza19pbmZvX3QpICZ2bUluZm8sICZjb3VudCk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4odm1JbmZvLnBoeXNfZm9vdHByaW50
KTsKKyNlbHNlCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNlbmRpZgorfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuaCBiL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeUZvb3RwcmludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43YjhlY2E4ZTk3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZv
b3RwcmludC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0VYUE9S
VF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlGb290cHJpbnQoKTsKKworfQor
Cit1c2luZyBXVEY6Om1lbW9yeUZvb3RwcmludDsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU4Mzk5ZWIzYTc1
Li5hYWFhM2VkMzIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE3LTAxLTMxICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBJbi1wcm9j
ZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25pdG9yIGZvciBXZWJDb250ZW50IHByb2Nlc3Nlcy4KKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NzQ5MT4KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMwMTE2MDcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyB0aW1lci1iYXNlZCBtZW1vcnkgcHJlc3N1cmUgbW9uaXRvciB0aGF0
IGNoZWNrcyB0aGUgcHJvY2VzcyBtZW1vcnkKKyAgICAgICAgZm9vdHByaW50IGV2ZXJ5IDMwIHNl
Y29uZHMgYW5kIHJlYWN0cyB0byBjaGFuZ2VzIGJ5IHNldHRpbmcgYSBNZW1vcnlVc2FnZVBvbGlj
eS4KKworICAgICAgICBUaGVyZSBhcmUgZm91ciBNZW1vcnlVc2FnZVBvbGljeSB2YWx1ZXM6CisK
KyAgICAgICAgICAgIC0gVW5yZXN0cmljdGVkIChiZWxvdyAxR0IpCisgICAgICAgICAgICAtIENv
bnNlcnZhdGl2ZSAoYWJvdmUgMUdCKQorICAgICAgICAgICAgLSBTdHJpY3QgKGFib3ZlIDJHQikK
KyAgICAgICAgICAgIC0gUGFuaWMgKGFib3ZlIDRHQiwgb3IgM0dCIGlmIDMyLWJpdCkKKworICAg
ICAgICBUcmFuc2l0aW9uaW5nIHRvIGEgaGlnaGVyIHBvbGljeSB3aWxsIGNhdXNlIG1lbW9yeSBw
cmVzc3VyZSBoYW5kbGVycyB0byBydW46CisKKyAgICAgICAgQXQgU3RyaWN0LCB3ZSBydW4gdGhl
ICJub24tY3JpdGljYWwiIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyLCB0aGVuIGNhcnJ5IG9uLgor
CisgICAgICAgIEF0IFBhbmljLCB3ZSBydW4gdGhlICJjcml0aWNhbCIgbWVtb3J5IHByZXNzdXJl
IGhhbmRsZXIgc3luY2hyb25vc2x5LCBhbmQgdGhlbgorICAgICAgICBpbW1lZGlhdGVseSByZS1t
ZWFzdXJlIHRoZSBmb290cHJpbnQuIElmIHRoZSBwcmVzc3VyZSBoYW5kbGVyIGZhaWxlZCB0byBi
cmluZworICAgICAgICB1cyBiZWxvdyB0aGUgNEdCIHRocmVzaG9sZCwgd2Uga2lsbCB0aGUgcHJv
Y2Vzcy4KKworICAgICAgICBCZWZvcmUga2lsbGluZyB0aGUgcHJvY2VzcywgYW4gaW5zdGFsbGFi
bGUgZXhpdC10aW1lIGNhbGxiYWNrIHdpbGwgcnVuLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28g
aW5zdGFsbHMgc3VjaCBhIGNhbGxiYWNrIHRoYXQgcHJpbnRzIG91dCBzb21lIHRpbWUtb2YtZGVh
dGgKKyAgICAgICAgc3RhdGlzdGljcyBhYm91dCBDKysgYW5kIEphdmFTY3JpcHQgbWVtb3J5IHVz
YWdlIHRvIGhvcGVmdWxseSBoZWxwIHVuZGVyc3RhbmQKKyAgICAgICAgd2hhdCB3YXMgc29ha2lu
ZyB1cCBhbGwgdGhlIG1lbW9yeS4KKworICAgICAgICBUaGUgY3VycmVudCBNZW1vcnlVc2FnZVBv
bGljeSBjYW4gYmUgcmV0cmlldmVkIGxpa2Ugc286CisKKyAgICAgICAgICAgIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2luZ2xldG9uKCkubWVtb3J5VXNhZ2VQb2xpY3koKQorCisgICAgICAgIEZv
ciBTdHJpY3QgYW5kIGFib3ZlLCB0aGUgb2xkLXN0eWxlICJpc1VuZGVyTWVtb3J5UHJlc3N1cmUo
KSIgd2lsbCBhbHNvIHJldHVybiB0cnVlLgorCisgICAgICAgICogYmluZGluZ3MvanMvQ29tbW9u
Vk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tbW9uVk1TbG93KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjps
aXZlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6ZGVhZFNpemUpOgorICAg
ICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6bG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVhdGgp
OgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjp0aHJlc2hvbGRG
b3JQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6cG9saWN5Rm9yRm9vdHByaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6ZGlkRXhjZWVkTWVtb3J5TGltaXRB
bmRGYWlsZWRUb1JlY292ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpzZXRFeGl0VGltZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6aXNVbmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6bWVtb3J5VXNhZ2VQb2xpY3kpOgorCiAyMDE3LTAxLTMwICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBTZXZlcmFs
IHdlYiB0aW1pbmcgdGVzdHMgY3Jhc2ggaW4gR1RLKyBhbmQgQXBwbGVXaW4gYm90cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCmluZGV4IGIxYjA2YWEwNzQwLi4wZDVhNGE2
MDZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcApAQCAtNDYsMTAg
KzQ2LDYgQEAgVk0mIGNvbW1vblZNU2xvdygpCiAgICAgCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6
aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIGdfY29tbW9uVk1Pck51bGwgPSAmVk06OmNyZWF0
ZUxlYWtlZChMYXJnZUhlYXApLmxlYWtSZWYoKTsKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
NjQpCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhHQ0hlYXBTaXplID0gNCAqIEdCOwotICAg
IGdfY29tbW9uVk1Pck51bGwtPmhlYXAuc2V0TWF4TGl2ZVNpemUobWF4R0NIZWFwU2l6ZSk7Ci0j
ZW5kaWYKICAgICBnX2NvbW1vblZNT3JOdWxsLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gQXQg
YW55IHRpbWUsIHdlIG1heSBkbyB0aGluZ3MgdGhhdCBhZmZlY3QgdGhlIEdDLgogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgZ19jb21tb25WTU9yTnVsbC0+c2V0RXhjbHVzaXZlVGhyZWFkKHN0ZDo6
dGhpc190aHJlYWQ6OmdldF9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmgKaW5kZXggMTgzNmMyYmYxMDAuLjRkNTczOGNhYjAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtMTI0LDYgKzEyNCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBydW5lKCk7CiAgICAgdm9pZCBwcnVuZVNvb24oKTsKICAgICB1bnNpZ25lZCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9saXZlU2l6ZSArIG1fZGVhZFNpemU7IH0KKyAgICB1bnNp
Z25lZCBsaXZlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZVNpemU7IH0KKyAgICB1bnNpZ25l
ZCBkZWFkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVhZFNpemU7IH0KIAogICAgIHZvaWQgc2V0
RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
IGludGVydmFsKSB7IG1fZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IGludGVydmFs
OyB9CiAgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkZWFkRGVjb2RlZERhdGFEZWxldGlv
bkludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9kZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVy
dmFsOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCBkNjQ0NDRjZjBk
YS4uOThmZjIwMzBmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAt
MjksMTIgKzI5LDE0IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiQ2hy
b21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uVk0uaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUg
IkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbmxpbmVTdHlsZVNoZWV0T3duZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCkBAIC00NSw2ICs0Nywx
MCBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJSZXNvdXJjZVVzYWdlVGhyZWFk
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCByZWxlYXNl
Tm9uY3JpdGljYWxNZW1vcnkoKQpAQCAtMTI4LDYgKzEzNCw1NiBAQCB2b2lkIHJlbGVhc2VNZW1v
cnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKQogI2VuZGlmCiB9
CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK3N0YXRpYyB1bnNpZ25lZCBwYWdlQ291bnQo
KQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICBQYWdlOjpmb3JFYWNoUGFnZShbJl0g
KFBhZ2UmIHBhZ2UpIHsKKyAgICAgICAgaWYgKCFwYWdlLmlzVXRpbGl0eVBhZ2UoKSkKKyAgICAg
ICAgICAgICsrY291bnQ7CisgICAgfSk7CisgICAgcmV0dXJuIGNvdW50OworfQorI2VuZGlmCisK
K3ZvaWQgbG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVhdGgoKQoreworI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gcGFnZVNpemUgPSB2
bVBhZ2VTaXplKCk7CisgICAgYXV0byBwYWdlcyA9IHBhZ2VzUGVyVk1UYWcoKTsKKworICAgIFJF
TEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiRGlydHkgbWVtb3J5IHBlciBWTSB0YWcgYXQgdGlt
ZSBvZiBkZWF0aDoiKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyArK2kpIHsK
KyAgICAgICAgc2l6ZV90IGRpcnR5ID0gcGFnZXNbaV0uZGlydHkgKiBwYWdlU2l6ZTsKKyAgICAg
ICAgaWYgKCFkaXJ0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBTdHJpbmcgdGFn
TmFtZSA9IGRpc3BsYXlOYW1lRm9yVk1UYWcoaSk7CisgICAgICAgIGlmICghdGFnTmFtZSkKKyAg
ICAgICAgICAgIHRhZ05hbWUgPSBTdHJpbmc6OmZvcm1hdCgiVGFnICV1IiwgaSk7CisgICAgICAg
IFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiJTE2czogJWx1IE1CIiwgdGFnTmFtZS5sYXRp
bjEoKS5kYXRhKCksIGRpcnR5IC8gTUIpOworICAgIH0KKyNlbmRpZgorCisgICAgYXV0byYgdm0g
PSBjb21tb25WTSgpOworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTWVtb3J5IHVz
YWdlIHN0YXRpc3RpY3MgYXQgdGltZSBvZiBkZWF0aDoiKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1v
cnlQcmVzc3VyZSwgIkdDIGhlYXAgc2l6ZTogJXp1Iiwgdm0uaGVhcC5zaXplKCkpOworICAgIFJF
TEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiR0MgaGVhcCBleHRyYSBtZW1vcnkgc2l6ZTogJXp1
Iiwgdm0uaGVhcC5leHRyYU1lbW9yeVNpemUoKSk7CisjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdF
KQorICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiR0MgaGVhcCBleHRlcm5hbCBtZW1v
cnk6ICV6dSIsIHZtLmhlYXAuZXh0ZXJuYWxNZW1vcnlTaXplKCkpOworI2VuZGlmCisgICAgUkVM
RUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJHbG9iYWwgb2JqZWN0IGNvdW50OiAlenUiLCB2bS5o
ZWFwLmdsb2JhbE9iamVjdENvdW50KCkpOworCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1
cmUsICJQYWdlIGNvdW50OiAldSIsIHBhZ2VDb3VudCgpKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1v
cnlQcmVzc3VyZSwgIkRvY3VtZW50IGNvdW50OiAldSIsIERvY3VtZW50OjphbGxEb2N1bWVudHMo
KS5zaXplKCkpOworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTWVtb3J5Q2FjaGUg
bGl2ZSBzaXplOiAlbHUgTUIiLCBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkubGl2ZVNpemUoKSAv
IE1CKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeUNhY2hlIGRlYWQg
c2l6ZTogJWx1IE1CIiwgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmRlYWRTaXplKCkgLyBNQik7
CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJMaXZlIEphdmFTY3JpcHQgb2JqZWN0
czoiKTsKKyAgICBmb3IgKGF1dG8mIGl0IDogKnZtLmhlYXAub2JqZWN0VHlwZUNvdW50cygpKQor
ICAgICAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIiAgJXM6ICVkIiwgaXQua2V5LCBp
dC52YWx1ZSk7CisjZW5kaWYKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgcGxhdGZv
cm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKSB7IH0KIHZvaWQgamV0dGlzb25FeHBlbnNpdmVPYmpl
Y3RzT25Ub3BMZXZlbE5hdmlnYXRpb24oKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVtb3J5UmVsZWFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNl
LmgKaW5kZXggMWQ5OTM3MmNhZjIuLjk0NDA4YWUxMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lbW9yeVJlbGVhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9y
eVJlbGVhc2UuaApAQCAtMzMsNSArMzMsNiBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbGVhc2VN
ZW1vcnkoQ3JpdGljYWwsIFN5bmNocm9ub3VzKTsKIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5
KENyaXRpY2FsKTsKIHZvaWQgamV0dGlzb25FeHBlbnNpdmVPYmplY3RzT25Ub3BMZXZlbE5hdmln
YXRpb24oKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJNZW1vcnlSZWxlYXNlTm90aWZ5
Q2FsbGJhY2tzKCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGxvZ01lbW9yeVN0YXRpc3RpY3NBdFRp
bWVPZkRlYXRoKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmgKaW5kZXggZDk3MWY1ZWE4MzkuLjE4YTFlNjc1NDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaApAQCAtODAsNiArODAs
NyBAQCBzdHJ1Y3QgVGFnSW5mbyB7CiB9OwogCiBjb25zdCBjaGFyKiBkaXNwbGF5TmFtZUZvclZN
VGFnKHVuc2lnbmVkKTsKK3NpemVfdCB2bVBhZ2VTaXplKCk7CiBzdGQ6OmFycmF5PFRhZ0luZm8s
IDI1Nj4gcGFnZXNQZXJWTVRhZygpOwogdm9pZCBsb2dGb290cHJpbnRDb21wYXJpc29uKGNvbnN0
IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiYsIGNvbnN0IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2
PiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291
cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZVRocmVhZENvY29hLm1tCmluZGV4IDY5MTM2YWRmNGY3Li4wNjRhNjFhY2NlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFk
Q29jb2EubW0KQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgc2l6ZV90IHZtUGFnZVNpemUoKQorc2l6ZV90IHZtUGFnZVNpemUoKQogewogI2lmIFBMQVRG
T1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwCiAg
ICAgcmV0dXJuIHZtX2tlcm5lbF9wYWdlX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCBiOWFjMGU1OTAwZC4uZjZkMjFm
NWQxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJl
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUZv
b3RwcmludC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwxMjAgQEAg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigp
CiB9CiAKIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkKKyAg
ICA6IG1fbWVhc3VyZW1lbnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCkKICNpZiBPUyhMSU5VWCkKLSAgICA6
IG1faG9sZE9mZlRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpCisgICAgLCBtX2hvbGRPZmZUaW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZUaW1lckZpcmVkKQog
I2VuZGlmCiB7CiB9CiAKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQ
ZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCB1c2UpCit7CisgICAgaWYgKHVzZSkKKyAgICAgICAg
bV9tZWFzdXJlbWVudFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDMwKTsKKyAgICBlbHNlCisgICAgICAg
IG1fbWVhc3VyZW1lbnRUaW1lci5zdG9wKCk7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKK3N0YXRpYyBjb25zdCBjaGFyKiB0b1N0cmluZyhNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kp
Cit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpV
bnJlc3RyaWN0ZWQ6IHJldHVybiAiVW5yZXN0cmljdGVkIjsKKyAgICBjYXNlIE1lbW9yeVVzYWdl
UG9saWN5OjpDb25zZXJ2YXRpdmU6IHJldHVybiAiQ29uc2VydmF0aXZlIjsKKyAgICBjYXNlIE1l
bW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q6IHJldHVybiAiU3RyaWN0IjsKKyAgICBjYXNlIE1lbW9y
eVVzYWdlUG9saWN5OjpQYW5pYzogcmV0dXJuICJQYW5pYyI7CisgICAgfQorfQorI2VuZGlmCisK
K3N0YXRpYyBzaXplX3QgdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5IHBvbGlj
eSkKK3sKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6
OkNvbnNlcnZhdGl2ZToKKyAgICAgICAgcmV0dXJuIDEgKiBHQjsKKyAgICBjYXNlIE1lbW9yeVVz
YWdlUG9saWN5OjpTdHJpY3Q6CisgICAgICAgIHJldHVybiAyICogR0I7CisgICAgY2FzZSBNZW1v
cnlVc2FnZVBvbGljeTo6UGFuaWM6CisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorICAg
ICAgICByZXR1cm4gNCAqIEdCOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIDMgKiBHQjsKKyNlbmRp
ZgorICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZDoKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorfQorCitzdGF0aWMgTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVf
dCBmb290cHJpbnQpCit7CisgICAgaWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3ko
TWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljKSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9s
aWN5OjpQYW5pYzsKKyAgICBpZiAoZm9vdHByaW50ID49IHRocmVzaG9sZEZvclBvbGljeShNZW1v
cnlVc2FnZVBvbGljeTo6U3RyaWN0KSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5
OjpTdHJpY3Q7CisgICAgaWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5
VXNhZ2VQb2xpY3k6OkNvbnNlcnZhdGl2ZSkpCisgICAgICAgIHJldHVybiBNZW1vcnlVc2FnZVBv
bGljeTo6Q29uc2VydmF0aXZlOworICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0
cmljdGVkOworfQorCitORVZFUl9JTkxJTkUgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmRp
ZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFpbGVkVG9SZWNvdmVyKCkKK3sKKyAgICBDUkFTSCgpOwor
fQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKCkK
K3sKKyAgICBhdXRvIGZvb3RwcmludCA9IG1lbW9yeUZvb3RwcmludCgpOworICAgIGlmICghZm9v
dHByaW50KQorICAgICAgICByZXR1cm47CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUs
ICJDdXJyZW50IG1lbW9yeSBmb290cHJpbnQ6ICVsdSBNQiIsIGZvb3RwcmludC52YWx1ZSgpIC8g
TUIpOworCisgICAgYXV0byBuZXdQb2xpY3kgPSBwb2xpY3lGb3JGb290cHJpbnQoZm9vdHByaW50
LnZhbHVlKCkpOworICAgIGlmIChuZXdQb2xpY3kgPT0gbV9tZW1vcnlVc2FnZVBvbGljeSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJNZW1vcnkg
dXNhZ2UgcG9saWN5IGNoYW5nZWQ6ICVzIC0+ICVzIiwgdG9TdHJpbmcobV9tZW1vcnlVc2FnZVBv
bGljeSksIHRvU3RyaW5nKG5ld1BvbGljeSkpOworCisgICAgbV9tZW1vcnlVc2FnZVBvbGljeSA9
IG5ld1BvbGljeTsKKworICAgIGlmIChuZXdQb2xpY3kgPT0gTWVtb3J5VXNhZ2VQb2xpY3k6OlVu
cmVzdHJpY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG5ld1BvbGljeSA9PSBNZW1v
cnlVc2FnZVBvbGljeTo6Q29uc2VydmF0aXZlKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBwb2xpY3kgYnkgY2hvb3Npbmcgd2hpY2ggY2FjaGVzIHNob3VsZCByZXNwZWN0IGl0
LCBhbmQgaG9va2luZyB0aGVtIHVwLiAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChuZXdQb2xpY3kgPT0gTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdCkgeworICAgICAgICBSRUxF
QVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkF0dGVtcHRpbmcgdG8gcmVkdWNlIG1lbW9yeSBmb290
cHJpbnQgYnkgZnJlZWluZyBsZXNzIGltcG9ydGFudCBvYmplY3RzLiIpOworICAgICAgICByZWxl
YXNlTWVtb3J5KENyaXRpY2FsOjpObywgU3luY2hyb25vdXM6Ok5vKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKG5ld1BvbGljeSA9PSBNZW1vcnlVc2FnZVBv
bGljeTo6UGFuaWMpOworCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJBdHRlbXB0
aW5nIHRvIHJlZHVjZSBtZW1vcnkgZm9vdHByaW50IGJ5IGZyZWVpbmcgbW9yZSBpbXBvcnRhbnQg
b2JqZWN0cy4iKTsKKyAgICByZWxlYXNlTWVtb3J5KENyaXRpY2FsOjpZZXMsIFN5bmNocm9ub3Vz
OjpZZXMpOworCisgICAgLy8gUmVtZWFzdXJlIGZvb3RwcmludCB0byBzZWUgaG93IHdlbGwgdGhl
IHByZXNzdXJlIGhhbmRsZXIgZGlkLgorICAgIGZvb3RwcmludCA9IG1lbW9yeUZvb3RwcmludCgp
OworICAgIFJFTEVBU0VfQVNTRVJUKGZvb3RwcmludCk7CisKKyAgICBSRUxFQVNFX0xPRyhNZW1v
cnlQcmVzc3VyZSwgIk5ldyBtZW1vcnkgZm9vdHByaW50OiAlbHUgTUIiLCBmb290cHJpbnQudmFs
dWUoKSAvIE1CKTsKKyAgICBpZiAoZm9vdHByaW50LnZhbHVlKCkgPCB0aHJlc2hvbGRGb3JQb2xp
Y3koTWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljKSkgeworICAgICAgICBtX21lbW9yeVVzYWdlUG9s
aWN5ID0gcG9saWN5Rm9yRm9vdHByaW50KGZvb3RwcmludC52YWx1ZSgpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJQcmVzc3VyZSByZWR1Y2VkIGJlbG93IHBhbmljIHRo
cmVzaG9sZC4gTmV3IG1lbW9yeSB1c2FnZSBwb2xpY3k6ICVzIiwgdG9TdHJpbmcobV9tZW1vcnlV
c2FnZVBvbGljeSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUkVMRUFTRV9MT0co
TWVtb3J5UHJlc3N1cmUsICJDcmFzaGluZyBkdWUgdG8gZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSAr
IGluYWJpbGl0eSB0byBmcmVlIHVwIG1lbW9yeSBiZWxvdyBwYW5pYyBsaW1pdC4iKTsKKyAgICBp
ZiAobV9leGl0VGltZUNhbGxiYWNrKQorICAgICAgICBtX2V4aXRUaW1lQ2FsbGJhY2soKTsKKyAg
ICBkaWRFeGNlZWRNZW1vcnlMaW1pdEFuZEZhaWxlZFRvUmVjb3ZlcigpOworfQorCiB2b2lkIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6YmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpCiB7CiAg
ICAgbV9pc1NpbXVsYXRpbmdNZW1vcnlQcmVzc3VyZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4IDYwMWE0MWVkYWU4Li5j
MDRiNThmNjA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmgKQEAgLTM0LDE2ICszNCwxNiBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNs
dWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0j
ZWxpZiBPUyhMSU5VWCkKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2VuZGlmCisKICNpZiBV
U0UoR0xJQikKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKLSNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDYgKzU1LDEzIEBAIGVudW0gTWVtb3J5UHJl
c3N1cmVSZWFzb24gewogfTsKICNlbmRpZgogCitlbnVtIGNsYXNzIE1lbW9yeVVzYWdlUG9saWN5
IHsKKyAgICBVbnJlc3RyaWN0ZWQsIC8vIEFsbG9jYXRlIGFzIG11Y2ggYXMgeW91IHdhbnQKKyAg
ICBDb25zZXJ2YXRpdmUsIC8vIE1heWJlIHlvdSBkb24ndCBjYWNoZSBldmVyeSBzaW5nbGUgdGhp
bmcKKyAgICBTdHJpY3QsIC8vIFRpbWUgdG8gc3RhcnQgcGluY2hpbmcgcGVubmllcyBmb3IgcmVh
bAorICAgIFBhbmljLCAvLyBPSCBHT0QgV0UnUkUgU0lOS0lORywgVEhST1cgRVZFUllUSElORyBP
VkVSQk9BUkQKK307CisKIGVudW0gY2xhc3MgQ3JpdGljYWwgeyBObywgWWVzIH07CiBlbnVtIGNs
YXNzIFN5bmNocm9ub3VzIHsgTm8sIFllcyB9OwogCkBAIC02OCwxMiArNzUsMTYgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnN0YWxsKCk7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sKTsKKworICAg
IHZvaWQgc2V0RXhpdFRpbWVDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24p
IHsgbV9leGl0VGltZUNhbGxiYWNrID0gV1RGTW92ZShmdW5jdGlvbik7IH0KKwogICAgIHZvaWQg
c2V0TG93TWVtb3J5SGFuZGxlcihMb3dNZW1vcnlIYW5kbGVyJiYgaGFuZGxlcikKICAgICB7CiAg
ICAgICAgIG1fbG93TWVtb3J5SGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7CiAgICAgfQogCi0g
ICAgYm9vbCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdCB7IHJldHVybiBtX3VuZGVyTWVt
b3J5UHJlc3N1cmUgfHwgbV9pc1NpbXVsYXRpbmdNZW1vcnlQcmVzc3VyZTsgfQorICAgIGJvb2wg
aXNVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QgeyByZXR1cm4gbV91bmRlck1lbW9yeVByZXNz
dXJlIHx8IG1faXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUgfHwgbWVtb3J5VXNhZ2VQb2xpY3ko
KSA+PSBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0OyB9CiAgICAgdm9pZCBzZXRVbmRlck1lbW9y
eVByZXNzdXJlKGJvb2wgYikgeyBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgPSBiOyB9CiAKICNpZiBQ
TEFURk9STShJT1MpCkBAIC0xMzgsNiArMTQ5LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYmVnaW5TaW11bGF0ZWRNZW1vcnlQcmVzc3VyZSgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZW5kU2ltdWxhdGVkTWVtb3J5UHJlc3N1cmUoKTsKIAorICAgIE1lbW9yeVVzYWdl
UG9saWN5IG1lbW9yeVVzYWdlUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2FnZVBv
bGljeTsgfSAKKwogcHJpdmF0ZToKICAgICB2b2lkIHVuaW5zdGFsbCgpOwogCkBAIC0xNDksNiAr
MTYyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbmRUb01lbW9yeVByZXNzdXJlKENyaXRp
Y2FsLCBTeW5jaHJvbm91cyA9IFN5bmNocm9ub3VzOjpObyk7CiAgICAgdm9pZCBwbGF0Zm9ybVJl
bGVhc2VNZW1vcnkoQ3JpdGljYWwpOwogCisgICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lk
IGRpZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFpbGVkVG9SZWNvdmVyKCk7CisgICAgdm9pZCBtZWFz
dXJlbWVudFRpbWVyRmlyZWQoKTsKKwogI2lmIE9TKExJTlVYKQogICAgIGNsYXNzIEV2ZW50RkRQ
b2xsZXIgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudEZEUG9sbGVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNzAsMTIgKzE4NiwxNSBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICAgICBib29sIG1faW5zdGFsbGVkIHsgZmFsc2UgfTsKLSAgICB0aW1lX3QgbV9sYXN0
UmVzcG9uZFRpbWUgeyAwIH07CiAgICAgTG93TWVtb3J5SGFuZGxlciBtX2xvd01lbW9yeUhhbmRs
ZXI7CiAKICAgICBzdGQ6OmF0b21pYzxib29sPiBtX3VuZGVyTWVtb3J5UHJlc3N1cmU7CiAgICAg
Ym9vbCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlIHsgZmFsc2UgfTsKIAorICAgIFJ1bkxv
b3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4gbV9tZWFzdXJlbWVudFRpbWVyOworICAg
IE1lbW9yeVVzYWdlUG9saWN5IG1fbWVtb3J5VXNhZ2VQb2xpY3kgeyBNZW1vcnlVc2FnZVBvbGlj
eTo6VW5yZXN0cmljdGVkIH07CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZXhpdFRpbWVD
YWxsYmFjazsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogQ2FuIHdlIHNoYXJl
IG1vcmUgb2YgdGhpcyB3aXRoIE9wZW5Tb3VyY2U/CiAgICAgdWludDMyX3QgbV9tZW1vcnlQcmVz
c3VyZVJlYXNvbiB7IE1lbW9yeVByZXNzdXJlUmVhc29uTm9uZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMw
ODNjMzc4MmQ0Li41NDZlNTk3ZjNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3
LTAxLTMxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFj
XSBJbi1wcm9jZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25pdG9yIGZvciBXZWJDb250ZW50IHByb2Nl
c3Nlcy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NzQ5MT4KKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMwMTE2MDcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuYWJsZSB0aGUgaW4tcHJvY2VzcyBtZW1vcnkgbW9uaXRvciBmb3Ig
V2ViQ29udGVudCBwcm9jZXNzZXMgb24gbWFjT1MgMTAuMTIrCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFs
aXplV2ViUHJvY2Vzcyk6CisKIDIwMTctMDEtMjkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtUaHJlYWRlZCBDb21wb3NpdG9yXSBDcmFzaCBv
biBXZWJDb3JlOjpHTENvbnRleHQ6OnZlcnNpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggZDYzMmVjNzM3MDAuLjFmODc3N2IyNDY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI2MSw2ICsyNjEsMTIgQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldExv
d01lbW9yeUhhbmRsZXIoW10gKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJv
bm91cykgewogICAgICAgICAgICAgV2ViQ29yZTo6cmVsZWFzZU1lbW9yeShjcml0aWNhbCwgc3lu
Y2hyb25vdXMpOwogICAgICAgICB9KTsKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEyMDAKKyAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5k
bGVyLnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcih0cnVlKTsKKyAgICAgICAgbWVt
b3J5UHJlc3N1cmVIYW5kbGVyLnNldEV4aXRUaW1lQ2FsbGJhY2soW10gKCkgeworICAgICAgICAg
ICAgV2ViQ29yZTo6bG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVhdGgoKTsKKyAgICAgICAg
fSk7CisjZW5kaWYKICAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLmluc3RhbGwoKTsKICAg
ICB9CiAK
</data>
<flag name="review"
          id="322101"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300407</attachid>
            <date>2017-02-02 06:51:02 -0800</date>
            <delta_ts>2017-02-02 09:44:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167491-N.diff</filename>
            <type>text/plain</type>
            <size>33450</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGEyOThmZDU4NjFlLi40OGRkMDFlMGE1OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDItMDEgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEluLXByb2Nlc3Mg
bWVtb3J5IHByZXNzdXJlIG1vbml0b3IgZm9yIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgorICAgICAg
ICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY3NDkxPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzAxMTYwNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBzbG9wcHkgIm1heCBsaXZlIGhlYXAgc2l6ZSIgbWVjaGFuaXNtIGZyb20g
SlNDIGluIGZhdm9yIG9mIHRoZSBuZXcKKyAgICAgICAgV2ViQ29yZS1zaWRlIG1lbW9yeSBmb290
cHJpbnQgbW9uaXRvci4KKworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6
OkhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpkaWRF
eGNlZWRNYXhMaXZlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldE1heExpdmVTaXplKTogRGVsZXRlZC4KKwogMjAxNy0wMi0wMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBBcml0eUZp
eHVwIHNob3VsZCBhZGp1c3QgU1AgZmlyc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
aW5kZXggMjI4YmZlYzIwMjguLjBhOTQ3NzY2OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcApAQCAtMTcyNiwxMSArMTcyNiw2IEBAIHZvaWQgSGVhcDo6bm90aWZ5SW5jcmVtZW50
YWxTd2VlcGVyKCkKICAgICBtX3N3ZWVwZXItPnN0YXJ0U3dlZXBpbmcoKTsKIH0KIAotTkVWRVJf
SU5MSU5FIHZvaWQgSGVhcDo6ZGlkRXhjZWVkTWF4TGl2ZVNpemUoKQotewotICAgIENSQVNIKCk7
Ci19Ci0KIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwpAQCAtMTc2Miw5ICsxNzU3LDYgQEAgdm9pZCBI
ZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKIAogICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJleHRyYU1lbW9yeVNpemUoKSA9ICIsIGV4dHJhTWVtb3J5U2l6ZSgpLCAiLCBj
dXJyZW50SGVhcFNpemUgPSAiLCBjdXJyZW50SGVhcFNpemUsICJcbiIpOwotCi0gICAgaWYgKG1f
bWF4TGl2ZVNpemUgJiYgY3VycmVudEhlYXBTaXplID4gbV9tYXhMaXZlU2l6ZSkKLSAgICAgICAg
ZGlkRXhjZWVkTWF4TGl2ZVNpemUoKTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFw
U2l6ZSgpICYmIGN1cnJlbnRIZWFwU2l6ZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkKICAg
ICAgICAgSGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCmluZGV4IDIwNzVmNjllMDFhLi5iMzhiMjhkOGYwYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaApAQCAtMTMyLDkgKzEzMiw2IEBAIHB1YmxpYzoKIAogICAgIFZNKiB2bSgp
IGNvbnN0OwogCi0gICAgLy8gU2V0IGEgaGFyZCBsaW1pdCB3aGVyZSBKU0Mgd2lsbCBjcmFzaCBp
ZiBsaXZlIGhlYXAgc2l6ZSBleGNlZWRzIGl0LgotICAgIHZvaWQgc2V0TWF4TGl2ZVNpemUoc2l6
ZV90IHNpemUpIHsgbV9tYXhMaXZlU2l6ZSA9IHNpemU7IH0KLQogICAgIE1hcmtlZFNwYWNlJiBv
YmplY3RTcGFjZSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2U7IH0KICAgICBNYWNoaW5lVGhyZWFk
cyYgbWFjaGluZVRocmVhZHMoKSB7IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAKQEAgLTYw
Myw5ICs2MDAsNiBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX2Jsb2NrQnl0ZXNBbGxvY2F0ZWQg
eyAwIH07CiAgICAgc2l6ZV90IG1fZXh0ZXJuYWxNZW1vcnlTaXplIHsgMCB9OwogI2VuZGlmCi0K
LSAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZGlkRXhjZWVkTWF4TGl2ZVNpemUoKTsK
LSAgICBzaXplX3QgbV9tYXhMaXZlU2l6ZSB7IDAgfTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TXV0YXRvclNjaGVkdWxlcj4gbV9zY2hlZHVsZXI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEyOGI3N2QyYTBk
Li42OWFlY2M2YzAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0wMi0wMiAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gSW4tcHJvY2VzcyBtZW1v
cnkgcHJlc3N1cmUgbW9uaXRvciBmb3IgV2ViQ29udGVudCBwcm9jZXNzZXMuCisgICAgICAgIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8xNjc0OTE+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDEx
NjA3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBB
ZGQgYSBXVEYgaGVscGVyIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHRoZSBjdXJyZW50IHByb2Nlc3Mn
cyBtZW1vcnkgZm9vdHByaW50LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9NZW1v
cnlGb290cHJpbnQuY3BwOgorICAgICAgICAoV1RGOjptZW1vcnlGb290cHJpbnQpOgorICAgICAg
ICAqIHd0Zi9NZW1vcnlGb290cHJpbnQuaDoKKwogMjAxNy0wMS0zMSAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggY2FjaGUgY29kZXJzIHRvIGVuY29k
ZSB0aW1lX3BvaW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZmRkODcwMTczOWUuLmU0MmUwYTVlOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTMzNyw2ICszMzcsOCBAQAogCQlBOEE0NzQ4NzE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEu
aCAqLzsgfTsKIAkJQThBNDc0OEMxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEIxNTFBODI2NDAw
NDEyM0ZGIC8qIGNvbmZpZy5oICovOyB9OwogCQlBRDdDNDM0QjFERDJBNEE3MDAyNjg4OEIgLyog
RXhwZWN0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEN0M0MzRBMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovOyB9OworCQlBREYyQ0U2
NjFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyog
TWVtb3J5Rm9vdHByaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2
NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCAqLzsgfTsKIAkJQjM4RkQ3
QkQxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyog
RmVhdHVyZURlZmluZXMuaCAqLzsgfTsKIAkJQzRGOEE5MzcxOUM2NUVCNDAwQjJCMTVEIC8qIFN0
b3B3YXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovOyB9OwogCQlDOEIwRTFB
MUUwMUE0ODZFQjk1RTBEMTEgLyogSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzdFMUQ3REJEODRBQzM4RkFFNEQzNCAvKiBJbmRleFNl
dC5oICovOyB9OwpAQCAtNzE5LDYgKzcyMSw4IEBACiAJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNG
RiAvKiBXVEZUaHJlYWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdU
RlRocmVhZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDc0OEIxNTFB
ODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3QzQzNEExREQyQTRB
NzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV4cGVjdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERjJDRTY0MUUzOUYx
MDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVtb3J5Rm9vdHByaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1
cmVEZWZpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlYXR1cmVEZWZp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0RjhBOTM2MTlDNjVFQjQwMEIy
QjE1RCAvKiBTdG9wd2F0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rv
cHdhdGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FBMTU4NTdEMDMw
MEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDUs
NiArMTAwOSw4IEBACiAJCQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5oICovLAog
CQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovLAogCQkJCUNE
NTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywKKwkJCQlBREYyQ0U2NDFF
MzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8sCisJCQkJQURGMkNFNjUxRTM5
RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi8sCiAJCQkJQThBNDcyQ0MxNTFB
ODI1QjAwNDEyM0ZGIC8qIE1lc3NhZ2VRdWV1ZS5oICovLAogCQkJCUE4QTQ3MkNEMTUxQTgyNUIw
MDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNwcCAqLywKIAkJCQlBOEE0NzJDRTE1MUE4MjVCMDA0
MTIzRkYgLyogTWV0YUFsbG9jYXRvci5oICovLApAQCAtMTQ5NCw2ICsxNTAwLDcgQEAKIAkJCQlB
OEE0NzQxQzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzQxRTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQ0RFRDBGNDE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQURGMkNFNjYxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQ2OTQxOTIxNkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUwOThCMDAxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0RjNCMEY3MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0
ZWRBcml0aG1ldGljLmggaW4gSGVhZGVycyAqLywKQEAgLTE3MDEsNiArMTcwOCw3IEBACiAJCQkJ
MUFDQUREODQxODg0NDgwMTAwRDhCNzFEIC8qIERlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJp
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQUUxNTFBODI1QjAwNDEyM0ZGIC8qIGRpeS1m
cC5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3Vi
bGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2VzICovLAorCQkJCUFERjJDRTY3MUUzOUYxMDYwMDY4
ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQkEx
NTFBODI1QjAwNDEyM0ZGIC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjMx
NTFBODI1QjAwNDEyM0ZGIC8qIGZhc3QtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTBGN0M1
RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA1OGMxMTZiZGQxMS4uODFhZjkxMjc2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CkBAIC02NCw2ICs2NCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIE1hbGxv
Y1B0ci5oCiAgICAgTWF0aEV4dHJhcy5oCiAgICAgTWVkaWFUaW1lLmgKKyAgICBNZW1vcnlGb290
cHJpbnQuaAogICAgIE1lc3NhZ2VRdWV1ZS5oCiAgICAgTWV0YUFsbG9jYXRvci5oCiAgICAgTWV0
YUFsbG9jYXRvckhhbmRsZS5oCkBAIC0yMDQsNiArMjA1LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAg
ICAgTUQ1LmNwcAogICAgIE1haW5UaHJlYWQuY3BwCiAgICAgTWVkaWFUaW1lLmNwcAorICAgIE1l
bW9yeUZvb3RwcmludC5jcHAKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE1vbm90b25pY1Rp
bWUuY3BwCiAgICAgTnVtYmVyT2ZDb3Jlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeUZvb3RwcmludC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kY2MwZGU2MTFiMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorI2luY2x1ZGUgPG1hY2gv
dGFza19pbmZvLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK3N0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBtZW1vcnlGb290cHJpbnQoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHRh
c2tfdm1faW5mb19kYXRhX3Qgdm1JbmZvOworICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgY291
bnQgPSBUQVNLX1ZNX0lORk9fQ09VTlQ7CisgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNr
X2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19WTV9JTkZPLCAodGFza19pbmZvX3QpICZ2bUlu
Zm8sICZjb3VudCk7CisgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4odm1JbmZv
LnBoeXNfZm9vdHByaW50KTsKKyNlbHNlCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNlbmRp
ZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuaCBi
L1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi43YjhlY2E4ZTk3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeUZvb3RwcmludC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlGb290
cHJpbnQoKTsKKworfQorCit1c2luZyBXVEY6Om1lbW9yeUZvb3RwcmludDsKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDdiMGZjYjRjM2YxLi5kMzU0ZjFiY2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBA
CisyMDE3LTAyLTAyICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAg
ICBbTWFjXSBJbi1wcm9jZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25pdG9yIGZvciBXZWJDb250ZW50
IHByb2Nlc3NlcyBBS0Egd2Vic2FtCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjc0
OTE+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDExNjA3Mj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgYSBuZXcgdGltZXItYmFzZWQgbWVt
b3J5IHByZXNzdXJlIG1vbml0b3IgdGhhdCBjaGVja3MgdGhlIHByb2Nlc3MgbWVtb3J5CisgICAg
ICAgIGZvb3RwcmludCBldmVyeSAzMCBzZWNvbmRzIGFuZCByZWFjdHMgdG8gY2hhbmdlcyBieSBz
ZXR0aW5nIGEgTWVtb3J5VXNhZ2VQb2xpY3kuCisKKyAgICAgICAgVGhlcmUgYXJlIGZvdXIgTWVt
b3J5VXNhZ2VQb2xpY3kgdmFsdWVzOgorCisgICAgICAgICAgICAtIFVucmVzdHJpY3RlZCAoYmVs
b3cgMUdCKQorICAgICAgICAgICAgLSBDb25zZXJ2YXRpdmUgKGFib3ZlIDFHQikKKyAgICAgICAg
ICAgIC0gU3RyaWN0IChhYm92ZSAyR0IpCisgICAgICAgICAgICAtIFBhbmljIChhYm92ZSA0R0Is
IG9yIDNHQiBpZiAzMi1iaXQpCisKKyAgICAgICAgRm9yIFN0cmljdCBhbmQgYWJvdmUsIHRoZSBv
bGQtc3R5bGUgImlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpIiBBUEkgd2lsbCByZXR1cm4gdHJ1ZS4K
KworICAgICAgICBUcmFuc2l0aW9uaW5nIHRvIGEgaGlnaGVyIHBvbGljeSB3aWxsIGNhdXNlIG1l
bW9yeSBwcmVzc3VyZSBoYW5kbGVycyB0byBydW46CisKKyAgICAgICAgQXQgU3RyaWN0LCB3ZSBy
dW4gdGhlICJub24tY3JpdGljYWwiIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyLCB0aGVuIGNhcnJ5
IG9uLgorCisgICAgICAgIEF0IFBhbmljLCB3ZSBydW4gdGhlICJjcml0aWNhbCIgbWVtb3J5IHBy
ZXNzdXJlIGhhbmRsZXIuIElmIHRoYXQgZmFpbHMgdG8gcmVjb3ZlcgorICAgICAgICBlbm91Z2gg
bWVtb3J5IHRvIGJyaW5nIHVzIGJhY2sgYmVsb3cgNEdCLCB3ZSBtYXkga2lsbCB0aGUgcHJvY2Vz
czoKKworICAgICAgICBBIHByb2Nlc3MgaXMgZWxpZ2libGUgdG8gZ2V0IGtpbGxlZCBmb3IgdXNp
bmcgdG9vIG11Y2ggbWVtb3J5IGlmOgorCisgICAgICAgICAgICAtIEl0J3Mgbm90IHZpc2libGUg
b24gc2NyZWVuIChpLmUgaXQncyBhIGJhY2tncm91bmQgdGFiLikKKyAgICAgICAgICAgIC0gSXQn
cyBub3QgcGxheWluZyBhdWRpby4KKyAgICAgICAgICAgIC0gSXQgaGFzIG5vdCBwZXJmb3JtZWQg
YSBtYWluIGZyYW1lIG5hdmlnYXRpb24gaW4gdGhlIGxhc3QgaG91ci4KKworICAgICAgICBCZWZv
cmUga2lsbGluZyB0aGUgcHJvY2VzcywgYW4gZXhpdC10aW1lIGNhbGxiYWNrIHdpbGwgcnVuLiBU
aGlzIHBhdGNoIGluc3RhbGxzIHN1Y2gKKyAgICAgICAgYSBjYWxsYmFjayB0aGF0IHByaW50cyBv
dXQgc29tZSB0aW1lLW9mLWRlYXRoIHN0YXRpc3RpY3MgYWJvdXQgQysrIGFuZCBKYXZhU2NyaXB0
IG1lbW9yeSB1c2FnZQorICAgICAgICB0byBob3BlZnVsbHkgaGVscCB1bmRlcnN0YW5kIHdoYXQg
d2FzIHNvYWtpbmcgdXAgYWxsIHRoZSBtZW1vcnkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9D
b21tb25WTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21tb25WTVNsb3cpOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
c2V0U3RhdGUpOgorICAgICAgICAqIHBhZ2UvTWFpbkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5GcmFtZTo6ZGlkQ29tcGxldGVMb2FkKToKKyAgICAgICAgKiBwYWdlL01haW5GcmFt
ZS5oOgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYWdlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6bG9nTWVtb3J5U3RhdGlzdGljc0F0VGlt
ZU9mRGVhdGgpOgorICAgICAgICAoV2ViQ29yZTo6ZGlkRXhjZWVkTWVtb3J5TGltaXRBbmRGYWls
ZWRUb1JlY292ZXIpOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1v
cnlLaWxsKToKKyAgICAgICAgKiBwYWdlL01lbW9yeVJlbGVhc2UuaDoKKyAgICAgICAgKiBwYWdl
L1Jlc291cmNlVXNhZ2VUaHJlYWQuaDoKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNh
Z2VUaHJlYWRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnZtUGFnZVNpemUpOgorICAgICAg
ICAqIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVt
b3J5TW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjp0aHJlc2hvbGRGb3JQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6cG9saWN5Rm9yRm9v
dHByaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3Vy
ZW1lbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0RGlkRXhj
ZWVkTWVtb3J5TGltaXRBbmRGYWlsZWRUb1JlY292ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFByb2Nlc3NJc0VsaWdpYmxlRm9yTWVtb3J5
S2lsbENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
aXNVbmRlck1lbW9yeVByZXNzdXJlKToKKwogMjAxNy0wMi0wMSAgRW5yaXF1ZSBPY2HDsWEgR29u
esOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW01TRV0g
cXRkZW11eDogVXBkYXRlIHRoZSB0ZmR0IHBhdGNoIHRvIHRoZSB2ZXJzaW9uIGZpbmFsbHkgYWNj
ZXB0ZWQgdXBzdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nv
bW1vblZNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcAppbmRl
eCBiMWIwNmFhMDc0MC4uMGQ1YTRhNjA2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0NvbW1vblZNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9D
b21tb25WTS5jcHAKQEAgLTQ2LDEwICs0Niw2IEBAIFZNJiBjb21tb25WTVNsb3coKQogICAgIAog
ICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBnX2NvbW1v
blZNT3JOdWxsID0gJlZNOjpjcmVhdGVMZWFrZWQoTGFyZ2VIZWFwKS5sZWFrUmVmKCk7Ci0jaWYg
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4R0NI
ZWFwU2l6ZSA9IDQgKiBHQjsKLSAgICBnX2NvbW1vblZNT3JOdWxsLT5oZWFwLnNldE1heExpdmVT
aXplKG1heEdDSGVhcFNpemUpOwotI2VuZGlmCiAgICAgZ19jb21tb25WTU9yTnVsbC0+aGVhcC5h
Y3F1aXJlQWNjZXNzKCk7IC8vIEF0IGFueSB0aW1lLCB3ZSBtYXkgZG8gdGhpbmdzIHRoYXQgYWZm
ZWN0IHRoZSBHQy4KICNpZiAhUExBVEZPUk0oSU9TKQogICAgIGdfY29tbW9uVk1Pck51bGwtPnNl
dEV4Y2x1c2l2ZVRocmVhZChzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiMjE5NGNjNGJmYi4uNGEwODI3OWM4MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTc0Miw3ICsxNzQyLDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6c2V0U3RhdGUoRnJhbWVTdGF0ZSBuZXdTdGF0ZSkKICAgICAgICAg
aWYgKG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5zdG9w
UmVjb3JkaW5nUmVzcG9uc2VzKCk7CiAgICAgICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkg
JiYgb2xkU3RhdGUgIT0gbmV3U3RhdGUpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWluRnJh
bWUmPihtX2ZyYW1lKS5wZXJmb3JtYW5jZUxvZ2dpbmcoKS5kaWRSZWFjaFBvaW50T2ZJbnRlcmVz
dChQZXJmb3JtYW5jZUxvZ2dpbmc6Ok1haW5GcmFtZUxvYWRDb21wbGV0ZWQpOworICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8TWFpbkZyYW1lJj4obV9mcmFtZSkuZGlkQ29tcGxldGVMb2FkKCk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01haW5GcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01haW5GcmFtZS5jcHAKaW5kZXggYTE3YmUzYmI1M2EuLjhi
NmJlMzEzMmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01haW5GcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NYWluRnJhbWUuY3BwCkBAIC05NSw2ICs5NSwxMiBA
QCB2b2lkIE1haW5GcmFtZTo6ZHJvcENoaWxkcmVuKCkKICAgICAgICAgdHJlZSgpLnJlbW92ZUNo
aWxkKCpjaGlsZCk7CiB9CiAKK3ZvaWQgTWFpbkZyYW1lOjpkaWRDb21wbGV0ZUxvYWQoKQorewor
ICAgIG1fdGltZU9mTGFzdENvbXBsZXRlZExvYWQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAg
ICBwZXJmb3JtYW5jZUxvZ2dpbmcoKS5kaWRSZWFjaFBvaW50T2ZJbnRlcmVzdChQZXJmb3JtYW5j
ZUxvZ2dpbmc6Ok1haW5GcmFtZUxvYWRDb21wbGV0ZWQpOworfQorCiAjaWYgUExBVEZPUk0oTUFD
KQogU2Nyb2xsTGF0Y2hpbmdTdGF0ZSogTWFpbkZyYW1lOjpsYXRjaGluZ1N0YXRlKCkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01haW5GcmFtZS5oCmluZGV4IDNlMDg4ZjBiYmQ0Li4zNjlkZGJhZWQzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NYWluRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01haW5GcmFtZS5oCkBAIC02OSw2ICs2OSw5IEBAIHB1YmxpYzoKIAogICAgIFBlcmZv
cm1hbmNlTG9nZ2luZyYgcGVyZm9ybWFuY2VMb2dnaW5nKCkgY29uc3QgeyByZXR1cm4gKm1fcGVy
Zm9ybWFuY2VMb2dnaW5nOyB9CiAKKyAgICB2b2lkIGRpZENvbXBsZXRlTG9hZCgpOworICAgIE1v
bm90b25pY1RpbWUgdGltZU9mTGFzdENvbXBsZXRlZExvYWQoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVPZkxhc3RDb21wbGV0ZWRMb2FkOyB9CisKIHByaXZhdGU6CiAgICAgTWFpbkZyYW1lKFBhZ2Um
LCBQYWdlQ29uZmlndXJhdGlvbiYpOwogCkBAIC05MSw2ICs5NCw4IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQZXJmb3JtYW5jZUxvZ2dpbmc+IG1fcGVyZm9ybWFu
Y2VMb2dnaW5nOworCisgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPZkxhc3RDb21wbGV0ZWRMb2Fk
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKaW5kZXggZDY0NDQ0Y2YwZGEuLjM2NjEyYTgxYTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTI5LDEyICsyOSwxNSBAQAogI2luY2x1ZGUgIkNTU1Zh
bHVlUG9vbC5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5o
IgorI2luY2x1ZGUgIkNvbW1vblZNLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJIVE1M
TWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5saW5lU3R5bGVTaGVldE93bmVyLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgpAQCAtNDUsNiArNDgsMTAgQEAKICNp
bmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCisj
aWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUmVzb3VyY2VVc2FnZVRocmVhZC5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNyaXRp
Y2FsTWVtb3J5KCkKQEAgLTEyOCw2ICsxMzUsODggQEAgdm9pZCByZWxlYXNlTWVtb3J5KENyaXRp
Y2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKICNlbmRpZgogfQogCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMgdW5zaWduZWQgcGFnZUNvdW50KCkKK3sKKyAg
ICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgUGFnZTo6Zm9yRWFjaFBhZ2UoWyZdIChQYWdlJiBw
YWdlKSB7CisgICAgICAgIGlmICghcGFnZS5pc1V0aWxpdHlQYWdlKCkpCisgICAgICAgICAgICAr
K2NvdW50OworICAgIH0pOworICAgIHJldHVybiBjb3VudDsKK30KKyNlbmRpZgorCit2b2lkIGxv
Z01lbW9yeVN0YXRpc3RpY3NBdFRpbWVPZkRlYXRoKCkKK3sKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIHBhZ2VTaXplID0gdm1QYWdlU2l6
ZSgpOworICAgIGF1dG8gcGFnZXMgPSBwYWdlc1BlclZNVGFnKCk7CisKKyAgICBSRUxFQVNFX0xP
RyhNZW1vcnlQcmVzc3VyZSwgIkRpcnR5IG1lbW9yeSBwZXIgVk0gdGFnIGF0IHRpbWUgb2YgZGVh
dGg6Iik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CisgICAgICAg
IHNpemVfdCBkaXJ0eSA9IHBhZ2VzW2ldLmRpcnR5ICogcGFnZVNpemU7CisgICAgICAgIGlmICgh
ZGlydHkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgU3RyaW5nIHRhZ05hbWUgPSBk
aXNwbGF5TmFtZUZvclZNVGFnKGkpOworICAgICAgICBpZiAoIXRhZ05hbWUpCisgICAgICAgICAg
ICB0YWdOYW1lID0gU3RyaW5nOjpmb3JtYXQoIlRhZyAldSIsIGkpOworICAgICAgICBSRUxFQVNF
X0xPRyhNZW1vcnlQcmVzc3VyZSwgIiUxNnM6ICVsdSBNQiIsIHRhZ05hbWUubGF0aW4xKCkuZGF0
YSgpLCBkaXJ0eSAvIE1CKTsKKyAgICB9CisjZW5kaWYKKworICAgIGF1dG8mIHZtID0gY29tbW9u
Vk0oKTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeSB1c2FnZSBzdGF0
aXN0aWNzIGF0IHRpbWUgb2YgZGVhdGg6Iik7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1
cmUsICJHQyBoZWFwIHNpemU6ICV6dSIsIHZtLmhlYXAuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xP
RyhNZW1vcnlQcmVzc3VyZSwgIkdDIGhlYXAgZXh0cmEgbWVtb3J5IHNpemU6ICV6dSIsIHZtLmhl
YXAuZXh0cmFNZW1vcnlTaXplKCkpOworI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKKyAgICBS
RUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkdDIGhlYXAgZXh0ZXJuYWwgbWVtb3J5OiAlenUi
LCB2bS5oZWFwLmV4dGVybmFsTWVtb3J5U2l6ZSgpKTsKKyNlbmRpZgorICAgIFJFTEVBU0VfTE9H
KE1lbW9yeVByZXNzdXJlLCAiR2xvYmFsIG9iamVjdCBjb3VudDogJXp1Iiwgdm0uaGVhcC5nbG9i
YWxPYmplY3RDb3VudCgpKTsKKworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiUGFn
ZSBjb3VudDogJXUiLCBwYWdlQ291bnQoKSk7CisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1
cmUsICJEb2N1bWVudCBjb3VudDogJXUiLCBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkuc2l6ZSgp
KTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkxpdmUgSmF2YVNjcmlwdCBvYmpl
Y3RzOiIpOworICAgIGZvciAoYXV0byYgaXQgOiAqdm0uaGVhcC5vYmplY3RUeXBlQ291bnRzKCkp
CisgICAgICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiICAlczogJWQiLCBpdC5rZXks
IGl0LnZhbHVlKTsKKyNlbmRpZgorfQorCit2b2lkIGRpZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFp
bGVkVG9SZWNvdmVyKCkKK3sKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkNyYXNo
aW5nIG5vbi12aXNpYmxlIHByb2Nlc3MgZHVlIHRvIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2UgKyBp
bmFiaWxpdHkgdG8gZnJlZSB1cCBtZW1vcnkgYmVsb3cgcGFuaWMgdGhyZXNob2xkLiIpOworICAg
IGxvZ01lbW9yeVN0YXRpc3RpY3NBdFRpbWVPZkRlYXRoKCk7CisgICAgQ1JBU0goKTsKK30KKwor
Ym9vbCBwcm9jZXNzSXNFbGlnaWJsZUZvck1lbW9yeUtpbGwoKQoreworICAgIGJvb2wgaGFzVmlz
aWJsZVBhZ2VzID0gZmFsc2U7CisgICAgYm9vbCBoYXNBdWRpYmxlUGFnZXMgPSBmYWxzZTsKKyAg
ICBib29sIGhhc01haW5GcmFtZU5hdmlnYXRlZEluVGhlTGFzdEhvdXIgPSBmYWxzZTsKKworICAg
IGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgUGFnZTo6Zm9yRWFjaFBhZ2Uo
WyZdIChQYWdlJiBwYWdlKSB7CisgICAgICAgIGlmIChwYWdlLmlzVXRpbGl0eVBhZ2UoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHBhZ2UuaXNWaXNpYmxlKCkpCisgICAgICAg
ICAgICBoYXNWaXNpYmxlUGFnZXMgPSB0cnVlOworICAgICAgICBpZiAocGFnZS5hY3Rpdml0eVN0
YXRlKCkgJiBBY3Rpdml0eVN0YXRlOjpJc0F1ZGlibGUpCisgICAgICAgICAgICBoYXNBdWRpYmxl
UGFnZXMgPSB0cnVlOworICAgICAgICBpZiAoYXV0byB0aW1lT2ZMYXN0Q29tcGxldGVkTG9hZCA9
IHBhZ2UubWFpbkZyYW1lKCkudGltZU9mTGFzdENvbXBsZXRlZExvYWQoKSkgeworICAgICAgICAg
ICAgaWYgKG5vdyAtIHRpbWVPZkxhc3RDb21wbGV0ZWRMb2FkIDw9IFNlY29uZHM6OmZyb21NaW51
dGVzKDYwKSkKKyAgICAgICAgICAgICAgICBoYXNNYWluRnJhbWVOYXZpZ2F0ZWRJblRoZUxhc3RI
b3VyID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYm9vbCBlbGlnaWJsZSA9ICFo
YXNWaXNpYmxlUGFnZXMgJiYgIWhhc0F1ZGlibGVQYWdlcyAmJiAhaGFzTWFpbkZyYW1lTmF2aWdh
dGVkSW5UaGVMYXN0SG91cjsKKyAgICBpZiAoIWVsaWdpYmxlKQorICAgICAgICBSRUxFQVNFX0xP
RyhNZW1vcnlQcmVzc3VyZSwgIlByb2Nlc3Mgbm90IGVsaWdpYmxlIGZvciBwYW5pYyBtZW1vcnkg
a2lsbC4gUmVhc29uczogaGFzVmlzaWJsZVBhZ2VzPSV1LCBoYXNBdWRpYmxlUGFnZXM9JXUsIGhh
c01haW5GcmFtZU5hdmlnYXRlZEluVGhlTGFzdEhvdXI9JXUiLCBoYXNWaXNpYmxlUGFnZXMsIGhh
c0F1ZGlibGVQYWdlcywgaGFzTWFpbkZyYW1lTmF2aWdhdGVkSW5UaGVMYXN0SG91cik7CisKKyAg
ICByZXR1cm4gZWxpZ2libGU7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIHBsYXRm
b3JtUmVsZWFzZU1lbW9yeShDcml0aWNhbCkgeyB9CiB2b2lkIGpldHRpc29uRXhwZW5zaXZlT2Jq
ZWN0c09uVG9wTGV2ZWxOYXZpZ2F0aW9uKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lbW9yeVJlbGVhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFz
ZS5oCmluZGV4IDFkOTkzNzJjYWYyLi5jZDQxMGExMmM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1v
cnlSZWxlYXNlLmgKQEAgLTMzLDUgKzMzLDggQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxlYXNl
TWVtb3J5KENyaXRpY2FsLCBTeW5jaHJvbm91cyk7CiB2b2lkIHBsYXRmb3JtUmVsZWFzZU1lbW9y
eShDcml0aWNhbCk7CiB2b2lkIGpldHRpc29uRXhwZW5zaXZlT2JqZWN0c09uVG9wTGV2ZWxOYXZp
Z2F0aW9uKCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyTWVtb3J5UmVsZWFzZU5vdGlm
eUNhbGxiYWNrcygpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2dNZW1vcnlTdGF0aXN0aWNzQXRU
aW1lT2ZEZWF0aCgpOworV0VCQ09SRV9FWFBPUlQgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lk
IGRpZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFpbGVkVG9SZWNvdmVyKCk7CitXRUJDT1JFX0VYUE9S
VCBib29sIHByb2Nlc3NJc0VsaWdpYmxlRm9yTWVtb3J5S2lsbCgpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oCmluZGV4
IGQ5NzFmNWVhODM5Li4xOGExZTY3NTQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJj
ZVVzYWdlVGhyZWFkLmgKQEAgLTgwLDYgKzgwLDcgQEAgc3RydWN0IFRhZ0luZm8gewogfTsKIAog
Y29uc3QgY2hhciogZGlzcGxheU5hbWVGb3JWTVRhZyh1bnNpZ25lZCk7CitzaXplX3Qgdm1QYWdl
U2l6ZSgpOwogc3RkOjphcnJheTxUYWdJbmZvLCAyNTY+IHBhZ2VzUGVyVk1UYWcoKTsKIHZvaWQg
bG9nRm9vdHByaW50Q29tcGFyaXNvbihjb25zdCBzdGQ6OmFycmF5PFRhZ0luZm8sIDI1Nj4mLCBj
b25zdCBzdGQ6OmFycmF5PFRhZ0luZm8sIDI1Nj4mKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbQppbmRleCA2
OTEzNmFkZjRmNy4uMDY0YTYxYWNjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCkBAIC0zNyw3ICszNyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHNpemVfdCB2bVBhZ2VTaXplKCkKK3NpemVf
dCB2bVBhZ2VTaXplKCkKIHsKICNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMDAwMAogICAgIHJldHVybiB2bV9rZXJuZWxfcGFnZV9zaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAKaW5kZXggYjlhYzBlNTkwMGQuLjhiZDM3YjhiYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgogCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlGb290cHJpbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zOSwxMiArNDAsMTIzIEBAIE1lbW9yeVByZXNzdXJlSGFuZGxlciYgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKQogfQogCiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
Ok1lbW9yeVByZXNzdXJlSGFuZGxlcigpCisgICAgOiBtX21lYXN1cmVtZW50VGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVy
RmlyZWQpCiAjaWYgT1MoTElOVVgpCi0gICAgOiBtX2hvbGRPZmZUaW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZUaW1lckZpcmVkKQorICAg
ICwgbV9ob2xkT2ZmVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpob2xkT2ZmVGltZXJGaXJlZCkKICNlbmRpZgogewogfQogCit2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25pdG9yKGJvb2wgdXNl
KQoreworICAgIGlmICh1c2UpCisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lci5zdGFydFJlcGVh
dGluZygzMCk7CisgICAgZWxzZQorICAgICAgICBtX21lYXN1cmVtZW50VGltZXIuc3RvcCgpOwor
fQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMgY29uc3QgY2hhciogdG9TdHJp
bmcoTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5KQoreworICAgIHN3aXRjaCAocG9saWN5KSB7Cisg
ICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0cmljdGVkOiByZXR1cm4gIlVucmVzdHJp
Y3RlZCI7CisgICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6Q29uc2VydmF0aXZlOiByZXR1cm4g
IkNvbnNlcnZhdGl2ZSI7CisgICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0OiByZXR1
cm4gIlN0cmljdCI7CisgICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6UGFuaWM6IHJldHVybiAi
UGFuaWMiOworICAgIH0KK30KKyNlbmRpZgorCitzdGF0aWMgc2l6ZV90IHRocmVzaG9sZEZvclBv
bGljeShNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kpCit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsK
KyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpDb25zZXJ2YXRpdmU6CisgICAgICAgIHJldHVy
biAxICogR0I7CisgICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0OgorICAgICAgICBy
ZXR1cm4gMiAqIEdCOworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljOgorI2lmIENQ
VShYODZfNjQpIHx8IENQVShBUk02NCkKKyAgICAgICAgcmV0dXJuIDQgKiBHQjsKKyNlbHNlCisg
ICAgICAgIHJldHVybiAzICogR0I7CisjZW5kaWYKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5
OjpVbnJlc3RyaWN0ZWQ6CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIE1lbW9yeVVzYWdlUG9s
aWN5IHBvbGljeUZvckZvb3RwcmludChzaXplX3QgZm9vdHByaW50KQoreworICAgIGlmIChmb290
cHJpbnQgPj0gdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYykpCisg
ICAgICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6UGFuaWM7CisgICAgaWYgKGZvb3Rwcmlu
dCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdCkpCisgICAg
ICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0OworICAgIGlmIChmb290cHJpbnQg
Pj0gdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5OjpDb25zZXJ2YXRpdmUpKQor
ICAgICAgICByZXR1cm4gTWVtb3J5VXNhZ2VQb2xpY3k6OkNvbnNlcnZhdGl2ZTsKKyAgICByZXR1
cm4gTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZDsKK30KKwordm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCgpCit7CisgICAgYXV0byBmb290cHJp
bnQgPSBtZW1vcnlGb290cHJpbnQoKTsKKyAgICBpZiAoIWZvb3RwcmludCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJDdXJyZW50IG1lbW9yeSBm
b290cHJpbnQ6ICVsdSBNQiIsIGZvb3RwcmludC52YWx1ZSgpIC8gTUIpOworCisgICAgYXV0byBu
ZXdQb2xpY3kgPSBwb2xpY3lGb3JGb290cHJpbnQoZm9vdHByaW50LnZhbHVlKCkpOworICAgIGlm
IChuZXdQb2xpY3kgPT0gbV9tZW1vcnlVc2FnZVBvbGljeSkgeworICAgICAgICBpZiAobV9tZW1v
cnlVc2FnZVBvbGljeSAhPSBNZW1vcnlVc2FnZVBvbGljeTo6UGFuaWMpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTWVtb3J5IHVzYWdl
IHN0aWxsIGFib3ZlIHBhbmljIHRocmVzaG9sZCIpOworICAgIH0gZWxzZQorICAgICAgICBSRUxF
QVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeSB1c2FnZSBwb2xpY3kgY2hhbmdlZDogJXMg
LT4gJXMiLCB0b1N0cmluZyhtX21lbW9yeVVzYWdlUG9saWN5KSwgdG9TdHJpbmcobmV3UG9saWN5
KSk7CisKKyAgICBtX21lbW9yeVVzYWdlUG9saWN5ID0gbmV3UG9saWN5OworCisgICAgaWYgKG5l
d1BvbGljeSA9PSBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0cmljdGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobmV3UG9saWN5ID09IE1lbW9yeVVzYWdlUG9saWN5OjpDb25zZXJ2YXRp
dmUpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBvbGljeSBieSBjaG9vc2lu
ZyB3aGljaCBjYWNoZXMgc2hvdWxkIHJlc3BlY3QgaXQsIGFuZCBob29raW5nIHRoZW0gdXAuIAor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5ld1BvbGljeSA9PSBNZW1vcnlVc2Fn
ZVBvbGljeTo6U3RyaWN0KSB7CisgICAgICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAi
QXR0ZW1wdGluZyB0byByZWR1Y2UgbWVtb3J5IGZvb3RwcmludCBieSBmcmVlaW5nIGxlc3MgaW1w
b3J0YW50IG9iamVjdHMuIik7CisgICAgICAgIHJlbGVhc2VNZW1vcnkoQ3JpdGljYWw6Ok5vLCBT
eW5jaHJvbm91czo6Tm8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUkVMRUFTRV9B
U1NFUlQobmV3UG9saWN5ID09IE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYyk7CisKKyAgICBSRUxF
QVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkF0dGVtcHRpbmcgdG8gcmVkdWNlIG1lbW9yeSBmb290
cHJpbnQgYnkgZnJlZWluZyBtb3JlIGltcG9ydGFudCBvYmplY3RzLiIpOworICAgIGlmIChtX3By
b2Nlc3NJc0VsaWdpYmxlRm9yTWVtb3J5S2lsbENhbGxiYWNrKSB7CisgICAgICAgIGlmICghbV9w
cm9jZXNzSXNFbGlnaWJsZUZvck1lbW9yeUtpbGxDYWxsYmFjaygpKSB7CisgICAgICAgICAgICBy
ZWxlYXNlTWVtb3J5KENyaXRpY2FsOjpZZXMsIFN5bmNocm9ub3VzOjpObyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZWxlYXNlTWVtb3J5KENyaXRpY2Fs
OjpZZXMsIFN5bmNocm9ub3VzOjpZZXMpOworCisgICAgLy8gUmVtZWFzdXJlIGZvb3RwcmludCB0
byBzZWUgaG93IHdlbGwgdGhlIHByZXNzdXJlIGhhbmRsZXIgZGlkLgorICAgIGZvb3RwcmludCA9
IG1lbW9yeUZvb3RwcmludCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGZvb3RwcmludCk7CisKKyAg
ICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk5ldyBtZW1vcnkgZm9vdHByaW50OiAlbHUg
TUIiLCBmb290cHJpbnQudmFsdWUoKSAvIE1CKTsKKyAgICBpZiAoZm9vdHByaW50LnZhbHVlKCkg
PCB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljKSkgeworICAgICAg
ICBtX21lbW9yeVVzYWdlUG9saWN5ID0gcG9saWN5Rm9yRm9vdHByaW50KGZvb3RwcmludC52YWx1
ZSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJQcmVzc3VyZSByZWR1
Y2VkIGJlbG93IHBhbmljIHRocmVzaG9sZC4gTmV3IG1lbW9yeSB1c2FnZSBwb2xpY3k6ICVzIiwg
dG9TdHJpbmcobV9tZW1vcnlVc2FnZVBvbGljeSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKG1fZGlkRXhjZWVkTWVtb3J5TGltaXRBbmRGYWlsZWRUb1JlY292ZXJDYWxsYmFj
aykKKyAgICAgICAgbV9kaWRFeGNlZWRNZW1vcnlMaW1pdEFuZEZhaWxlZFRvUmVjb3ZlckNhbGxi
YWNrKCk7Cit9CisKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpiZWdpblNpbXVsYXRlZE1l
bW9yeVByZXNzdXJlKCkKIHsKICAgICBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgK
aW5kZXggNjAxYTQxZWRhZTguLjIxZDFkMjNiNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaApAQCAtMzQsMTYgKzM0LDE2IEBACiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiAjaWYg
UExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaD4KLSNlbGlmIE9TKExJTlVYKQotI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisjZW5kaWYKKwogI2lmIFVTRShHTElCKQogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIu
aD4KICNlbmRpZgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNiArNTUs
MTMgQEAgZW51bSBNZW1vcnlQcmVzc3VyZVJlYXNvbiB7CiB9OwogI2VuZGlmCiAKK2VudW0gY2xh
c3MgTWVtb3J5VXNhZ2VQb2xpY3kgeworICAgIFVucmVzdHJpY3RlZCwgLy8gQWxsb2NhdGUgYXMg
bXVjaCBhcyB5b3Ugd2FudAorICAgIENvbnNlcnZhdGl2ZSwgLy8gTWF5YmUgeW91IGRvbid0IGNh
Y2hlIGV2ZXJ5IHNpbmdsZSB0aGluZworICAgIFN0cmljdCwgLy8gVGltZSB0byBzdGFydCBwaW5j
aGluZyBwZW5uaWVzIGZvciByZWFsCisgICAgUGFuaWMsIC8vIE9IIEdPRCBXRSdSRSBTSU5LSU5H
LCBUSFJPVyBFVkVSWVRISU5HIE9WRVJCT0FSRAorfTsKKwogZW51bSBjbGFzcyBDcml0aWNhbCB7
IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgU3luY2hyb25vdXMgeyBObywgWWVzIH07CiAKQEAgLTY4
LDEyICs3NSwyNCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc3RhbGwo
KTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlN
b25pdG9yKGJvb2wpOworCisgICAgdm9pZCBzZXREaWRFeGNlZWRNZW1vcnlMaW1pdEFuZEZhaWxl
ZFRvUmVjb3ZlckNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikgeyBtX2Rp
ZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFpbGVkVG9SZWNvdmVyQ2FsbGJhY2sgPSBXVEZNb3ZlKGZ1
bmN0aW9uKTsgfQorICAgIHZvaWQgc2V0UHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1vcnlLaWxsQ2Fs
bGJhY2soV1RGOjpGdW5jdGlvbjxib29sKCk+IGZ1bmN0aW9uKSB7IG1fcHJvY2Vzc0lzRWxpZ2li
bGVGb3JNZW1vcnlLaWxsQ2FsbGJhY2sgPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQorCiAgICAgdm9p
ZCBzZXRMb3dNZW1vcnlIYW5kbGVyKExvd01lbW9yeUhhbmRsZXImJiBoYW5kbGVyKQogICAgIHsK
ICAgICAgICAgbV9sb3dNZW1vcnlIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKICAgICB9CiAK
LSAgICBib29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJN
ZW1vcnlQcmVzc3VyZSB8fCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlOyB9CisgICAgYm9v
bCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
dW5kZXJNZW1vcnlQcmVzc3VyZQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgICAgIHx8IG1f
bWVtb3J5VXNhZ2VQb2xpY3kgPj0gTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdAorI2VuZGlmCisg
ICAgICAgICAgICB8fCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlOworICAgIH0KICAgICB2
b2lkIHNldFVuZGVyTWVtb3J5UHJlc3N1cmUoYm9vbCBiKSB7IG1fdW5kZXJNZW1vcnlQcmVzc3Vy
ZSA9IGI7IH0KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTE0OSw2ICsxNjgsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwsIFN5bmNocm9ub3Vz
ID0gU3luY2hyb25vdXM6Ok5vKTsKICAgICB2b2lkIHBsYXRmb3JtUmVsZWFzZU1lbW9yeShDcml0
aWNhbCk7CiAKKyAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZGlkRXhjZWVkTWVtb3J5
TGltaXRBbmRGYWlsZWRUb1JlY292ZXIoKTsKKyAgICB2b2lkIG1lYXN1cmVtZW50VGltZXJGaXJl
ZCgpOworCiAjaWYgT1MoTElOVVgpCiAgICAgY2xhc3MgRXZlbnRGRFBvbGxlciB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50RkRQb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKQEAgLTE3MCwxMiArMTkyLDE2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wg
bV9pbnN0YWxsZWQgeyBmYWxzZSB9OwotICAgIHRpbWVfdCBtX2xhc3RSZXNwb25kVGltZSB7IDAg
fTsKICAgICBMb3dNZW1vcnlIYW5kbGVyIG1fbG93TWVtb3J5SGFuZGxlcjsKIAogICAgIHN0ZDo6
YXRvbWljPGJvb2w+IG1fdW5kZXJNZW1vcnlQcmVzc3VyZTsKICAgICBib29sIG1faXNTaW11bGF0
aW5nTWVtb3J5UHJlc3N1cmUgeyBmYWxzZSB9OwogCisgICAgUnVuTG9vcDo6VGltZXI8TWVtb3J5
UHJlc3N1cmVIYW5kbGVyPiBtX21lYXN1cmVtZW50VGltZXI7CisgICAgTWVtb3J5VXNhZ2VQb2xp
Y3kgbV9tZW1vcnlVc2FnZVBvbGljeSB7IE1lbW9yeVVzYWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQg
fTsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9kaWRFeGNlZWRNZW1vcnlMaW1pdEFuZEZh
aWxlZFRvUmVjb3ZlckNhbGxiYWNrOworICAgIFdURjo6RnVuY3Rpb248Ym9vbCgpPiBtX3Byb2Nl
c3NJc0VsaWdpYmxlRm9yTWVtb3J5S2lsbENhbGxiYWNrOworCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIC8vIEZJWE1FOiBDYW4gd2Ugc2hhcmUgbW9yZSBvZiB0aGlzIHdpdGggT3BlblNvdXJjZT8K
ICAgICB1aW50MzJfdCBtX21lbW9yeVByZXNzdXJlUmVhc29uIHsgTWVtb3J5UHJlc3N1cmVSZWFz
b25Ob25lIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjQzMGQ0M2RmMjcuLmJlMTExOTg1ODExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDItMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEluLXByb2Nlc3MgbWVtb3J5IHByZXNzdXJlIG1v
bml0b3IgZm9yIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTY3NDkxPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAxMTYwNzI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgRW5hYmxlIHRoZSBpbi1w
cm9jZXNzIG1lbW9yeSBtb25pdG9yIGZvciBXZWJDb250ZW50IHByb2Nlc3NlcyBvbiBtYWNPUyAx
MC4xMisKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAxNy0wMi0wMSAg
Q3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtNYWNdW2Nt
YWtlXSBVbnJldmlld2VkIHNwZWN1bGF0aXZlIGJ1aWxkZml4IGFmdGVyIHIyMTE0MDMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA5YWRkNzA2MzI0Yi4uNTBj
NzIxNWFlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MjYxLDYgKzI2MSwxNSBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICBtZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuc2V0TG93TWVtb3J5SGFuZGxlcihbXSAoQ3JpdGljYWwgY3JpdGljYWws
IFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKSB7CiAgICAgICAgICAgICBXZWJDb3JlOjpyZWxlYXNl
TWVtb3J5KGNyaXRpY2FsLCBzeW5jaHJvbm91cyk7CiAgICAgICAgIH0pOworI2lmIFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTIwMAorICAgICAg
ICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25pdG9y
KHRydWUpOworICAgICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0RGlkRXhjZWVkTWVtb3J5
TGltaXRBbmRGYWlsZWRUb1JlY292ZXJDYWxsYmFjayhbXSAoKSB7CisgICAgICAgICAgICBXZWJD
b3JlOjpkaWRFeGNlZWRNZW1vcnlMaW1pdEFuZEZhaWxlZFRvUmVjb3ZlcigpOworICAgICAgICB9
KTsKKyAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLnNldFByb2Nlc3NJc0VsaWdpYmxlRm9y
TWVtb3J5S2lsbENhbGxiYWNrKFtdICgpIHsKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpw
cm9jZXNzSXNFbGlnaWJsZUZvck1lbW9yeUtpbGwoKTsKKyAgICAgICAgfSk7CisjZW5kaWYKICAg
ICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLmluc3RhbGwoKTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300417</attachid>
            <date>2017-02-02 09:44:42 -0800</date>
            <delta_ts>2017-02-02 21:19:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>land-167491.diff</filename>
            <type>text/plain</type>
            <size>33274</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGEyOThmZDU4NjFlLi40OGRkMDFlMGE1OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDItMDEgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEluLXByb2Nlc3Mg
bWVtb3J5IHByZXNzdXJlIG1vbml0b3IgZm9yIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgorICAgICAg
ICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY3NDkxPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzAxMTYwNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBzbG9wcHkgIm1heCBsaXZlIGhlYXAgc2l6ZSIgbWVjaGFuaXNtIGZyb20g
SlNDIGluIGZhdm9yIG9mIHRoZSBuZXcKKyAgICAgICAgV2ViQ29yZS1zaWRlIG1lbW9yeSBmb290
cHJpbnQgbW9uaXRvci4KKworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6
OkhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpkaWRF
eGNlZWRNYXhMaXZlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldE1heExpdmVTaXplKTogRGVsZXRlZC4KKwogMjAxNy0wMi0wMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBBcml0eUZp
eHVwIHNob3VsZCBhZGp1c3QgU1AgZmlyc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
aW5kZXggMjI4YmZlYzIwMjguLjBhOTQ3NzY2OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcApAQCAtMTcyNiwxMSArMTcyNiw2IEBAIHZvaWQgSGVhcDo6bm90aWZ5SW5jcmVtZW50
YWxTd2VlcGVyKCkKICAgICBtX3N3ZWVwZXItPnN0YXJ0U3dlZXBpbmcoKTsKIH0KIAotTkVWRVJf
SU5MSU5FIHZvaWQgSGVhcDo6ZGlkRXhjZWVkTWF4TGl2ZVNpemUoKQotewotICAgIENSQVNIKCk7
Ci19Ci0KIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwpAQCAtMTc2Miw5ICsxNzU3LDYgQEAgdm9pZCBI
ZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKIAogICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICBkYXRhTG9nKCJleHRyYU1lbW9yeVNpemUoKSA9ICIsIGV4dHJhTWVtb3J5U2l6ZSgpLCAiLCBj
dXJyZW50SGVhcFNpemUgPSAiLCBjdXJyZW50SGVhcFNpemUsICJcbiIpOwotCi0gICAgaWYgKG1f
bWF4TGl2ZVNpemUgJiYgY3VycmVudEhlYXBTaXplID4gbV9tYXhMaXZlU2l6ZSkKLSAgICAgICAg
ZGlkRXhjZWVkTWF4TGl2ZVNpemUoKTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFw
U2l6ZSgpICYmIGN1cnJlbnRIZWFwU2l6ZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkKICAg
ICAgICAgSGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCmluZGV4IDIwNzVmNjllMDFhLi5iMzhiMjhkOGYwYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaApAQCAtMTMyLDkgKzEzMiw2IEBAIHB1YmxpYzoKIAogICAgIFZNKiB2bSgp
IGNvbnN0OwogCi0gICAgLy8gU2V0IGEgaGFyZCBsaW1pdCB3aGVyZSBKU0Mgd2lsbCBjcmFzaCBp
ZiBsaXZlIGhlYXAgc2l6ZSBleGNlZWRzIGl0LgotICAgIHZvaWQgc2V0TWF4TGl2ZVNpemUoc2l6
ZV90IHNpemUpIHsgbV9tYXhMaXZlU2l6ZSA9IHNpemU7IH0KLQogICAgIE1hcmtlZFNwYWNlJiBv
YmplY3RTcGFjZSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2U7IH0KICAgICBNYWNoaW5lVGhyZWFk
cyYgbWFjaGluZVRocmVhZHMoKSB7IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAKQEAgLTYw
Myw5ICs2MDAsNiBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX2Jsb2NrQnl0ZXNBbGxvY2F0ZWQg
eyAwIH07CiAgICAgc2l6ZV90IG1fZXh0ZXJuYWxNZW1vcnlTaXplIHsgMCB9OwogI2VuZGlmCi0K
LSAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZGlkRXhjZWVkTWF4TGl2ZVNpemUoKTsK
LSAgICBzaXplX3QgbV9tYXhMaXZlU2l6ZSB7IDAgfTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TXV0YXRvclNjaGVkdWxlcj4gbV9zY2hlZHVsZXI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEyOGI3N2QyYTBk
Li42OWFlY2M2YzAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0wMi0wMiAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gSW4tcHJvY2VzcyBtZW1v
cnkgcHJlc3N1cmUgbW9uaXRvciBmb3IgV2ViQ29udGVudCBwcm9jZXNzZXMuCisgICAgICAgIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8xNjc0OTE+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDEx
NjA3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBB
ZGQgYSBXVEYgaGVscGVyIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHRoZSBjdXJyZW50IHByb2Nlc3Mn
cyBtZW1vcnkgZm9vdHByaW50LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9NZW1v
cnlGb290cHJpbnQuY3BwOgorICAgICAgICAoV1RGOjptZW1vcnlGb290cHJpbnQpOgorICAgICAg
ICAqIHd0Zi9NZW1vcnlGb290cHJpbnQuaDoKKwogMjAxNy0wMS0zMSAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggY2FjaGUgY29kZXJzIHRvIGVuY29k
ZSB0aW1lX3BvaW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZmRkODcwMTczOWUuLmU0MmUwYTVlOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTMzNyw2ICszMzcsOCBAQAogCQlBOEE0NzQ4NzE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEu
aCAqLzsgfTsKIAkJQThBNDc0OEMxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEIxNTFBODI2NDAw
NDEyM0ZGIC8qIGNvbmZpZy5oICovOyB9OwogCQlBRDdDNDM0QjFERDJBNEE3MDAyNjg4OEIgLyog
RXhwZWN0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFEN0M0MzRBMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovOyB9OworCQlBREYyQ0U2
NjFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyog
TWVtb3J5Rm9vdHByaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREYyQ0U2
NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCAqLzsgfTsKIAkJQjM4RkQ3
QkQxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyog
RmVhdHVyZURlZmluZXMuaCAqLzsgfTsKIAkJQzRGOEE5MzcxOUM2NUVCNDAwQjJCMTVEIC8qIFN0
b3B3YXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovOyB9OwogCQlDOEIwRTFB
MUUwMUE0ODZFQjk1RTBEMTEgLyogSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzdFMUQ3REJEODRBQzM4RkFFNEQzNCAvKiBJbmRleFNl
dC5oICovOyB9OwpAQCAtNzE5LDYgKzcyMSw4IEBACiAJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNG
RiAvKiBXVEZUaHJlYWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdU
RlRocmVhZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDc0OEIxNTFB
ODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ3QzQzNEExREQyQTRB
NzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV4cGVjdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERjJDRTY0MUUzOUYx
MDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVtb3J5Rm9vdHByaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9vdHByaW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1
cmVEZWZpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlYXR1cmVEZWZp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM0RjhBOTM2MTlDNjVFQjQwMEIy
QjE1RCAvKiBTdG9wd2F0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rv
cHdhdGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FBMTU4NTdEMDMw
MEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDUs
NiArMTAwOSw4IEBACiAJCQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5oICovLAog
CQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovLAogCQkJCUNE
NTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywKKwkJCQlBREYyQ0U2NDFF
MzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8sCisJCQkJQURGMkNFNjUxRTM5
RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi8sCiAJCQkJQThBNDcyQ0MxNTFB
ODI1QjAwNDEyM0ZGIC8qIE1lc3NhZ2VRdWV1ZS5oICovLAogCQkJCUE4QTQ3MkNEMTUxQTgyNUIw
MDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNwcCAqLywKIAkJCQlBOEE0NzJDRTE1MUE4MjVCMDA0
MTIzRkYgLyogTWV0YUFsbG9jYXRvci5oICovLApAQCAtMTQ5NCw2ICsxNTAwLDcgQEAKIAkJCQlB
OEE0NzQxQzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzQxRTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQ0RFRDBGNDE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQURGMkNFNjYxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQ2OTQxOTIxNkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUwOThCMDAxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0RjNCMEY3MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0
ZWRBcml0aG1ldGljLmggaW4gSGVhZGVycyAqLywKQEAgLTE3MDEsNiArMTcwOCw3IEBACiAJCQkJ
MUFDQUREODQxODg0NDgwMTAwRDhCNzFEIC8qIERlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJp
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQUUxNTFBODI1QjAwNDEyM0ZGIC8qIGRpeS1m
cC5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3Vi
bGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2VzICovLAorCQkJCUFERjJDRTY3MUUzOUYxMDYwMDY4
ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQkEx
NTFBODI1QjAwNDEyM0ZGIC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjMx
NTFBODI1QjAwNDEyM0ZGIC8qIGZhc3QtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTBGN0M1
RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA1OGMxMTZiZGQxMS4uODFhZjkxMjc2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CkBAIC02NCw2ICs2NCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIE1hbGxv
Y1B0ci5oCiAgICAgTWF0aEV4dHJhcy5oCiAgICAgTWVkaWFUaW1lLmgKKyAgICBNZW1vcnlGb290
cHJpbnQuaAogICAgIE1lc3NhZ2VRdWV1ZS5oCiAgICAgTWV0YUFsbG9jYXRvci5oCiAgICAgTWV0
YUFsbG9jYXRvckhhbmRsZS5oCkBAIC0yMDQsNiArMjA1LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAg
ICAgTUQ1LmNwcAogICAgIE1haW5UaHJlYWQuY3BwCiAgICAgTWVkaWFUaW1lLmNwcAorICAgIE1l
bW9yeUZvb3RwcmludC5jcHAKICAgICBNZXRhQWxsb2NhdG9yLmNwcAogICAgIE1vbm90b25pY1Rp
bWUuY3BwCiAgICAgTnVtYmVyT2ZDb3Jlcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeUZvb3RwcmludC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kY2MwZGU2MTFiMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5jcHAKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZW1vcnlGb290cHJpbnQuaCIKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorI2luY2x1ZGUgPG1hY2gv
dGFza19pbmZvLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK3N0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBtZW1vcnlGb290cHJpbnQoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHRh
c2tfdm1faW5mb19kYXRhX3Qgdm1JbmZvOworICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgY291
bnQgPSBUQVNLX1ZNX0lORk9fQ09VTlQ7CisgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNr
X2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19WTV9JTkZPLCAodGFza19pbmZvX3QpICZ2bUlu
Zm8sICZjb3VudCk7CisgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4odm1JbmZv
LnBoeXNfZm9vdHByaW50KTsKKyNlbHNlCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNlbmRp
ZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuaCBi
L1NvdXJjZS9XVEYvd3RmL01lbW9yeUZvb3RwcmludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi43YjhlY2E4ZTk3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01lbW9yeUZvb3RwcmludC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtZW1vcnlGb290
cHJpbnQoKTsKKworfQorCit1c2luZyBXVEY6Om1lbW9yeUZvb3RwcmludDsKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDdiMGZjYjRjM2YxLi4yZjBjNmFmZTY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBA
CisyMDE3LTAyLTAyICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAg
ICBbTWFjXSBJbi1wcm9jZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25pdG9yIGZvciBXZWJDb250ZW50
IHByb2Nlc3NlcyBBS0Egd2Vic2FtCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjc0
OTE+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDExNjA3Mj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgYSBuZXcgdGltZXItYmFzZWQgbWVt
b3J5IHByZXNzdXJlIG1vbml0b3IgdGhhdCBjaGVja3MgdGhlIHByb2Nlc3MgbWVtb3J5CisgICAg
ICAgIGZvb3RwcmludCBldmVyeSAzMCBzZWNvbmRzIGFuZCByZWFjdHMgdG8gY2hhbmdlcyBieSBz
ZXR0aW5nIGEgTWVtb3J5VXNhZ2VQb2xpY3kuCisKKyAgICAgICAgVGhlcmUgYXJlIGZvdXIgTWVt
b3J5VXNhZ2VQb2xpY3kgdmFsdWVzOgorCisgICAgICAgICAgICAtIFVucmVzdHJpY3RlZCAoYmVs
b3cgMUdCKQorICAgICAgICAgICAgLSBDb25zZXJ2YXRpdmUgKGFib3ZlIDFHQikKKyAgICAgICAg
ICAgIC0gU3RyaWN0IChhYm92ZSAyR0IpCisgICAgICAgICAgICAtIFBhbmljIChhYm92ZSA0R0Is
IG9yIDNHQiBpZiAzMi1iaXQpCisKKyAgICAgICAgRm9yIFN0cmljdCBhbmQgYWJvdmUsIHRoZSBv
bGQtc3R5bGUgImlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpIiBBUEkgd2lsbCByZXR1cm4gdHJ1ZS4K
KworICAgICAgICBUcmFuc2l0aW9uaW5nIHRvIGEgaGlnaGVyIHBvbGljeSB3aWxsIGNhdXNlIG1l
bW9yeSBwcmVzc3VyZSBoYW5kbGVycyB0byBydW46CisKKyAgICAgICAgQXQgU3RyaWN0LCB3ZSBy
dW4gdGhlICJub24tY3JpdGljYWwiIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyLCB0aGVuIGNhcnJ5
IG9uLgorCisgICAgICAgIEF0IFBhbmljLCB3ZSBydW4gdGhlICJjcml0aWNhbCIgbWVtb3J5IHBy
ZXNzdXJlIGhhbmRsZXIuIElmIHRoYXQgZmFpbHMgdG8gcmVjb3ZlcgorICAgICAgICBlbm91Z2gg
bWVtb3J5IHRvIGJyaW5nIHVzIGJhY2sgYmVsb3cgNEdCLCB3ZSBtYXkga2lsbCB0aGUgcHJvY2Vz
czoKKworICAgICAgICBBIHByb2Nlc3MgaXMgZWxpZ2libGUgdG8gZ2V0IGtpbGxlZCBmb3IgdXNp
bmcgdG9vIG11Y2ggbWVtb3J5IGlmOgorCisgICAgICAgICAgICAtIEl0J3Mgbm90IHZpc2libGUg
b24gc2NyZWVuIChpLmUgaXQncyBhIGJhY2tncm91bmQgdGFiLikKKyAgICAgICAgICAgIC0gSXQn
cyBub3QgcGxheWluZyBhdWRpby4KKyAgICAgICAgICAgIC0gSXQgaGFzIG5vdCBwZXJmb3JtZWQg
YSBtYWluIGZyYW1lIG5hdmlnYXRpb24gaW4gdGhlIGxhc3QgaG91ci4KKworICAgICAgICBCZWZv
cmUga2lsbGluZyB0aGUgcHJvY2VzcywgYW4gZXhpdC10aW1lIGNhbGxiYWNrIHdpbGwgcnVuLiBU
aGlzIHBhdGNoIGluc3RhbGxzIHN1Y2gKKyAgICAgICAgYSBjYWxsYmFjayB0aGF0IHByaW50cyBv
dXQgc29tZSB0aW1lLW9mLWRlYXRoIHN0YXRpc3RpY3MgYWJvdXQgQysrIGFuZCBKYXZhU2NyaXB0
IG1lbW9yeQorICAgICAgICB1c2FnZSB0byBob3BlZnVsbHkgaGVscCB1bmRlcnN0YW5kIHdoYXQg
d2FzIHNvYWtpbmcgdXAgYWxsIHRoZSBtZW1vcnkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9D
b21tb25WTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21tb25WTVNsb3cpOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
c2V0U3RhdGUpOgorICAgICAgICAqIHBhZ2UvTWFpbkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5GcmFtZTo6ZGlkQ29tcGxldGVMb2FkKToKKyAgICAgICAgKiBwYWdlL01haW5GcmFt
ZS5oOgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYWdlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6bG9nTWVtb3J5U3RhdGlzdGljc0F0VGlt
ZU9mRGVhdGgpOgorICAgICAgICAoV2ViQ29yZTo6ZGlkRXhjZWVkTWVtb3J5TGltaXRBbmRGYWls
ZWRUb1JlY292ZXIpOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1v
cnlLaWxsKToKKyAgICAgICAgKiBwYWdlL01lbW9yeVJlbGVhc2UuaDoKKyAgICAgICAgKiBwYWdl
L1Jlc291cmNlVXNhZ2VUaHJlYWQuaDoKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNh
Z2VUaHJlYWRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnZtUGFnZVNpemUpOgorICAgICAg
ICAqIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVt
b3J5TW9uaXRvcik6CisgICAgICAgIChXZWJDb3JlOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjp0aHJlc2hvbGRGb3JQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6cG9saWN5Rm9yRm9v
dHByaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3Vy
ZW1lbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0TWVtb3J5
S2lsbENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
c2V0UHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1vcnlLaWxsQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppc1VuZGVyTWVtb3J5UHJlc3N1cmUpOgorCiAy
MDE3LTAyLTAxICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dTdHJlYW1lcl1bTVNFXSBxdGRlbXV4OiBVcGRhdGUgdGhlIHRmZHQgcGF0
Y2ggdG8gdGhlIHZlcnNpb24gZmluYWxseSBhY2NlcHRlZCB1cHN0cmVhbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCmluZGV4IGIxYjA2YWEwNzQwLi4wZDVhNGE2MDZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcApAQCAtNDYsMTAgKzQ2LDYg
QEAgVk0mIGNvbW1vblZNU2xvdygpCiAgICAgCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZVRocmVhZGluZygpOwogICAgIGdfY29tbW9uVk1Pck51bGwgPSAmVk06OmNyZWF0ZUxlYWtl
ZChMYXJnZUhlYXApLmxlYWtSZWYoKTsKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCi0g
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhHQ0hlYXBTaXplID0gNCAqIEdCOwotICAgIGdfY29t
bW9uVk1Pck51bGwtPmhlYXAuc2V0TWF4TGl2ZVNpemUobWF4R0NIZWFwU2l6ZSk7Ci0jZW5kaWYK
ICAgICBnX2NvbW1vblZNT3JOdWxsLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gQXQgYW55IHRp
bWUsIHdlIG1heSBkbyB0aGluZ3MgdGhhdCBhZmZlY3QgdGhlIEdDLgogI2lmICFQTEFURk9STShJ
T1MpCiAgICAgZ19jb21tb25WTU9yTnVsbC0+c2V0RXhjbHVzaXZlVGhyZWFkKHN0ZDo6dGhpc190
aHJlYWQ6OmdldF9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4
IGIyMTk0Y2M0YmZiLi40YTA4Mjc5YzgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0xNzQyLDcgKzE3NDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRTdGF0ZShG
cmFtZVN0YXRlIG5ld1N0YXRlKQogICAgICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKICAgICAg
ICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAg
ICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiBvbGRTdGF0ZSAhPSBuZXdTdGF0ZSkKLSAg
ICAgICAgICAgIHN0YXRpY19jYXN0PE1haW5GcmFtZSY+KG1fZnJhbWUpLnBlcmZvcm1hbmNlTG9n
Z2luZygpLmRpZFJlYWNoUG9pbnRPZkludGVyZXN0KFBlcmZvcm1hbmNlTG9nZ2luZzo6TWFpbkZy
YW1lTG9hZENvbXBsZXRlZCk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWluRnJhbWUmPiht
X2ZyYW1lKS5kaWRDb21wbGV0ZUxvYWQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZy
YW1lLmNwcAppbmRleCBhMTdiZTNiYjUzYS4uOGI2YmUzMTMyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01h
aW5GcmFtZS5jcHAKQEAgLTk1LDYgKzk1LDEyIEBAIHZvaWQgTWFpbkZyYW1lOjpkcm9wQ2hpbGRy
ZW4oKQogICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoKmNoaWxkKTsKIH0KIAordm9pZCBNYWlu
RnJhbWU6OmRpZENvbXBsZXRlTG9hZCgpCit7CisgICAgbV90aW1lT2ZMYXN0Q29tcGxldGVkTG9h
ZCA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIHBlcmZvcm1hbmNlTG9nZ2luZygpLmRpZFJl
YWNoUG9pbnRPZkludGVyZXN0KFBlcmZvcm1hbmNlTG9nZ2luZzo6TWFpbkZyYW1lTG9hZENvbXBs
ZXRlZCk7Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBTY3JvbGxMYXRjaGluZ1N0YXRlKiBNYWlu
RnJhbWU6OmxhdGNoaW5nU3RhdGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9NYWluRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmgKaW5kZXggM2Uw
ODhmMGJiZDQuLjM2OWRkYmFlZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01h
aW5GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmgKQEAgLTY5LDYg
KzY5LDkgQEAgcHVibGljOgogCiAgICAgUGVyZm9ybWFuY2VMb2dnaW5nJiBwZXJmb3JtYW5jZUxv
Z2dpbmcoKSBjb25zdCB7IHJldHVybiAqbV9wZXJmb3JtYW5jZUxvZ2dpbmc7IH0KIAorICAgIHZv
aWQgZGlkQ29tcGxldGVMb2FkKCk7CisgICAgTW9ub3RvbmljVGltZSB0aW1lT2ZMYXN0Q29tcGxl
dGVkTG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZU9mTGFzdENvbXBsZXRlZExvYWQ7IH0KKwog
cHJpdmF0ZToKICAgICBNYWluRnJhbWUoUGFnZSYsIFBhZ2VDb25maWd1cmF0aW9uJik7CiAKQEAg
LTkxLDYgKzk0LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBl
cmZvcm1hbmNlTG9nZ2luZz4gbV9wZXJmb3JtYW5jZUxvZ2dpbmc7CisKKyAgICBNb25vdG9uaWNU
aW1lIG1fdGltZU9mTGFzdENvbXBsZXRlZExvYWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCBkNjQ0NDRjZjBkYS4u
MzY2MTJhODFhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAtMjks
MTIgKzI5LDE1IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiQ2hyb21l
LmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkdD
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJ
bmxpbmVTdHlsZVNoZWV0T3duZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5j
bHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNh
Y2hlLmgiCkBAIC00NSw2ICs0OCwxMCBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
ICJSZXNvdXJjZVVzYWdlVGhyZWFkLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgdm9pZCByZWxlYXNlTm9uY3JpdGljYWxNZW1vcnkoKQpAQCAtMTI4LDYgKzEzNSw4
OCBAQCB2b2lkIHJlbGVhc2VNZW1vcnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5
bmNocm9ub3VzKQogI2VuZGlmCiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK3N0YXRp
YyB1bnNpZ25lZCBwYWdlQ291bnQoKQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICBQ
YWdlOjpmb3JFYWNoUGFnZShbJl0gKFBhZ2UmIHBhZ2UpIHsKKyAgICAgICAgaWYgKCFwYWdlLmlz
VXRpbGl0eVBhZ2UoKSkKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgfSk7CisgICAgcmV0dXJu
IGNvdW50OworfQorI2VuZGlmCisKK3ZvaWQgbG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9mRGVh
dGgoKQoreworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGF1dG8gcGFnZVNpemUgPSB2bVBhZ2VTaXplKCk7CisgICAgYXV0byBwYWdlcyA9IHBhZ2Vz
UGVyVk1UYWcoKTsKKworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiRGlydHkgbWVt
b3J5IHBlciBWTSB0YWcgYXQgdGltZSBvZiBkZWF0aDoiKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgMjU2OyArK2kpIHsKKyAgICAgICAgc2l6ZV90IGRpcnR5ID0gcGFnZXNbaV0uZGly
dHkgKiBwYWdlU2l6ZTsKKyAgICAgICAgaWYgKCFkaXJ0eSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBTdHJpbmcgdGFnTmFtZSA9IGRpc3BsYXlOYW1lRm9yVk1UYWcoaSk7CisgICAg
ICAgIGlmICghdGFnTmFtZSkKKyAgICAgICAgICAgIHRhZ05hbWUgPSBTdHJpbmc6OmZvcm1hdCgi
VGFnICV1IiwgaSk7CisgICAgICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiJTE2czog
JWx1IE1CIiwgdGFnTmFtZS5sYXRpbjEoKS5kYXRhKCksIGRpcnR5IC8gTUIpOworICAgIH0KKyNl
bmRpZgorCisgICAgYXV0byYgdm0gPSBjb21tb25WTSgpOworICAgIFJFTEVBU0VfTE9HKE1lbW9y
eVByZXNzdXJlLCAiTWVtb3J5IHVzYWdlIHN0YXRpc3RpY3MgYXQgdGltZSBvZiBkZWF0aDoiKTsK
KyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkdDIGhlYXAgc2l6ZTogJXp1Iiwgdm0u
aGVhcC5zaXplKCkpOworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiR0MgaGVhcCBl
eHRyYSBtZW1vcnkgc2l6ZTogJXp1Iiwgdm0uaGVhcC5leHRyYU1lbW9yeVNpemUoKSk7CisjaWYg
RU5BQkxFKFJFU09VUkNFX1VTQUdFKQorICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAi
R0MgaGVhcCBleHRlcm5hbCBtZW1vcnk6ICV6dSIsIHZtLmhlYXAuZXh0ZXJuYWxNZW1vcnlTaXpl
KCkpOworI2VuZGlmCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJHbG9iYWwgb2Jq
ZWN0IGNvdW50OiAlenUiLCB2bS5oZWFwLmdsb2JhbE9iamVjdENvdW50KCkpOworCisgICAgUkVM
RUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJQYWdlIGNvdW50OiAldSIsIHBhZ2VDb3VudCgpKTsK
KyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkRvY3VtZW50IGNvdW50OiAldSIsIERv
Y3VtZW50OjphbGxEb2N1bWVudHMoKS5zaXplKCkpOworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVBy
ZXNzdXJlLCAiTGl2ZSBKYXZhU2NyaXB0IG9iamVjdHM6Iik7CisgICAgZm9yIChhdXRvJiBpdCA6
ICp2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMoKSkKKyAgICAgICAgUkVMRUFTRV9MT0coTWVtb3J5
UHJlc3N1cmUsICIgICVzOiAlZCIsIGl0LmtleSwgaXQudmFsdWUpOworI2VuZGlmCit9CisKK3Zv
aWQgZGlkRXhjZWVkTWVtb3J5TGltaXRBbmRGYWlsZWRUb1JlY292ZXIoKQoreworICAgIFJFTEVB
U0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiQ3Jhc2hpbmcgbm9uLXZpc2libGUgcHJvY2VzcyBkdWUg
dG8gZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSArIGluYWJpbGl0eSB0byBmcmVlIHVwIG1lbW9yeSBi
ZWxvdyBwYW5pYyB0aHJlc2hvbGQuIik7CisgICAgbG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9m
RGVhdGgoKTsKKyAgICBDUkFTSCgpOworfQorCitib29sIHByb2Nlc3NJc0VsaWdpYmxlRm9yTWVt
b3J5S2lsbCgpCit7CisgICAgYm9vbCBoYXNWaXNpYmxlUGFnZXMgPSBmYWxzZTsKKyAgICBib29s
IGhhc0F1ZGlibGVQYWdlcyA9IGZhbHNlOworICAgIGJvb2wgaGFzTWFpbkZyYW1lTmF2aWdhdGVk
SW5UaGVMYXN0SG91ciA9IGZhbHNlOworCisgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKKyAgICBQYWdlOjpmb3JFYWNoUGFnZShbJl0gKFBhZ2UmIHBhZ2UpIHsKKyAgICAgICAg
aWYgKHBhZ2UuaXNVdGlsaXR5UGFnZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAocGFnZS5pc1Zpc2libGUoKSkKKyAgICAgICAgICAgIGhhc1Zpc2libGVQYWdlcyA9IHRydWU7
CisgICAgICAgIGlmIChwYWdlLmFjdGl2aXR5U3RhdGUoKSAmIEFjdGl2aXR5U3RhdGU6OklzQXVk
aWJsZSkKKyAgICAgICAgICAgIGhhc0F1ZGlibGVQYWdlcyA9IHRydWU7CisgICAgICAgIGlmIChh
dXRvIHRpbWVPZkxhc3RDb21wbGV0ZWRMb2FkID0gcGFnZS5tYWluRnJhbWUoKS50aW1lT2ZMYXN0
Q29tcGxldGVkTG9hZCgpKSB7CisgICAgICAgICAgICBpZiAobm93IC0gdGltZU9mTGFzdENvbXBs
ZXRlZExvYWQgPD0gU2Vjb25kczo6ZnJvbU1pbnV0ZXMoNjApKQorICAgICAgICAgICAgICAgIGhh
c01haW5GcmFtZU5hdmlnYXRlZEluVGhlTGFzdEhvdXIgPSB0cnVlOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBib29sIGVsaWdpYmxlID0gIWhhc1Zpc2libGVQYWdlcyAmJiAhaGFzQXVkaWJs
ZVBhZ2VzICYmICFoYXNNYWluRnJhbWVOYXZpZ2F0ZWRJblRoZUxhc3RIb3VyOworICAgIGlmICgh
ZWxpZ2libGUpCisgICAgICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiUHJvY2VzcyBu
b3QgZWxpZ2libGUgZm9yIHBhbmljIG1lbW9yeSBraWxsLiBSZWFzb25zOiBoYXNWaXNpYmxlUGFn
ZXM9JXUsIGhhc0F1ZGlibGVQYWdlcz0ldSwgaGFzTWFpbkZyYW1lTmF2aWdhdGVkSW5UaGVMYXN0
SG91cj0ldSIsIGhhc1Zpc2libGVQYWdlcywgaGFzQXVkaWJsZVBhZ2VzLCBoYXNNYWluRnJhbWVO
YXZpZ2F0ZWRJblRoZUxhc3RIb3VyKTsKKworICAgIHJldHVybiBlbGlnaWJsZTsKK30KKwogI2lm
ICFQTEFURk9STShDT0NPQSkKIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKSB7
IH0KIHZvaWQgamV0dGlzb25FeHBlbnNpdmVPYmplY3RzT25Ub3BMZXZlbE5hdmlnYXRpb24oKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmgKaW5kZXggMWQ5OTM3MmNhZjIuLmNkNDEw
YTEyYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuaApAQCAtMzMsNSArMzMsOCBA
QCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbGVhc2VNZW1vcnkoQ3JpdGljYWwsIFN5bmNocm9ub3Vz
KTsKIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKTsKIHZvaWQgamV0dGlzb25F
eHBlbnNpdmVPYmplY3RzT25Ub3BMZXZlbE5hdmlnYXRpb24oKTsKIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVnaXN0ZXJNZW1vcnlSZWxlYXNlTm90aWZ5Q2FsbGJhY2tzKCk7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIGxvZ01lbW9yeVN0YXRpc3RpY3NBdFRpbWVPZkRlYXRoKCk7CitXRUJDT1JFX0VYUE9S
VCBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZGlkRXhjZWVkTWVtb3J5TGltaXRBbmRGYWls
ZWRUb1JlY292ZXIoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgcHJvY2Vzc0lzRWxpZ2libGVGb3JN
ZW1vcnlLaWxsKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmgKaW5kZXggZDk3MWY1ZWE4MzkuLjE4YTFlNjc1NDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaApAQCAtODAsNiArODAs
NyBAQCBzdHJ1Y3QgVGFnSW5mbyB7CiB9OwogCiBjb25zdCBjaGFyKiBkaXNwbGF5TmFtZUZvclZN
VGFnKHVuc2lnbmVkKTsKK3NpemVfdCB2bVBhZ2VTaXplKCk7CiBzdGQ6OmFycmF5PFRhZ0luZm8s
IDI1Nj4gcGFnZXNQZXJWTVRhZygpOwogdm9pZCBsb2dGb290cHJpbnRDb21wYXJpc29uKGNvbnN0
IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiYsIGNvbnN0IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2
PiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291
cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZVRocmVhZENvY29hLm1tCmluZGV4IDY5MTM2YWRmNGY3Li4wNjRhNjFhY2NlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFk
Q29jb2EubW0KQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgc2l6ZV90IHZtUGFnZVNpemUoKQorc2l6ZV90IHZtUGFnZVNpemUoKQogewogI2lmIFBMQVRG
T1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwCiAg
ICAgcmV0dXJuIHZtX2tlcm5lbF9wYWdlX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCBiOWFjMGU1OTAwZC4uMDI0YTYy
M2E0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJl
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUZv
b3RwcmludC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwxMjMgQEAg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigp
CiB9CiAKIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkKKyAg
ICA6IG1fbWVhc3VyZW1lbnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCkKICNpZiBPUyhMSU5VWCkKLSAgICA6
IG1faG9sZE9mZlRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpCisgICAgLCBtX2hvbGRPZmZUaW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZUaW1lckZpcmVkKQog
I2VuZGlmCiB7CiB9CiAKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQ
ZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCB1c2UpCit7CisgICAgaWYgKHVzZSkKKyAgICAgICAg
bV9tZWFzdXJlbWVudFRpbWVyLnN0YXJ0UmVwZWF0aW5nKDMwKTsKKyAgICBlbHNlCisgICAgICAg
IG1fbWVhc3VyZW1lbnRUaW1lci5zdG9wKCk7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKK3N0YXRpYyBjb25zdCBjaGFyKiB0b1N0cmluZyhNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kp
Cit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpV
bnJlc3RyaWN0ZWQ6IHJldHVybiAiVW5yZXN0cmljdGVkIjsKKyAgICBjYXNlIE1lbW9yeVVzYWdl
UG9saWN5OjpDb25zZXJ2YXRpdmU6IHJldHVybiAiQ29uc2VydmF0aXZlIjsKKyAgICBjYXNlIE1l
bW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q6IHJldHVybiAiU3RyaWN0IjsKKyAgICBjYXNlIE1lbW9y
eVVzYWdlUG9saWN5OjpQYW5pYzogcmV0dXJuICJQYW5pYyI7CisgICAgfQorfQorI2VuZGlmCisK
K3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBv
bGljeSBwb2xpY3kpCit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIE1lbW9yeVVz
YWdlUG9saWN5OjpDb25zZXJ2YXRpdmU6CisgICAgICAgIHJldHVybiAxICogR0I7CisgICAgY2Fz
ZSBNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0OgorICAgICAgICByZXR1cm4gMiAqIEdCOworICAg
IGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljOgorI2lmIENQVShYODZfNjQpIHx8IENQVShB
Uk02NCkKKyAgICAgICAgcmV0dXJuIDQgKiBHQjsKKyNlbHNlCisgICAgICAgIHJldHVybiAzICog
R0I7CisjZW5kaWYKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQ6Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KK30KKworc3RhdGljIGNvbnN0ZXhwciBNZW1vcnlVc2FnZVBvbGljeSBwb2xp
Y3lGb3JGb290cHJpbnQoc2l6ZV90IGZvb3RwcmludCkKK3sKKyAgICBpZiAoZm9vdHByaW50ID49
IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeTo6UGFuaWMpKQorICAgICAgICBy
ZXR1cm4gTWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljOworICAgIGlmIChmb290cHJpbnQgPj0gdGhy
ZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3QpKQorICAgICAgICByZXR1
cm4gTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdDsKKyAgICBpZiAoZm9vdHByaW50ID49IHRocmVz
aG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeTo6Q29uc2VydmF0aXZlKSkKKyAgICAgICAg
cmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5OjpDb25zZXJ2YXRpdmU7CisgICAgcmV0dXJuIE1lbW9y
eVVzYWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQ7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQoKQoreworICAgIGF1dG8gZm9vdHByaW50ID0gbWVt
b3J5Rm9vdHByaW50KCk7CisgICAgaWYgKCFmb290cHJpbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiQ3VycmVudCBtZW1vcnkgZm9vdHByaW50
OiAlbHUgTUIiLCBmb290cHJpbnQudmFsdWUoKSAvIE1CKTsKKworICAgIGF1dG8gbmV3UG9saWN5
ID0gcG9saWN5Rm9yRm9vdHByaW50KGZvb3RwcmludC52YWx1ZSgpKTsKKyAgICBpZiAobmV3UG9s
aWN5ID09IG1fbWVtb3J5VXNhZ2VQb2xpY3kpIHsKKyAgICAgICAgaWYgKG1fbWVtb3J5VXNhZ2VQ
b2xpY3kgIT0gTWVtb3J5VXNhZ2VQb2xpY3k6OlBhbmljKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIk1lbW9yeSB1c2FnZSBzdGlsbCBh
Ym92ZSBwYW5pYyB0aHJlc2hvbGQiKTsKKyAgICB9IGVsc2UKKyAgICAgICAgUkVMRUFTRV9MT0co
TWVtb3J5UHJlc3N1cmUsICJNZW1vcnkgdXNhZ2UgcG9saWN5IGNoYW5nZWQ6ICVzIC0+ICVzIiwg
dG9TdHJpbmcobV9tZW1vcnlVc2FnZVBvbGljeSksIHRvU3RyaW5nKG5ld1BvbGljeSkpOworCisg
ICAgbV9tZW1vcnlVc2FnZVBvbGljeSA9IG5ld1BvbGljeTsKKworICAgIGlmIChuZXdQb2xpY3kg
PT0gTWVtb3J5VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG5ld1BvbGljeSA9PSBNZW1vcnlVc2FnZVBvbGljeTo6Q29uc2VydmF0aXZlKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwb2xpY3kgYnkgY2hvb3Npbmcgd2hpY2gg
Y2FjaGVzIHNob3VsZCByZXNwZWN0IGl0LCBhbmQgaG9va2luZyB0aGVtIHVwLiAKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChuZXdQb2xpY3kgPT0gTWVtb3J5VXNhZ2VQb2xpY3k6
OlN0cmljdCkgeworICAgICAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkF0dGVtcHRp
bmcgdG8gcmVkdWNlIG1lbW9yeSBmb290cHJpbnQgYnkgZnJlZWluZyBsZXNzIGltcG9ydGFudCBv
YmplY3RzLiIpOworICAgICAgICByZWxlYXNlTWVtb3J5KENyaXRpY2FsOjpObywgU3luY2hyb25v
dXM6Ok5vKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKG5l
d1BvbGljeSA9PSBNZW1vcnlVc2FnZVBvbGljeTo6UGFuaWMpOworCisgICAgUkVMRUFTRV9MT0co
TWVtb3J5UHJlc3N1cmUsICJBdHRlbXB0aW5nIHRvIHJlZHVjZSBtZW1vcnkgZm9vdHByaW50IGJ5
IGZyZWVpbmcgbW9yZSBpbXBvcnRhbnQgb2JqZWN0cy4iKTsKKyAgICBpZiAobV9wcm9jZXNzSXNF
bGlnaWJsZUZvck1lbW9yeUtpbGxDYWxsYmFjaykgeworICAgICAgICBpZiAoIW1fcHJvY2Vzc0lz
RWxpZ2libGVGb3JNZW1vcnlLaWxsQ2FsbGJhY2soKSkgeworICAgICAgICAgICAgcmVsZWFzZU1l
bW9yeShDcml0aWNhbDo6WWVzLCBTeW5jaHJvbm91czo6Tm8pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfQorCisgICAgcmVsZWFzZU1lbW9yeShDcml0aWNhbDo6WWVzLCBT
eW5jaHJvbm91czo6WWVzKTsKKworICAgIC8vIFJlbWVhc3VyZSBmb290cHJpbnQgdG8gc2VlIGhv
dyB3ZWxsIHRoZSBwcmVzc3VyZSBoYW5kbGVyIGRpZC4KKyAgICBmb290cHJpbnQgPSBtZW1vcnlG
b290cHJpbnQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmb290cHJpbnQpOworCisgICAgUkVMRUFT
RV9MT0coTWVtb3J5UHJlc3N1cmUsICJOZXcgbWVtb3J5IGZvb3RwcmludDogJWx1IE1CIiwgZm9v
dHByaW50LnZhbHVlKCkgLyBNQik7CisgICAgaWYgKGZvb3RwcmludC52YWx1ZSgpIDwgdGhyZXNo
b2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYykpIHsKKyAgICAgICAgbV9tZW1v
cnlVc2FnZVBvbGljeSA9IHBvbGljeUZvckZvb3RwcmludChmb290cHJpbnQudmFsdWUoKSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiUHJlc3N1cmUgcmVkdWNlZCBiZWxv
dyBwYW5pYyB0aHJlc2hvbGQuIE5ldyBtZW1vcnkgdXNhZ2UgcG9saWN5OiAlcyIsIHRvU3RyaW5n
KG1fbWVtb3J5VXNhZ2VQb2xpY3kpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtX21lbW9yeUtpbGxDYWxsYmFjaykKKyAgICAgICAgbV9tZW1vcnlLaWxsQ2FsbGJhY2soKTsK
K30KKwogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmJlZ2luU2ltdWxhdGVkTWVtb3J5UHJl
c3N1cmUoKQogewogICAgIG1faXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAppbmRleCA2
MDFhNDFlZGFlOC4uZjNkZjU0MTNmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC0zNCwxNiArMzQsMTYgQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKICNpZiBQTEFURk9S
TShJT1MpCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oPgotI2VsaWYgT1MoTElOVVgpCi0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNl
bmRpZgorCiAjaWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2Vu
ZGlmCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw2ICs1NSwxMyBAQCBl
bnVtIE1lbW9yeVByZXNzdXJlUmVhc29uIHsKIH07CiAjZW5kaWYKIAorZW51bSBjbGFzcyBNZW1v
cnlVc2FnZVBvbGljeSB7CisgICAgVW5yZXN0cmljdGVkLCAvLyBBbGxvY2F0ZSBhcyBtdWNoIGFz
IHlvdSB3YW50CisgICAgQ29uc2VydmF0aXZlLCAvLyBNYXliZSB5b3UgZG9uJ3QgY2FjaGUgZXZl
cnkgc2luZ2xlIHRoaW5nCisgICAgU3RyaWN0LCAvLyBUaW1lIHRvIHN0YXJ0IHBpbmNoaW5nIHBl
bm5pZXMgZm9yIHJlYWwKKyAgICBQYW5pYywgLy8gT0ggR09EIFdFJ1JFIFNJTktJTkcsIFRIUk9X
IEVWRVJZVEhJTkcgT1ZFUkJPQVJECit9OworCiBlbnVtIGNsYXNzIENyaXRpY2FsIHsgTm8sIFll
cyB9OwogZW51bSBjbGFzcyBTeW5jaHJvbm91cyB7IE5vLCBZZXMgfTsKIApAQCAtNjgsMTIgKzc1
LDI0IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zdGFsbCgpOwogCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3Io
Ym9vbCk7CisKKyAgICB2b2lkIHNldE1lbW9yeUtpbGxDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4gZnVuY3Rpb24pIHsgbV9tZW1vcnlLaWxsQ2FsbGJhY2sgPSBXVEZNb3ZlKGZ1bmN0aW9u
KTsgfQorICAgIHZvaWQgc2V0UHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1vcnlLaWxsQ2FsbGJhY2so
V1RGOjpGdW5jdGlvbjxib29sKCk+IGZ1bmN0aW9uKSB7IG1fcHJvY2Vzc0lzRWxpZ2libGVGb3JN
ZW1vcnlLaWxsQ2FsbGJhY2sgPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQorCiAgICAgdm9pZCBzZXRM
b3dNZW1vcnlIYW5kbGVyKExvd01lbW9yeUhhbmRsZXImJiBoYW5kbGVyKQogICAgIHsKICAgICAg
ICAgbV9sb3dNZW1vcnlIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKICAgICB9CiAKLSAgICBi
b29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJNZW1vcnlQ
cmVzc3VyZSB8fCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlOyB9CisgICAgYm9vbCBpc1Vu
ZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdW5kZXJN
ZW1vcnlQcmVzc3VyZQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgICAgIHx8IG1fbWVtb3J5
VXNhZ2VQb2xpY3kgPj0gTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdAorI2VuZGlmCisgICAgICAg
ICAgICB8fCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlOworICAgIH0KICAgICB2b2lkIHNl
dFVuZGVyTWVtb3J5UHJlc3N1cmUoYm9vbCBiKSB7IG1fdW5kZXJNZW1vcnlQcmVzc3VyZSA9IGI7
IH0KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTE0OSw2ICsxNjgsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwsIFN5bmNocm9ub3VzID0gU3lu
Y2hyb25vdXM6Ok5vKTsKICAgICB2b2lkIHBsYXRmb3JtUmVsZWFzZU1lbW9yeShDcml0aWNhbCk7
CiAKKyAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZGlkRXhjZWVkTWVtb3J5TGltaXRB
bmRGYWlsZWRUb1JlY292ZXIoKTsKKyAgICB2b2lkIG1lYXN1cmVtZW50VGltZXJGaXJlZCgpOwor
CiAjaWYgT1MoTElOVVgpCiAgICAgY2xhc3MgRXZlbnRGRFBvbGxlciB7CiAgICAgICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEV2ZW50RkRQb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTE3MCwxMiArMTkyLDE2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pbnN0
YWxsZWQgeyBmYWxzZSB9OwotICAgIHRpbWVfdCBtX2xhc3RSZXNwb25kVGltZSB7IDAgfTsKICAg
ICBMb3dNZW1vcnlIYW5kbGVyIG1fbG93TWVtb3J5SGFuZGxlcjsKIAogICAgIHN0ZDo6YXRvbWlj
PGJvb2w+IG1fdW5kZXJNZW1vcnlQcmVzc3VyZTsKICAgICBib29sIG1faXNTaW11bGF0aW5nTWVt
b3J5UHJlc3N1cmUgeyBmYWxzZSB9OwogCisgICAgUnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1
cmVIYW5kbGVyPiBtX21lYXN1cmVtZW50VGltZXI7CisgICAgTWVtb3J5VXNhZ2VQb2xpY3kgbV9t
ZW1vcnlVc2FnZVBvbGljeSB7IE1lbW9yeVVzYWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQgfTsKKyAg
ICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9tZW1vcnlLaWxsQ2FsbGJhY2s7CisgICAgV1RGOjpG
dW5jdGlvbjxib29sKCk+IG1fcHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1vcnlLaWxsQ2FsbGJhY2s7
CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IENhbiB3ZSBzaGFyZSBtb3JlIG9m
IHRoaXMgd2l0aCBPcGVuU291cmNlPwogICAgIHVpbnQzMl90IG1fbWVtb3J5UHJlc3N1cmVSZWFz
b24geyBNZW1vcnlQcmVzc3VyZVJlYXNvbk5vbmUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiNDMwZDQzZGYy
Ny4uYmUxMTE5ODU4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wMi0wMiAg
QW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gSW4tcHJv
Y2VzcyBtZW1vcnkgcHJlc3N1cmUgbW9uaXRvciBmb3IgV2ViQ29udGVudCBwcm9jZXNzZXMuCisg
ICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjc0OTE+CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDExNjA3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKwor
ICAgICAgICBFbmFibGUgdGhlIGluLXByb2Nlc3MgbWVtb3J5IG1vbml0b3IgZm9yIFdlYkNvbnRl
bnQgcHJvY2Vzc2VzIG9uIG1hY09TIDEwLjEyKworCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOgorCiAyMDE3LTAyLTAxICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW01hY11bY21ha2VdIFVucmV2aWV3ZWQgc3BlY3VsYXRpdmUgYnVpbGRm
aXggYWZ0ZXIgcjIxMTQwMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDlhZGQ3MDYzMjRiLi41MWI0NTlkNmY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yNjEsNiArMjYxLDE1IEBAIHZvaWQgV2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiAgICAgICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5zZXRMb3dNZW1vcnlIYW5kbGVy
KFtdIChDcml0aWNhbCBjcml0aWNhbCwgU3luY2hyb25vdXMgc3luY2hyb25vdXMpIHsKICAgICAg
ICAgICAgIFdlYkNvcmU6OnJlbGVhc2VNZW1vcnkoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKICAg
ICAgICAgfSk7CisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FM
TE9XRUQgPj0gMTAxMjAwCisgICAgICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5zZXRTaG91bGRV
c2VQZXJpb2RpY01lbW9yeU1vbml0b3IodHJ1ZSk7CisgICAgICAgIG1lbW9yeVByZXNzdXJlSGFu
ZGxlci5zZXRNZW1vcnlLaWxsQ2FsbGJhY2soW10gKCkgeworICAgICAgICAgICAgV2ViQ29yZTo6
ZGlkRXhjZWVkTWVtb3J5TGltaXRBbmRGYWlsZWRUb1JlY292ZXIoKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5zZXRQcm9jZXNzSXNFbGlnaWJsZUZvck1lbW9y
eUtpbGxDYWxsYmFjayhbXSAoKSB7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6cHJvY2Vz
c0lzRWxpZ2libGVGb3JNZW1vcnlLaWxsKCk7CisgICAgICAgIH0pOworI2VuZGlmCiAgICAgICAg
IG1lbW9yeVByZXNzdXJlSGFuZGxlci5pbnN0YWxsKCk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300494</attachid>
            <date>2017-02-02 21:19:15 -0800</date>
            <delta_ts>2017-02-02 23:26:51 -0800</delta_ts>
            <desc>Patch for landing II</desc>
            <filename>land-167491-2.diff</filename>
            <type>text/plain</type>
            <size>33142</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDc2ZGIyZDlmMDgxLi42MDFmOTM3MzQ3MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDItMDMgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEluLXByb2Nlc3Mg
bWVtb3J5IHByZXNzdXJlIG1vbml0b3IgZm9yIFdlYkNvbnRlbnQgcHJvY2Vzc2VzIEFLQSB3ZWJz
YW0KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2NzQ5MT4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMwMTE2MDcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3Rv
LgorCisgICAgICAgIFJlbW92ZSB0aGUgc2xvcHB5ICJtYXggbGl2ZSBoZWFwIHNpemUiIG1lY2hh
bmlzbSBmcm9tIEpTQyBpbiBmYXZvciBvZiB0aGUgbmV3CisgICAgICAgIFdlYkNvcmUtc2lkZSBt
ZW1vcnkgZm9vdHByaW50IG1vbml0b3IuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAg
ICAgICAoSlNDOjpIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6ZGlkRXhjZWVkTWF4TGl2ZVNpemUpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVh
cC5oOgorICAgICAgICAoSlNDOjpIZWFwOjpzZXRNYXhMaXZlU2l6ZSk6IERlbGV0ZWQuCisKIDIw
MTctMDItMDIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBh
IFNJR0lMTCBjcmFzaCBhbmFseXplciB0byBtYWtlIGRlYnVnZ2luZyBTSUdJTExzIGVhc2llci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggYjU3Nzc1NTkwYmUuLmE1YzVjMDhk
ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTcyNiwxMSArMTcyNiw2
IEBAIHZvaWQgSGVhcDo6bm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCkKICAgICBtX3N3ZWVwZXIt
PnN0YXJ0U3dlZXBpbmcoKTsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6ZGlkRXhjZWVk
TWF4TGl2ZVNpemUoKQotewotICAgIENSQVNIKCk7Ci19Ci0KIHZvaWQgSGVhcDo6dXBkYXRlQWxs
b2NhdGlvbkxpbWl0cygpCiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNl
OwpAQCAtMTc2Miw5ICsxNzU3LDYgQEAgdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRz
KCkKIAogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJleHRyYU1lbW9yeVNpemUo
KSA9ICIsIGV4dHJhTWVtb3J5U2l6ZSgpLCAiLCBjdXJyZW50SGVhcFNpemUgPSAiLCBjdXJyZW50
SGVhcFNpemUsICJcbiIpOwotCi0gICAgaWYgKG1fbWF4TGl2ZVNpemUgJiYgY3VycmVudEhlYXBT
aXplID4gbV9tYXhMaXZlU2l6ZSkKLSAgICAgICAgZGlkRXhjZWVkTWF4TGl2ZVNpemUoKTsKICAg
ICAKICAgICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpICYmIGN1cnJlbnRIZWFwU2l6ZSA+
IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkKICAgICAgICAgSGVhcFN0YXRpc3RpY3M6OmV4aXRX
aXRoRmFpbHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDVhZDVhNzA2M2Zm
Li5lN2YwN2Q1YzAzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMTMyLDkgKzEz
Miw2IEBAIHB1YmxpYzoKIAogICAgIFZNKiB2bSgpIGNvbnN0OwogCi0gICAgLy8gU2V0IGEgaGFy
ZCBsaW1pdCB3aGVyZSBKU0Mgd2lsbCBjcmFzaCBpZiBsaXZlIGhlYXAgc2l6ZSBleGNlZWRzIGl0
LgotICAgIHZvaWQgc2V0TWF4TGl2ZVNpemUoc2l6ZV90IHNpemUpIHsgbV9tYXhMaXZlU2l6ZSA9
IHNpemU7IH0KLQogICAgIE1hcmtlZFNwYWNlJiBvYmplY3RTcGFjZSgpIHsgcmV0dXJuIG1fb2Jq
ZWN0U3BhY2U7IH0KICAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVhZHMoKSB7IHJldHVy
biBtX21hY2hpbmVUaHJlYWRzOyB9CiAKQEAgLTYwNSw5ICs2MDIsNiBAQCBwcml2YXRlOgogICAg
IHNpemVfdCBtX2Jsb2NrQnl0ZXNBbGxvY2F0ZWQgeyAwIH07CiAgICAgc2l6ZV90IG1fZXh0ZXJu
YWxNZW1vcnlTaXplIHsgMCB9OwogI2VuZGlmCi0KLSAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IHZvaWQgZGlkRXhjZWVkTWF4TGl2ZVNpemUoKTsKLSAgICBzaXplX3QgbV9tYXhMaXZlU2l6ZSB7
IDAgfTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRvclNjaGVkdWxlcj4gbV9zY2hl
ZHVsZXI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGY1ZTI0MTM5YWFlLi4wZjk2ZDRhY2M2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxNy0wMi0wMyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgW01hY10gSW4tcHJvY2VzcyBtZW1vcnkgcHJlc3N1cmUgbW9uaXRvciBmb3IgV2Vi
Q29udGVudCBwcm9jZXNzZXMgQUtBIHdlYnNhbQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTY3NDkxPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAxMTYwNzI+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgQWRkIGEgV1RGIGhlbHBlciBm
dW5jdGlvbiBmb3IgZ2V0dGluZyB0aGUgY3VycmVudCBwcm9jZXNzJ3MgbWVtb3J5IGZvb3Rwcmlu
dC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvTWVtb3J5Rm9vdHByaW50LmNwcDoK
KyAgICAgICAgKFdURjo6bWVtb3J5Rm9vdHByaW50KToKKyAgICAgICAgKiB3dGYvTWVtb3J5Rm9v
dHByaW50Lmg6CisKIDIwMTctMDItMDIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhIFNJR0lMTCBjcmFzaCBhbmFseXplciB0byBtYWtlIGRlYnVnZ2luZyBT
SUdJTExzIGVhc2llci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGZkZDg3MDE3MzllLi5lNDJlMGE1ZTk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zMzcsNiArMzM3LDggQEAKIAkJQThBNDc0ODcxNTFBODI1QjAw
NDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRh
LmggKi87IH07CiAJCUE4QTQ3NDhDMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3NDhCMTUxQTgyNjQw
MDQxMjNGRiAvKiBjb25maWcuaCAqLzsgfTsKIAkJQUQ3QzQzNEIxREQyQTRBNzAwMjY4ODhCIC8q
IEV4cGVjdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBRDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCAqLzsgfTsKKwkJQURGMkNF
NjYxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8q
IE1lbW9yeUZvb3RwcmludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUFERjJDRTY3MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURGMkNF
NjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5jcHAgKi87IH07CiAJCUIzOEZE
N0JEMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8q
IEZlYXR1cmVEZWZpbmVzLmggKi87IH07CiAJCUM0RjhBOTM3MTlDNjVFQjQwMEIyQjE1RCAvKiBT
dG9wd2F0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2guaCAqLzsgfTsKIAkJQzhCMEUx
QTFFMDFBNDg2RUI5NUUwRDExIC8qIEluZGV4U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTM3RTFEN0RCRDg0QUMzOEZBRTREMzQgLyogSW5kZXhT
ZXQuaCAqLzsgfTsKQEAgLTcxOSw2ICs3MjEsOCBAQAogCQlBOEE0NzM3QjE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
VEZUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3NDhCMTUx
QTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEN0M0MzRBMUREMkE0
QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFeHBlY3RlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBREYyQ0U2NDFFMzlG
MTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lbW9yeUZvb3RwcmludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUZvb3RwcmludC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIzOEZEN0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0
dXJlRGVmaW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZWF0dXJlRGVm
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNEY4QTkzNjE5QzY1RUI0MDBC
MkIxNUQgLyogU3RvcHdhdGNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3B3YXRjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0OTdBQTE1ODU3RDAz
MDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lZGlhVGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDA1
LDYgKzEwMDksOCBAQAogCQkJCUE4QTQ3MkNCMTUxQTgyNUIwMDQxMjNGRiAvKiBNRDUuaCAqLywK
IAkJCQlDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLywKIAkJCQlD
RDU0OTdBQjE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggKi8sCisJCQkJQURGMkNFNjQx
RTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oICovLAorCQkJCUFERjJDRTY1MUUz
OUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuY3BwICovLAogCQkJCUE4QTQ3MkNDMTUx
QTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCAqLywKIAkJCQlBOEE0NzJDRDE1MUE4MjVC
MDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJQThBNDcyQ0UxNTFBODI1QjAw
NDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuaCAqLywKQEAgLTE0OTQsNiArMTUwMCw3IEBACiAJCQkJ
QThBNDc0MUMxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZlB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QThBNDc0MUUxNTFBODI1QjAwNDEyM0ZGIC8qIFJldGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkNERUQwRjQxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAor
CQkJCUFERjJDRTY2MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0Njk0MTkyMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1MDk4QjAwMUMxNjlFMDcwMDA4Nzc5NyAvKiBTYW5kYm94U1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEYzQjBGNzE1RTQ1RTQ2MDAyMTAwNjkgLyogU2F0dXJh
dGVkQXJpdGhtZXRpYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNzAxLDYgKzE3MDgsNyBAQAogCQkJ
CTFBQ0FERDg0MTg4NDQ4MDEwMEQ4QjcxRCAvKiBEZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFy
aS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0FFMTUxQTgyNUIwMDQxMjNGRiAvKiBkaXkt
ZnAuY2MgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNCMDE1MUE4MjVCMDA0MTIzRkYgLyogZG91
YmxlLWNvbnZlcnNpb24uY2MgaW4gU291cmNlcyAqLywKKwkJCQlBREYyQ0U2NzFFMzlGMTA2MDA2
ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0JB
MTUxQTgyNUIwMDQxMjNGRiAvKiBkdG9hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Iz
MTUxQTgyNUIwMDQxMjNGRiAvKiBmYXN0LWR0b2EuY2MgaW4gU291cmNlcyAqLywKIAkJCQkwRjdD
NUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNThjMTE2YmRkMTEuLjgxYWY5MTI3NjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dApAQCAtNjQsNiArNjQsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBNYWxs
b2NQdHIuaAogICAgIE1hdGhFeHRyYXMuaAogICAgIE1lZGlhVGltZS5oCisgICAgTWVtb3J5Rm9v
dHByaW50LmgKICAgICBNZXNzYWdlUXVldWUuaAogICAgIE1ldGFBbGxvY2F0b3IuaAogICAgIE1l
dGFBbGxvY2F0b3JIYW5kbGUuaApAQCAtMjA0LDYgKzIwNSw3IEBAIHNldChXVEZfU09VUkNFUwog
ICAgIE1ENS5jcHAKICAgICBNYWluVGhyZWFkLmNwcAogICAgIE1lZGlhVGltZS5jcHAKKyAgICBN
ZW1vcnlGb290cHJpbnQuY3BwCiAgICAgTWV0YUFsbG9jYXRvci5jcHAKICAgICBNb25vdG9uaWNU
aW1lLmNwcAogICAgIE51bWJlck9mQ29yZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlGb290cHJpbnQuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGNjMGRlNjExYjEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuY3BwCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVtb3J5Rm9vdHByaW50LmgiCisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxtYWNoL21hY2guaD4KKyNpbmNsdWRlIDxtYWNo
L3Rhc2tfaW5mby5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCitzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbWVtb3J5Rm9vdHByaW50KCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB0
YXNrX3ZtX2luZm9fZGF0YV90IHZtSW5mbzsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNv
dW50ID0gVEFTS19WTV9JTkZPX0NPVU5UOworICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGFz
a19pbmZvKG1hY2hfdGFza19zZWxmKCksIFRBU0tfVk1fSU5GTywgKHRhc2tfaW5mb190KSAmdm1J
bmZvLCAmY291bnQpOworICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5m
by5waHlzX2Zvb3RwcmludCk7CisjZWxzZQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisjZW5k
aWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5Rm9vdHByaW50Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uN2I4ZWNhOGU5NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9NZW1vcnlGb290cHJpbnQuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbWVtb3J5Rm9v
dHByaW50KCk7CisKK30KKwordXNpbmcgV1RGOjptZW1vcnlGb290cHJpbnQ7CisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAxZTVhODIyMTQyMi4uMmVjNmZmNmY1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBA
QAorMjAxNy0wMi0wMyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgW01hY10gSW4tcHJvY2VzcyBtZW1vcnkgcHJlc3N1cmUgbW9uaXRvciBmb3IgV2ViQ29udGVu
dCBwcm9jZXNzZXMgQUtBIHdlYnNhbQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY3
NDkxPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAxMTYwNzI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgQWRkIGEgbmV3IHRpbWVyLWJhc2VkIG1l
bW9yeSBwcmVzc3VyZSBtb25pdG9yIHRoYXQgY2hlY2tzIHRoZSBwcm9jZXNzIG1lbW9yeQorICAg
ICAgICBmb290cHJpbnQgZXZlcnkgMzAgc2Vjb25kcyBhbmQgcmVhY3RzIHRvIGNoYW5nZXMgYnkg
c2V0dGluZyBhIE1lbW9yeVVzYWdlUG9saWN5LgorCisgICAgICAgIFRoZXJlIGFyZSBmb3VyIE1l
bW9yeVVzYWdlUG9saWN5IHZhbHVlczoKKworICAgICAgICAgICAgLSBVbnJlc3RyaWN0ZWQgKGJl
bG93IDFHQikKKyAgICAgICAgICAgIC0gQ29uc2VydmF0aXZlIChhYm92ZSAxR0IpCisgICAgICAg
ICAgICAtIFN0cmljdCAoYWJvdmUgMkdCKQorICAgICAgICAgICAgLSBQYW5pYyAoYWJvdmUgNEdC
LCBvciAzR0IgaWYgMzItYml0KQorCisgICAgICAgIEZvciBTdHJpY3QgYW5kIGFib3ZlLCB0aGUg
b2xkLXN0eWxlICJpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSIgQVBJIHdpbGwgcmV0dXJuIHRydWUu
CisKKyAgICAgICAgVHJhbnNpdGlvbmluZyB0byBhIGhpZ2hlciBwb2xpY3kgd2lsbCBjYXVzZSBt
ZW1vcnkgcHJlc3N1cmUgaGFuZGxlcnMgdG8gcnVuOgorCisgICAgICAgIEF0IFN0cmljdCwgd2Ug
cnVuIHRoZSAibm9uLWNyaXRpY2FsIiBtZW1vcnkgcHJlc3N1cmUgaGFuZGxlciwgdGhlbiBjYXJy
eSBvbi4KKworICAgICAgICBBdCBQYW5pYywgd2UgcnVuIHRoZSAiY3JpdGljYWwiIG1lbW9yeSBw
cmVzc3VyZSBoYW5kbGVyLiBJZiB0aGF0IGZhaWxzIHRvIHJlY292ZXIKKyAgICAgICAgZW5vdWdo
IG1lbW9yeSB0byBicmluZyB1cyBiYWNrIGJlbG93IDRHQiwgd2UgbWF5IGtpbGwgdGhlIHByb2Nl
c3M6CisKKyAgICAgICAgQSBwcm9jZXNzIGlzIGVsaWdpYmxlIHRvIGdldCBraWxsZWQgZm9yIHVz
aW5nIHRvbyBtdWNoIG1lbW9yeSBpZjoKKworICAgICAgICAgICAgLSBJdCdzIG5vdCB2aXNpYmxl
IG9uIHNjcmVlbiAoaS5lIGl0J3MgYSBiYWNrZ3JvdW5kIHRhYi4pCisgICAgICAgICAgICAtIEl0
J3Mgbm90IHBsYXlpbmcgYXVkaW8uCisgICAgICAgICAgICAtIEl0IGhhcyBub3QgcGVyZm9ybWVk
IGEgbWFpbiBmcmFtZSBuYXZpZ2F0aW9uIGluIHRoZSBsYXN0IGhvdXIuCisKKyAgICAgICAgQmVm
b3JlIGtpbGxpbmcgdGhlIHByb2Nlc3MsIGFuIGV4aXQtdGltZSBjYWxsYmFjayB3aWxsIHJ1bi4g
VGhpcyBwYXRjaCBpbnN0YWxscyBzdWNoCisgICAgICAgIGEgY2FsbGJhY2sgdGhhdCBwcmludHMg
b3V0IHNvbWUgdGltZS1vZi1kZWF0aCBzdGF0aXN0aWNzIGFib3V0IEMrKyBhbmQgSmF2YVNjcmlw
dCBtZW1vcnkKKyAgICAgICAgdXNhZ2UgdG8gaG9wZWZ1bGx5IGhlbHAgdW5kZXJzdGFuZCB3aGF0
IHdhcyBzb2FraW5nIHVwIGFsbCB0aGUgbWVtb3J5LgorCisgICAgICAgICogYmluZGluZ3MvanMv
Q29tbW9uVk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tbW9uVk1TbG93KToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNldFN0YXRlKToKKyAgICAgICAgKiBwYWdlL01haW5GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNYWluRnJhbWU6OmRpZENvbXBsZXRlTG9hZCk6CisgICAgICAgICogcGFnZS9NYWluRnJh
bWUuaDoKKyAgICAgICAgKiBwYWdlL01lbW9yeVJlbGVhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFnZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ01lbW9yeVN0YXRpc3RpY3NBdFRp
bWVPZkRlYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZEV4Y2VlZE1lbW9yeUxpbWl0QW5kRmFp
bGVkVG9SZWNvdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NJc0VsaWdpYmxlRm9yTWVt
b3J5S2lsbCk6CisgICAgICAgICogcGFnZS9NZW1vcnlSZWxlYXNlLmg6CisgICAgICAgICogcGFn
ZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmg6CisgICAgICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVz
YWdlVGhyZWFkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjp2bVBhZ2VTaXplKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01l
bW9yeU1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6dG9TdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6dGhyZXNob2xkRm9yUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OnBvbGljeUZvckZv
b3RwcmludCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1
cmVtZW50VGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldE1lbW9y
eUtpbGxDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldFByb2Nlc3NJc0VsaWdpYmxlRm9yTWVtb3J5S2lsbENhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aXNVbmRlck1lbW9yeVByZXNzdXJlKToKKwog
MjAxNy0wMi0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDcmFzaFRyYWNlcjogW1VTRVJdIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBj
b20uYXBwbGUuV2ViQ29yZTogV2ViQ29yZTo6VVJMOjpob3N0IGNvbnN0ICsgOQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCmluZGV4IGIxYjA2YWEwNzQwLi4wZDVhNGE2MDZl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NvbW1vblZNLmNwcApAQCAtNDYsMTAgKzQ2
LDYgQEAgVk0mIGNvbW1vblZNU2xvdygpCiAgICAgCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5p
dGlhbGl6ZVRocmVhZGluZygpOwogICAgIGdfY29tbW9uVk1Pck51bGwgPSAmVk06OmNyZWF0ZUxl
YWtlZChMYXJnZUhlYXApLmxlYWtSZWYoKTsKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQp
Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhHQ0hlYXBTaXplID0gNCAqIEdCOwotICAgIGdf
Y29tbW9uVk1Pck51bGwtPmhlYXAuc2V0TWF4TGl2ZVNpemUobWF4R0NIZWFwU2l6ZSk7Ci0jZW5k
aWYKICAgICBnX2NvbW1vblZNT3JOdWxsLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gQXQgYW55
IHRpbWUsIHdlIG1heSBkbyB0aGluZ3MgdGhhdCBhZmZlY3QgdGhlIEdDLgogI2lmICFQTEFURk9S
TShJT1MpCiAgICAgZ19jb21tb25WTU9yTnVsbC0+c2V0RXhjbHVzaXZlVGhyZWFkKHN0ZDo6dGhp
c190aHJlYWQ6OmdldF9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IGIyMTk0Y2M0YmZiLi40YTA4Mjc5YzgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCkBAIC0xNzQyLDcgKzE3NDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRTdGF0
ZShGcmFtZVN0YXRlIG5ld1N0YXRlKQogICAgICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKICAg
ICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAg
ICAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiBvbGRTdGF0ZSAhPSBuZXdTdGF0ZSkK
LSAgICAgICAgICAgIHN0YXRpY19jYXN0PE1haW5GcmFtZSY+KG1fZnJhbWUpLnBlcmZvcm1hbmNl
TG9nZ2luZygpLmRpZFJlYWNoUG9pbnRPZkludGVyZXN0KFBlcmZvcm1hbmNlTG9nZ2luZzo6TWFp
bkZyYW1lTG9hZENvbXBsZXRlZCk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWluRnJhbWUm
PihtX2ZyYW1lKS5kaWRDb21wbGV0ZUxvYWQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWFp
bkZyYW1lLmNwcAppbmRleCBhMTdiZTNiYjUzYS4uOGI2YmUzMTMyYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01haW5GcmFtZS5jcHAKQEAgLTk1LDYgKzk1LDEyIEBAIHZvaWQgTWFpbkZyYW1lOjpkcm9wQ2hp
bGRyZW4oKQogICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoKmNoaWxkKTsKIH0KIAordm9pZCBN
YWluRnJhbWU6OmRpZENvbXBsZXRlTG9hZCgpCit7CisgICAgbV90aW1lT2ZMYXN0Q29tcGxldGVk
TG9hZCA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIHBlcmZvcm1hbmNlTG9nZ2luZygpLmRp
ZFJlYWNoUG9pbnRPZkludGVyZXN0KFBlcmZvcm1hbmNlTG9nZ2luZzo6TWFpbkZyYW1lTG9hZENv
bXBsZXRlZCk7Cit9CisKICNpZiBQTEFURk9STShNQUMpCiBTY3JvbGxMYXRjaGluZ1N0YXRlKiBN
YWluRnJhbWU6OmxhdGNoaW5nU3RhdGUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9NYWluRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmgKaW5kZXgg
M2UwODhmMGJiZDQuLjM2OWRkYmFlZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01haW5GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWFpbkZyYW1lLmgKQEAgLTY5
LDYgKzY5LDkgQEAgcHVibGljOgogCiAgICAgUGVyZm9ybWFuY2VMb2dnaW5nJiBwZXJmb3JtYW5j
ZUxvZ2dpbmcoKSBjb25zdCB7IHJldHVybiAqbV9wZXJmb3JtYW5jZUxvZ2dpbmc7IH0KIAorICAg
IHZvaWQgZGlkQ29tcGxldGVMb2FkKCk7CisgICAgTW9ub3RvbmljVGltZSB0aW1lT2ZMYXN0Q29t
cGxldGVkTG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZU9mTGFzdENvbXBsZXRlZExvYWQ7IH0K
KwogcHJpdmF0ZToKICAgICBNYWluRnJhbWUoUGFnZSYsIFBhZ2VDb25maWd1cmF0aW9uJik7CiAK
QEAgLTkxLDYgKzk0LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBlcmZvcm1hbmNlTG9nZ2luZz4gbV9wZXJmb3JtYW5jZUxvZ2dpbmc7CisKKyAgICBNb25vdG9u
aWNUaW1lIG1fdGltZU9mTGFzdENvbXBsZXRlZExvYWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCBkNjQ0NDRjZjBk
YS4uMzY2MTJhODFhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAt
MjksMTIgKzI5LDE1IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiQ2hy
b21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tbW9uVk0uaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUg
IkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbmxpbmVTdHlsZVNoZWV0T3duZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAj
aW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFn
ZUNhY2hlLmgiCkBAIC00NSw2ICs0OCwxMCBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlICJSZXNvdXJjZVVzYWdlVGhyZWFkLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgdm9pZCByZWxlYXNlTm9uY3JpdGljYWxNZW1vcnkoKQpAQCAtMTI4LDYgKzEz
NSw4OCBAQCB2b2lkIHJlbGVhc2VNZW1vcnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3Vz
IHN5bmNocm9ub3VzKQogI2VuZGlmCiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK3N0
YXRpYyB1bnNpZ25lZCBwYWdlQ291bnQoKQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAg
ICBQYWdlOjpmb3JFYWNoUGFnZShbJl0gKFBhZ2UmIHBhZ2UpIHsKKyAgICAgICAgaWYgKCFwYWdl
LmlzVXRpbGl0eVBhZ2UoKSkKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgfSk7CisgICAgcmV0
dXJuIGNvdW50OworfQorI2VuZGlmCisKK3ZvaWQgbG9nTWVtb3J5U3RhdGlzdGljc0F0VGltZU9m
RGVhdGgoKQoreworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIGF1dG8gcGFnZVNpemUgPSB2bVBhZ2VTaXplKCk7CisgICAgYXV0byBwYWdlcyA9IHBh
Z2VzUGVyVk1UYWcoKTsKKworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiRGlydHkg
bWVtb3J5IHBlciBWTSB0YWcgYXQgdGltZSBvZiBkZWF0aDoiKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKKyAgICAgICAgc2l6ZV90IGRpcnR5ID0gcGFnZXNbaV0u
ZGlydHkgKiBwYWdlU2l6ZTsKKyAgICAgICAgaWYgKCFkaXJ0eSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBTdHJpbmcgdGFnTmFtZSA9IGRpc3BsYXlOYW1lRm9yVk1UYWcoaSk7Cisg
ICAgICAgIGlmICghdGFnTmFtZSkKKyAgICAgICAgICAgIHRhZ05hbWUgPSBTdHJpbmc6OmZvcm1h
dCgiVGFnICV1IiwgaSk7CisgICAgICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiJTE2
czogJWx1IE1CIiwgdGFnTmFtZS5sYXRpbjEoKS5kYXRhKCksIGRpcnR5IC8gTUIpOworICAgIH0K
KyNlbmRpZgorCisgICAgYXV0byYgdm0gPSBjb21tb25WTSgpOworICAgIFJFTEVBU0VfTE9HKE1l
bW9yeVByZXNzdXJlLCAiTWVtb3J5IHVzYWdlIHN0YXRpc3RpY3MgYXQgdGltZSBvZiBkZWF0aDoi
KTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkdDIGhlYXAgc2l6ZTogJXp1Iiwg
dm0uaGVhcC5zaXplKCkpOworICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiR0MgaGVh
cCBleHRyYSBtZW1vcnkgc2l6ZTogJXp1Iiwgdm0uaGVhcC5leHRyYU1lbW9yeVNpemUoKSk7Cisj
aWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQorICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJl
LCAiR0MgaGVhcCBleHRlcm5hbCBtZW1vcnk6ICV6dSIsIHZtLmhlYXAuZXh0ZXJuYWxNZW1vcnlT
aXplKCkpOworI2VuZGlmCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJHbG9iYWwg
b2JqZWN0IGNvdW50OiAlenUiLCB2bS5oZWFwLmdsb2JhbE9iamVjdENvdW50KCkpOworCisgICAg
UkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJQYWdlIGNvdW50OiAldSIsIHBhZ2VDb3VudCgp
KTsKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkRvY3VtZW50IGNvdW50OiAldSIs
IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS5zaXplKCkpOworICAgIFJFTEVBU0VfTE9HKE1lbW9y
eVByZXNzdXJlLCAiTGl2ZSBKYXZhU2NyaXB0IG9iamVjdHM6Iik7CisgICAgZm9yIChhdXRvJiBp
dCA6ICp2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMoKSkKKyAgICAgICAgUkVMRUFTRV9MT0coTWVt
b3J5UHJlc3N1cmUsICIgICVzOiAlZCIsIGl0LmtleSwgaXQudmFsdWUpOworI2VuZGlmCit9CisK
K3ZvaWQgZGlkRXhjZWVkTWVtb3J5TGltaXRBbmRGYWlsZWRUb1JlY292ZXIoKQoreworICAgIFJF
TEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiQ3Jhc2hpbmcgbm9uLXZpc2libGUgcHJvY2VzcyBk
dWUgdG8gZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSArIGluYWJpbGl0eSB0byBmcmVlIHVwIG1lbW9y
eSBiZWxvdyBwYW5pYyB0aHJlc2hvbGQuIik7CisgICAgbG9nTWVtb3J5U3RhdGlzdGljc0F0VGlt
ZU9mRGVhdGgoKTsKKyAgICBDUkFTSCgpOworfQorCitib29sIHByb2Nlc3NJc0VsaWdpYmxlRm9y
TWVtb3J5S2lsbCgpCit7CisgICAgYm9vbCBoYXNWaXNpYmxlUGFnZXMgPSBmYWxzZTsKKyAgICBi
b29sIGhhc0F1ZGlibGVQYWdlcyA9IGZhbHNlOworICAgIGJvb2wgaGFzTWFpbkZyYW1lTmF2aWdh
dGVkSW5UaGVMYXN0SG91ciA9IGZhbHNlOworCisgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKKyAgICBQYWdlOjpmb3JFYWNoUGFnZShbJl0gKFBhZ2UmIHBhZ2UpIHsKKyAgICAg
ICAgaWYgKHBhZ2UuaXNVdGlsaXR5UGFnZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAocGFnZS5pc1Zpc2libGUoKSkKKyAgICAgICAgICAgIGhhc1Zpc2libGVQYWdlcyA9IHRy
dWU7CisgICAgICAgIGlmIChwYWdlLmFjdGl2aXR5U3RhdGUoKSAmIEFjdGl2aXR5U3RhdGU6Oklz
QXVkaWJsZSkKKyAgICAgICAgICAgIGhhc0F1ZGlibGVQYWdlcyA9IHRydWU7CisgICAgICAgIGlm
IChhdXRvIHRpbWVPZkxhc3RDb21wbGV0ZWRMb2FkID0gcGFnZS5tYWluRnJhbWUoKS50aW1lT2ZM
YXN0Q29tcGxldGVkTG9hZCgpKSB7CisgICAgICAgICAgICBpZiAobm93IC0gdGltZU9mTGFzdENv
bXBsZXRlZExvYWQgPD0gU2Vjb25kczo6ZnJvbU1pbnV0ZXMoNjApKQorICAgICAgICAgICAgICAg
IGhhc01haW5GcmFtZU5hdmlnYXRlZEluVGhlTGFzdEhvdXIgPSB0cnVlOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBib29sIGVsaWdpYmxlID0gIWhhc1Zpc2libGVQYWdlcyAmJiAhaGFzQXVk
aWJsZVBhZ2VzICYmICFoYXNNYWluRnJhbWVOYXZpZ2F0ZWRJblRoZUxhc3RIb3VyOworICAgIGlm
ICghZWxpZ2libGUpCisgICAgICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiUHJvY2Vz
cyBub3QgZWxpZ2libGUgZm9yIHBhbmljIG1lbW9yeSBraWxsLiBSZWFzb25zOiBoYXNWaXNpYmxl
UGFnZXM9JXUsIGhhc0F1ZGlibGVQYWdlcz0ldSwgaGFzTWFpbkZyYW1lTmF2aWdhdGVkSW5UaGVM
YXN0SG91cj0ldSIsIGhhc1Zpc2libGVQYWdlcywgaGFzQXVkaWJsZVBhZ2VzLCBoYXNNYWluRnJh
bWVOYXZpZ2F0ZWRJblRoZUxhc3RIb3VyKTsKKworICAgIHJldHVybiBlbGlnaWJsZTsKK30KKwog
I2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5KENyaXRpY2Fs
KSB7IH0KIHZvaWQgamV0dGlzb25FeHBlbnNpdmVPYmplY3RzT25Ub3BMZXZlbE5hdmlnYXRpb24o
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmgKaW5kZXggMWQ5OTM3MmNhZjIuLmNk
NDEwYTEyYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuaApAQCAtMzMsNSArMzMs
OCBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbGVhc2VNZW1vcnkoQ3JpdGljYWwsIFN5bmNocm9u
b3VzKTsKIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKTsKIHZvaWQgamV0dGlz
b25FeHBlbnNpdmVPYmplY3RzT25Ub3BMZXZlbE5hdmlnYXRpb24oKTsKIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVnaXN0ZXJNZW1vcnlSZWxlYXNlTm90aWZ5Q2FsbGJhY2tzKCk7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIGxvZ01lbW9yeVN0YXRpc3RpY3NBdFRpbWVPZkRlYXRoKCk7CitXRUJDT1JFX0VY
UE9SVCBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZGlkRXhjZWVkTWVtb3J5TGltaXRBbmRG
YWlsZWRUb1JlY292ZXIoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgcHJvY2Vzc0lzRWxpZ2libGVG
b3JNZW1vcnlLaWxsKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmgKaW5kZXggZDk3MWY1ZWE4MzkuLjE4YTFlNjc1NDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaApAQCAtODAsNiAr
ODAsNyBAQCBzdHJ1Y3QgVGFnSW5mbyB7CiB9OwogCiBjb25zdCBjaGFyKiBkaXNwbGF5TmFtZUZv
clZNVGFnKHVuc2lnbmVkKTsKK3NpemVfdCB2bVBhZ2VTaXplKCk7CiBzdGQ6OmFycmF5PFRhZ0lu
Zm8sIDI1Nj4gcGFnZXNQZXJWTVRhZygpOwogdm9pZCBsb2dGb290cHJpbnRDb21wYXJpc29uKGNv
bnN0IHN0ZDo6YXJyYXk8VGFnSW5mbywgMjU2PiYsIGNvbnN0IHN0ZDo6YXJyYXk8VGFnSW5mbywg
MjU2PiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jl
c291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVz
b3VyY2VVc2FnZVRocmVhZENvY29hLm1tCmluZGV4IDY5MTM2YWRmNGY3Li4wNjRhNjFhY2NlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFk
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhy
ZWFkQ29jb2EubW0KQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgc2l6ZV90IHZtUGFnZVNpemUoKQorc2l6ZV90IHZtUGFnZVNpemUoKQogewogI2lmIFBM
QVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAw
CiAgICAgcmV0dXJuIHZtX2tlcm5lbF9wYWdlX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCBiOWFjMGU1OTAwZC4uY2Q0
MGFkYzEyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL01lbW9y
eUZvb3RwcmludC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDYgKzQ2LDExNyBA
QCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcigpCiB7CiB9CiAK
K3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1v
bml0b3IoYm9vbCB1c2UpCit7CisgICAgaWYgKHVzZSkgeworICAgICAgICBtX21lYXN1cmVtZW50
VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFu
ZGxlcj4+KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVh
c3VyZW1lbnRUaW1lckZpcmVkKTsKKyAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyLT5zdGFydFJl
cGVhdGluZygzMCk7CisgICAgfSBlbHNlCisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG51
bGxwdHI7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK3N0YXRpYyBjb25zdCBjaGFy
KiB0b1N0cmluZyhNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kpCit7CisgICAgc3dpdGNoIChwb2xp
Y3kpIHsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQ6IHJldHVybiAi
VW5yZXN0cmljdGVkIjsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpDb25zZXJ2YXRpdmU6
IHJldHVybiAiQ29uc2VydmF0aXZlIjsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJp
Y3Q6IHJldHVybiAiU3RyaWN0IjsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYzog
cmV0dXJuICJQYW5pYyI7CisgICAgfQorfQorI2VuZGlmCisKK3N0YXRpYyBzaXplX3QgdGhyZXNo
b2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5IHBvbGljeSkKK3sKKyAgICBzd2l0Y2ggKHBv
bGljeSkgeworICAgIGNhc2UgTWVtb3J5VXNhZ2VQb2xpY3k6OkNvbnNlcnZhdGl2ZToKKyAgICAg
ICAgcmV0dXJuIDEgKiBHQjsKKyAgICBjYXNlIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q6Cisg
ICAgICAgIHJldHVybiAyICogR0I7CisgICAgY2FzZSBNZW1vcnlVc2FnZVBvbGljeTo6UGFuaWM6
CisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQorICAgICAgICByZXR1cm4gNCAqIEdCOwor
I2Vsc2UKKyAgICAgICAgcmV0dXJuIDMgKiBHQjsKKyNlbmRpZgorICAgIGNhc2UgTWVtb3J5VXNh
Z2VQb2xpY3k6OlVucmVzdHJpY3RlZDoKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgTWVtb3J5
VXNhZ2VQb2xpY3kgcG9saWN5Rm9yRm9vdHByaW50KHNpemVfdCBmb290cHJpbnQpCit7CisgICAg
aWYgKGZvb3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OlBh
bmljKSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYzsKKyAgICBpZiAo
Zm9vdHByaW50ID49IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeTo6U3RyaWN0
KSkKKyAgICAgICAgcmV0dXJuIE1lbW9yeVVzYWdlUG9saWN5OjpTdHJpY3Q7CisgICAgaWYgKGZv
b3RwcmludCA+PSB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3k6OkNvbnNlcnZh
dGl2ZSkpCisgICAgICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6Q29uc2VydmF0aXZlOwor
ICAgIHJldHVybiBNZW1vcnlVc2FnZVBvbGljeTo6VW5yZXN0cmljdGVkOworfQorCit2b2lkIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKCkKK3sKKyAgICBhdXRv
IGZvb3RwcmludCA9IG1lbW9yeUZvb3RwcmludCgpOworICAgIGlmICghZm9vdHByaW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgIkN1cnJlbnQg
bWVtb3J5IGZvb3RwcmludDogJWx1IE1CIiwgZm9vdHByaW50LnZhbHVlKCkgLyBNQik7CisKKyAg
ICBhdXRvIG5ld1BvbGljeSA9IHBvbGljeUZvckZvb3RwcmludChmb290cHJpbnQudmFsdWUoKSk7
CisgICAgaWYgKG5ld1BvbGljeSA9PSBtX21lbW9yeVVzYWdlUG9saWN5KSB7CisgICAgICAgIGlm
IChtX21lbW9yeVVzYWdlUG9saWN5ICE9IE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJNZW1v
cnkgdXNhZ2Ugc3RpbGwgYWJvdmUgcGFuaWMgdGhyZXNob2xkIik7CisgICAgfSBlbHNlCisgICAg
ICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiTWVtb3J5IHVzYWdlIHBvbGljeSBjaGFu
Z2VkOiAlcyAtPiAlcyIsIHRvU3RyaW5nKG1fbWVtb3J5VXNhZ2VQb2xpY3kpLCB0b1N0cmluZyhu
ZXdQb2xpY3kpKTsKKworICAgIG1fbWVtb3J5VXNhZ2VQb2xpY3kgPSBuZXdQb2xpY3k7CisKKyAg
ICBpZiAobmV3UG9saWN5ID09IE1lbW9yeVVzYWdlUG9saWN5OjpVbnJlc3RyaWN0ZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChuZXdQb2xpY3kgPT0gTWVtb3J5VXNhZ2VQb2xpY3k6OkNv
bnNlcnZhdGl2ZSkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcG9saWN5IGJ5
IGNob29zaW5nIHdoaWNoIGNhY2hlcyBzaG91bGQgcmVzcGVjdCBpdCwgYW5kIGhvb2tpbmcgdGhl
bSB1cC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChuZXdQb2xpY3kgPT0gTWVt
b3J5VXNhZ2VQb2xpY3k6OlN0cmljdCkgeworICAgICAgICBSRUxFQVNFX0xPRyhNZW1vcnlQcmVz
c3VyZSwgIkF0dGVtcHRpbmcgdG8gcmVkdWNlIG1lbW9yeSBmb290cHJpbnQgYnkgZnJlZWluZyBs
ZXNzIGltcG9ydGFudCBvYmplY3RzLiIpOworICAgICAgICByZWxlYXNlTWVtb3J5KENyaXRpY2Fs
OjpObywgU3luY2hyb25vdXM6Ok5vKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJF
TEVBU0VfQVNTRVJUKG5ld1BvbGljeSA9PSBNZW1vcnlVc2FnZVBvbGljeTo6UGFuaWMpOworCisg
ICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJBdHRlbXB0aW5nIHRvIHJlZHVjZSBtZW1v
cnkgZm9vdHByaW50IGJ5IGZyZWVpbmcgbW9yZSBpbXBvcnRhbnQgb2JqZWN0cy4iKTsKKyAgICBp
ZiAobV9wcm9jZXNzSXNFbGlnaWJsZUZvck1lbW9yeUtpbGxDYWxsYmFjaykgeworICAgICAgICBp
ZiAoIW1fcHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1vcnlLaWxsQ2FsbGJhY2soKSkgeworICAgICAg
ICAgICAgcmVsZWFzZU1lbW9yeShDcml0aWNhbDo6WWVzLCBTeW5jaHJvbm91czo6Tm8pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgcmVsZWFzZU1lbW9yeShD
cml0aWNhbDo6WWVzLCBTeW5jaHJvbm91czo6WWVzKTsKKworICAgIC8vIFJlbWVhc3VyZSBmb290
cHJpbnQgdG8gc2VlIGhvdyB3ZWxsIHRoZSBwcmVzc3VyZSBoYW5kbGVyIGRpZC4KKyAgICBmb290
cHJpbnQgPSBtZW1vcnlGb290cHJpbnQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmb290cHJpbnQp
OworCisgICAgUkVMRUFTRV9MT0coTWVtb3J5UHJlc3N1cmUsICJOZXcgbWVtb3J5IGZvb3Rwcmlu
dDogJWx1IE1CIiwgZm9vdHByaW50LnZhbHVlKCkgLyBNQik7CisgICAgaWYgKGZvb3RwcmludC52
YWx1ZSgpIDwgdGhyZXNob2xkRm9yUG9saWN5KE1lbW9yeVVzYWdlUG9saWN5OjpQYW5pYykpIHsK
KyAgICAgICAgbV9tZW1vcnlVc2FnZVBvbGljeSA9IHBvbGljeUZvckZvb3RwcmludChmb290cHJp
bnQudmFsdWUoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HKE1lbW9yeVByZXNzdXJlLCAiUHJlc3N1
cmUgcmVkdWNlZCBiZWxvdyBwYW5pYyB0aHJlc2hvbGQuIE5ldyBtZW1vcnkgdXNhZ2UgcG9saWN5
OiAlcyIsIHRvU3RyaW5nKG1fbWVtb3J5VXNhZ2VQb2xpY3kpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChtX21lbW9yeUtpbGxDYWxsYmFjaykKKyAgICAgICAgbV9tZW1vcnlL
aWxsQ2FsbGJhY2soKTsKK30KKwogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmJlZ2luU2lt
dWxhdGVkTWVtb3J5UHJlc3N1cmUoKQogewogICAgIG1faXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1
cmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaAppbmRleCA2MDFhNDFlZGFlOC4uMDI4YWM4YzI2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC0zNCwxNiArMzQsMTYg
QEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgotI2VsaWYgT1MoTElOVVgpCi0jaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KKyNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8d3RmL2dsaWIv
R1JlZlB0ci5oPgogI2VuZGlmCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
NSw2ICs1NSwxMyBAQCBlbnVtIE1lbW9yeVByZXNzdXJlUmVhc29uIHsKIH07CiAjZW5kaWYKIAor
ZW51bSBjbGFzcyBNZW1vcnlVc2FnZVBvbGljeSB7CisgICAgVW5yZXN0cmljdGVkLCAvLyBBbGxv
Y2F0ZSBhcyBtdWNoIGFzIHlvdSB3YW50CisgICAgQ29uc2VydmF0aXZlLCAvLyBNYXliZSB5b3Ug
ZG9uJ3QgY2FjaGUgZXZlcnkgc2luZ2xlIHRoaW5nCisgICAgU3RyaWN0LCAvLyBUaW1lIHRvIHN0
YXJ0IHBpbmNoaW5nIHBlbm5pZXMgZm9yIHJlYWwKKyAgICBQYW5pYywgLy8gT0ggR09EIFdFJ1JF
IFNJTktJTkcsIFRIUk9XIEVWRVJZVEhJTkcgT1ZFUkJPQVJECit9OworCiBlbnVtIGNsYXNzIENy
aXRpY2FsIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBTeW5jaHJvbm91cyB7IE5vLCBZZXMgfTsK
IApAQCAtNjgsMTIgKzc1LDI0IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW5zdGFsbCgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaG91bGRVc2VQZXJpb2Rp
Y01lbW9yeU1vbml0b3IoYm9vbCk7CisKKyAgICB2b2lkIHNldE1lbW9yeUtpbGxDYWxsYmFjayhX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pIHsgbV9tZW1vcnlLaWxsQ2FsbGJhY2sgPSBX
VEZNb3ZlKGZ1bmN0aW9uKTsgfQorICAgIHZvaWQgc2V0UHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1v
cnlLaWxsQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjxib29sKCk+IGZ1bmN0aW9uKSB7IG1fcHJvY2Vz
c0lzRWxpZ2libGVGb3JNZW1vcnlLaWxsQ2FsbGJhY2sgPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQor
CiAgICAgdm9pZCBzZXRMb3dNZW1vcnlIYW5kbGVyKExvd01lbW9yeUhhbmRsZXImJiBoYW5kbGVy
KQogICAgIHsKICAgICAgICAgbV9sb3dNZW1vcnlIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsK
ICAgICB9CiAKLSAgICBib29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5kZXJNZW1vcnlQcmVzc3VyZSB8fCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlOyB9
CisgICAgYm9vbCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fdW5kZXJNZW1vcnlQcmVzc3VyZQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAg
ICAgIHx8IG1fbWVtb3J5VXNhZ2VQb2xpY3kgPj0gTWVtb3J5VXNhZ2VQb2xpY3k6OlN0cmljdAor
I2VuZGlmCisgICAgICAgICAgICB8fCBtX2lzU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlOworICAg
IH0KICAgICB2b2lkIHNldFVuZGVyTWVtb3J5UHJlc3N1cmUoYm9vbCBiKSB7IG1fdW5kZXJNZW1v
cnlQcmVzc3VyZSA9IGI7IH0KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTE0OSw2ICsxNjgsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwsIFN5
bmNocm9ub3VzID0gU3luY2hyb25vdXM6Ok5vKTsKICAgICB2b2lkIHBsYXRmb3JtUmVsZWFzZU1l
bW9yeShDcml0aWNhbCk7CiAKKyAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZGlkRXhj
ZWVkTWVtb3J5TGltaXRBbmRGYWlsZWRUb1JlY292ZXIoKTsKKyAgICB2b2lkIG1lYXN1cmVtZW50
VGltZXJGaXJlZCgpOworCiAjaWYgT1MoTElOVVgpCiAgICAgY2xhc3MgRXZlbnRGRFBvbGxlciB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50RkRQb2xsZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTE3MCwxMiArMTkyLDE2IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIGJvb2wgbV9pbnN0YWxsZWQgeyBmYWxzZSB9OwotICAgIHRpbWVfdCBtX2xhc3RSZXNwb25k
VGltZSB7IDAgfTsKICAgICBMb3dNZW1vcnlIYW5kbGVyIG1fbG93TWVtb3J5SGFuZGxlcjsKIAog
ICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fdW5kZXJNZW1vcnlQcmVzc3VyZTsKICAgICBib29sIG1f
aXNTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmUgeyBmYWxzZSB9OwogCisgICAgc3RkOjp1bmlxdWVf
cHRyPFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4+IG1fbWVhc3VyZW1lbnRU
aW1lcjsKKyAgICBNZW1vcnlVc2FnZVBvbGljeSBtX21lbW9yeVVzYWdlUG9saWN5IHsgTWVtb3J5
VXNhZ2VQb2xpY3k6OlVucmVzdHJpY3RlZCB9OworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBt
X21lbW9yeUtpbGxDYWxsYmFjazsKKyAgICBXVEY6OkZ1bmN0aW9uPGJvb2woKT4gbV9wcm9jZXNz
SXNFbGlnaWJsZUZvck1lbW9yeUtpbGxDYWxsYmFjazsKKwogI2lmIFBMQVRGT1JNKElPUykKICAg
ICAvLyBGSVhNRTogQ2FuIHdlIHNoYXJlIG1vcmUgb2YgdGhpcyB3aXRoIE9wZW5Tb3VyY2U/CiAg
ICAgdWludDMyX3QgbV9tZW1vcnlQcmVzc3VyZVJlYXNvbiB7IE1lbW9yeVByZXNzdXJlUmVhc29u
Tm9uZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDAwOGRiMTBjYjY2Li4zNzlkZjA5N2NjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTAyLTAzICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KKworICAgICAgICBbTWFjXSBJbi1wcm9jZXNzIG1lbW9yeSBwcmVzc3VyZSBtb25p
dG9yIGZvciBXZWJDb250ZW50IHByb2Nlc3NlcyBBS0Egd2Vic2FtCisgICAgICAgIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xNjc0OTE+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDExNjA3Mj4K
KworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBFbmFibGUg
dGhlIGluLXByb2Nlc3MgbWVtb3J5IG1vbml0b3IgZm9yIFdlYkNvbnRlbnQgcHJvY2Vzc2VzIG9u
IG1hY09TIDEwLjEyKworCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDE3
LTAyLTAyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjExNTM1LCByMjExNTY2LCBhbmQgcjIxMTU2OC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDlhZGQ3MDYzMjRi
Li41MWI0NTlkNmY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC0yNjEsNiArMjYxLDE1IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nl
c3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgICAgIG1l
bW9yeVByZXNzdXJlSGFuZGxlci5zZXRMb3dNZW1vcnlIYW5kbGVyKFtdIChDcml0aWNhbCBjcml0
aWNhbCwgU3luY2hyb25vdXMgc3luY2hyb25vdXMpIHsKICAgICAgICAgICAgIFdlYkNvcmU6OnJl
bGVhc2VNZW1vcnkoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKICAgICAgICAgfSk7CisjaWYgUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjAwCisg
ICAgICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5zZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1v
bml0b3IodHJ1ZSk7CisgICAgICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5zZXRNZW1vcnlLaWxs
Q2FsbGJhY2soW10gKCkgeworICAgICAgICAgICAgV2ViQ29yZTo6ZGlkRXhjZWVkTWVtb3J5TGlt
aXRBbmRGYWlsZWRUb1JlY292ZXIoKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1lbW9yeVByZXNz
dXJlSGFuZGxlci5zZXRQcm9jZXNzSXNFbGlnaWJsZUZvck1lbW9yeUtpbGxDYWxsYmFjayhbXSAo
KSB7CisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6cHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1v
cnlLaWxsKCk7CisgICAgICAgIH0pOworI2VuZGlmCiAgICAgICAgIG1lbW9yeVByZXNzdXJlSGFu
ZGxlci5pbnN0YWxsKCk7CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>