<?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>161669</bug_id>
          
          <creation_ts>2016-09-06 18:45:46 -0700</creation_ts>
          <short_desc>parseHTMLInteger() should take a StringView in parameter</short_desc>
          <delta_ts>2017-10-30 08:03:32 -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>DOM</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=161315</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>161885</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fred.wang</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1227002</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-06 18:45:46 -0700</bug_when>
    <thetext>parseHTMLInteger() should take a StringView in parameter instead of a const String&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227023</commentid>
    <comment_count>1</comment_count>
      <attachid>288091</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-06 19:38:20 -0700</bug_when>
    <thetext>Created attachment 288091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227031</commentid>
    <comment_count>2</comment_count>
      <attachid>288093</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-06 20:05:52 -0700</bug_when>
    <thetext>Created attachment 288093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227032</commentid>
    <comment_count>3</comment_count>
      <attachid>288094</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-06 20:27:47 -0700</bug_when>
    <thetext>Created attachment 288094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227994</commentid>
    <comment_count>4</comment_count>
      <attachid>288377</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-08 19:20:28 -0700</bug_when>
    <thetext>Created attachment 288377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228129</commentid>
    <comment_count>5</comment_count>
      <attachid>288377</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-09 08:50:37 -0700</bug_when>
    <thetext>Comment on attachment 288377
Patch

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

&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:118
&gt; -                builder.append(timeZoneName);
&gt; +                builder.append(String(timeZoneName));

There&apos;s no ChangeLog entry for this.  Could we do this without copying into a String?

&gt; Source/WTF/wtf/text/StringView.h:69
&gt;      StringView(const LChar*, unsigned length);
&gt;      StringView(const UChar*, unsigned length);
&gt; +    StringView(const char*);

I think we want a length parameter here like we do with the other pointer-based constructors to avoid accidentally adding strlen calls.  Or we could do something like this:

template&lt;unsigned charactersCount&gt;
StringView(const char (&amp;characters)[charactersCount]);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228132</commentid>
    <comment_count>6</comment_count>
      <attachid>288377</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-09 09:00:31 -0700</bug_when>
    <thetext>Comment on attachment 288377
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:118
&gt;&gt; +                builder.append(String(timeZoneName));
&gt; 
&gt; There&apos;s no ChangeLog entry for this.  Could we do this without copying into a String?

When timeZoneName is a char* then we could call append() directly. However, we run into trouble if timeZoneName is a const WCHAR*. I&apos;ll investigate further.

&gt;&gt; Source/WTF/wtf/text/StringView.h:69
&gt;&gt; +    StringView(const char*);
&gt; 
&gt; I think we want a length parameter here like we do with the other pointer-based constructors to avoid accidentally adding strlen calls.  Or we could do something like this:
&gt; 
&gt; template&lt;unsigned charactersCount&gt;
&gt; StringView(const char (&amp;characters)[charactersCount]);

The call sites I want to support do not have the length and want to pass a const char*.
This is consistent with StringBuilder::append(const char* characters) and String(const char* characters)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228137</commentid>
    <comment_count>7</comment_count>
      <attachid>288406</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-09 09:04:03 -0700</bug_when>
    <thetext>Created attachment 288406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228147</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-09 09:31:12 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 288377 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=288377&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:118
&gt; &gt;&gt; +                builder.append(String(timeZoneName));
&gt; &gt; 
&gt; &gt; There&apos;s no ChangeLog entry for this.  Could we do this without copying into a String?
&gt; 
&gt; When timeZoneName is a char* then we could call append() directly. However,
&gt; we run into trouble if timeZoneName is a const WCHAR*. I&apos;ll investigate
&gt; further.

As I thought, WCHAR* is causing trouble on Windows:
C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\runtime\DateConversion.cpp(118): error C2668: &apos;WTF::StringBuilder::append&apos;: ambiguous call to overloaded function [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\JavaScriptCore\JavaScriptCore.vcxproj]
  C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/text/StringBuilder.h(78): note: could be &apos;void WTF::StringBuilder::append(const WTF::StringBuilder &amp;)&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\runtime\DateConversion.cpp)
  C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/text/StringBuilder.h(152): note: or       &apos;void WTF::StringBuilder::append(char)&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\runtime\DateConversion.cpp)
  C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/text/StringBuilder.h(141): note: or       &apos;void WTF::StringBuilder::append(LChar)&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\runtime\DateConversion.cpp)
  C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/text/StringBuilder.h(125): note: or       &apos;void WTF::StringBuilder::append(UChar)&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\runtime\DateConversion.cpp)
  C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/text/StringBuilder.h(119): note: or       &apos;void WTF::StringBuilder::append(const char *)&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\runtime\DateConversion.cpp)
  C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/text/StringBuilder.h(97): note: or       &apos;void WTF::StringBuilder::append(WTF::StringView)&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\runtime\DateConversion.cpp)
  C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/text/StringBuilder.h(157): note: or       &apos;void WTF::StringBuilder::append(UChar32)&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\runtime\DateConversion.cpp)
  C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/text/StringBuilder.h(58): note: or       &apos;void WTF::StringBuilder::append(const WTF::String &amp;)&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\runtime\DateConversion.cpp)
  C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/text/StringBuilder.h(53): note: or       &apos;void WTF::StringBuilder::append(const WTF::AtomicString &amp;)&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\runtime\DateConversion.cpp)
  C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\runtime\DateConversion.cpp(118): note: while trying to match the argument list &apos;(const WCHAR *)&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228151</commentid>
    <comment_count>9</comment_count>
      <attachid>288408</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-09 09:38:21 -0700</bug_when>
    <thetext>Created attachment 288408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228473</commentid>
    <comment_count>10</comment_count>
      <attachid>288408</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-09-09 21:28:52 -0700</bug_when>
    <thetext>Comment on attachment 288408
Patch

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

&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:122
&gt; +#if OS(WINDOWS)
&gt; +                builder.append(String(timeZoneName));
&gt; +#else
&gt;                  builder.append(timeZoneName);
&gt; +#endif

Can we create timeZoneName as a String object in the above #if OS(WINDOWS) instead?

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:194
&gt; -Optional&lt;int&gt; parseHTMLInteger(const String&amp; input)
&gt; +Optional&lt;int&gt; parseHTMLInteger(StringView input)

Do we really want to pass by value here?  Why can&apos;t we just use a reference instead?

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:210
&gt; -Optional&lt;unsigned&gt; parseHTMLNonNegativeInteger(const String&amp; input)
&gt; +Optional&lt;unsigned&gt; parseHTMLNonNegativeInteger(StringView input)

Ditto.

&gt; Source/WebCore/html/parser/HTMLParserIdioms.h:136
&gt; -inline unsigned limitToOnlyHTMLNonNegativeNumbersGreaterThanZero(const String&amp; stringValue, unsigned defaultValue = 1)
&gt; +inline unsigned limitToOnlyHTMLNonNegativeNumbersGreaterThanZero(StringView stringValue, unsigned defaultValue = 1)

Ditto.

&gt; Source/WebCore/html/parser/HTMLParserIdioms.h:154
&gt; -inline unsigned limitToOnlyHTMLNonNegative(const String&amp; stringValue, unsigned defaultValue = 0)
&gt; +inline unsigned limitToOnlyHTMLNonNegative(StringView stringValue, unsigned defaultValue = 0)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228475</commentid>
    <comment_count>11</comment_count>
      <attachid>288408</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-09 22:36:09 -0700</bug_when>
    <thetext>Comment on attachment 288408
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:122
&gt;&gt; +#endif
&gt; 
&gt; Can we create timeZoneName as a String object in the above #if OS(WINDOWS) instead?

I thought about this but this will not reduce the ifdef&apos;ing because of the if (timezoneName[0]) above.

&gt;&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:194
&gt;&gt; +Optional&lt;int&gt; parseHTMLInteger(StringView input)
&gt; 
&gt; Do we really want to pass by value here?  Why can&apos;t we just use a reference instead?

This is intentional and the common pattern. StringView is a small object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228480</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-09-09 23:36:12 -0700</bug_when>
    <thetext>Well, I&apos;m not talking about the size but the runtime cost of having to create &amp; destroy StringView objects. It does a bunch of work in copy constructor.

Also, there is a bunch of other functions that take const StringView&amp;.  So what&apos;s the benefit / reason for passing StringView by value versus passing as a reference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228497</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-09-10 08:59:31 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Well, I&apos;m not talking about the size but the runtime cost of having to
&gt; create &amp; destroy StringView objects. It does a bunch of work in copy
&gt; constructor.
&gt; 
&gt; Also, there is a bunch of other functions that take const StringView&amp;.  So
&gt; what&apos;s the benefit / reason for passing StringView by value versus passing
&gt; as a reference?

I am also talking about runtime performance. StringView is small and contains on very simple data members (a bool, an unsigned and a pointer). Its implicit copy constructor only has to copy those data members which is cheap. Its destructor basically has nothing to do. The idea is that copying such small data types is likely cheaper than passing then by reference (similarly to IntPoint).

That said, I do not feel strongly about this. The reason I chose to pass by value honestly is because Darin asked me to do so in earlier reviews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228509</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-09-10 10:29:55 -0700</bug_when>
    <thetext>Okay. We might want to consider replacing const StringView&amp; with StringView if that&apos;s really preferable then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228510</commentid>
    <comment_count>15</comment_count>
      <attachid>288408</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-10 11:10:36 -0700</bug_when>
    <thetext>Comment on attachment 288408
Patch

Clearing flags on attachment: 288408

Committed r205787: &lt;http://trac.webkit.org/changeset/205787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228511</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-10 11:10:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228562</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-10 17:14:45 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Okay. We might want to consider replacing const StringView&amp; with StringView
&gt; if that&apos;s really preferable then.

Yes, Anders has said that we should do that. We should never use const StringView&amp;. We could measure to make absolutely sure it’s more efficient and then do it globally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228881</commentid>
    <comment_count>18</comment_count>
      <attachid>288408</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-12 14:05:29 -0700</bug_when>
    <thetext>Comment on attachment 288408
Patch

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

Some coding style tweak ideas.

We could consider adding a StringBuilder::append for CFStringRef; it would be used in at 10 call sites in this patch and if there is reason to want to avoid copying the string an extra time at even one of them then it would probably be worth it.

&gt; Source/WTF/wtf/text/StringView.h:199
&gt; +#include &lt;wtf/text/AtomicString.h&gt;
&gt;  #include &lt;wtf/text/WTFString.h&gt;

We should figure out what to do about the nest of string headers that all include one another. There may be a way to handle this that is better for compilation speed.

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:366
&gt; +    Optional&lt;unsigned&gt; number = parseHTMLNonNegativeInteger(StringView(numberStart, position - numberStart));

We may be able to write:

    parseHTMLNonNegativeInteger({ numberStart, position - numberStart })

If so, I think that’s nicer than StringView(). Maybe you agree?

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:291
&gt; -    return equalLettersIgnoringASCIICase(StringView(reinterpret_cast&lt;const UChar*&gt;(sqlite3_column_decltype16(m_statement, col))), &quot;blob&quot;);
&gt; +    return equalLettersIgnoringASCIICase(StringView(sqlite3_column_decltype(m_statement, col)), &quot;blob&quot;);

This is OK, but a bit peculiar. It seems strange to involve our string classes at when we want to compare two const char* in an ASCII case insensitive way.

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1296
&gt;          StringBuilder builder;
&gt; -        builder.append([NSString stringWithContentsOfFile:[[NSBundle bundleForClass:[WebCoreRenderThemeBundle class]] pathForResource:@&quot;mediaControlsiOS&quot; ofType:@&quot;css&quot;] encoding:NSUTF8StringEncoding error:nil]);
&gt; +        builder.append(String([NSString stringWithContentsOfFile:[[NSBundle bundleForClass:[WebCoreRenderThemeBundle class]] pathForResource:@&quot;mediaControlsiOS&quot; ofType:@&quot;css&quot;] encoding:NSUTF8StringEncoding error:nil]));
&gt;          m_mediaControlsStyleSheet = builder.toString();

Why involve a string builder at all?

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1312
&gt; +        scriptBuilder.append(String([NSString stringWithContentsOfFile:[[NSBundle bundleForClass:[WebCoreRenderThemeBundle class]] pathForResource:@&quot;mediaControlsLocalizedStrings&quot; ofType:@&quot;js&quot;] encoding:NSUTF8StringEncoding error:nil]));
&gt; +        scriptBuilder.append(String([NSString stringWithContentsOfFile:[[NSBundle bundleForClass:[WebCoreRenderThemeBundle class]] pathForResource:@&quot;mediaControlsApple&quot; ofType:@&quot;js&quot;] encoding:NSUTF8StringEncoding error:nil]));
&gt; +        scriptBuilder.append(String([NSString stringWithContentsOfFile:[[NSBundle bundleForClass:[WebCoreRenderThemeBundle class]] pathForResource:@&quot;mediaControlsiOS&quot; ofType:@&quot;js&quot;] encoding:NSUTF8StringEncoding error:nil]));
&gt;          m_mediaControlsScript = scriptBuilder.toString();

Does seem like a gratuitously inefficient way to read three files and decode UTF-8 all to make a string. Maybe doesn’t matter though since we do this only once.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:239
&gt;          StringBuilder styleSheetBuilder;
&gt; -        styleSheetBuilder.append([NSString stringWithContentsOfFile:[[NSBundle bundleForClass:[WebCoreRenderThemeBundle class]] pathForResource:@&quot;mediaControlsApple&quot; ofType:@&quot;css&quot;] encoding:NSUTF8StringEncoding error:nil]);
&gt; +        styleSheetBuilder.append(String([NSString stringWithContentsOfFile:[[NSBundle bundleForClass:[WebCoreRenderThemeBundle class]] pathForResource:@&quot;mediaControlsApple&quot; ofType:@&quot;css&quot;] encoding:NSUTF8StringEncoding error:nil]));
&gt;          m_mediaControlsStyleSheet = styleSheetBuilder.toString();

Same comment as above.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:253
&gt; +        scriptBuilder.append(String([NSString stringWithContentsOfFile:[[NSBundle bundleForClass:[WebCoreRenderThemeBundle class]] pathForResource:@&quot;mediaControlsLocalizedStrings&quot; ofType:@&quot;js&quot;] encoding:NSUTF8StringEncoding error:nil]));
&gt; +        scriptBuilder.append(String([NSString stringWithContentsOfFile:[[NSBundle bundleForClass:[WebCoreRenderThemeBundle class]] pathForResource:@&quot;mediaControlsApple&quot; ofType:@&quot;js&quot;] encoding:NSUTF8StringEncoding error:nil]));

And again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366019</commentid>
    <comment_count>19</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-30 08:03:32 -0700</bug_when>
    <thetext>*** Bug 161315 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288091</attachid>
            <date>2016-09-06 19:38:20 -0700</date>
            <delta_ts>2016-09-06 20:05:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161669-20160906193557.patch</filename>
            <type>text/plain</type>
            <size>19308</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUwNTFkZjA3MjA3ZjUwMjNhODcxZDg5
MWQ2ZjJmMjRkM2NlZDJkOTQuLjczOGI0MTllMWE5MTdkNzk5Nzg5YzljMTM2YTU3YjQ2ZWJmMjc3
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDktMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBT
dHJpbmdWaWV3IGluIHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYxNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIEFkZCBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoKSBvdmVybG9hZCB0YWtpbmcgYW4gQXRvbWljU3RyaW5nIGluIHBhcmFtZXRlci4KKyAgICAg
ICAgSXQgdXNlZCB0byBjYWxsIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmKSBp
bXBsaWNpdGx5IHdoZW4KKyAgICAgICAgcGFzc2luZyBhbiBBdG9taWNTdHJpbmcuIEhvd2V2ZXIs
IGl0IGlzIG5vdyBhbWJpZ3VvdXMgYmVjYXVzZSB0aGVyZQorICAgICAgICBpcyBhbiBvdmVybG9h
ZCB0YWtpbmcgYSBTdHJpbmdWaWV3LCBhbmQgaXQgaXMgbm93IHBvc3NpYmxlIHRvIGNvbnN0cnVj
dAorICAgICAgICBhIFN0cmluZ1ZpZXcgZnJvbSBhbiBBdG9taWNTdHJpbmcuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcpOgorICAgICAgICAtIEFkZCBTdHJpbmdWaWV3IGNvbnN0cnVjdG9yIHRha2luZyBhbiBB
dG9taWNTdHJpbmcgaW4gcGFyYW1ldGVyIGZvcgorICAgICAgICAgIGNvbnZlbmllbmNlLiBUaGlz
IGF2b2lkcyBoYXZpbmcgdG8gY2FsbCBBdG9taWNTdHJpbmc6OnN0cmluZygpCisgICAgICAgICAg
ZXhwbGljaXRseSBhdCBjYWxsIHNpdGVzLgorICAgICAgICAtIEFkZCBTdHJpbmdWaWV3IGNvbnN0
cnVjdG9yIHRha2luZyBhICdjb25zdCBjaGFyKicgaW4gcGFyYW1ldGVyIGZvcgorICAgICAgICAg
IHBlcmZvcm1hbmNlLiBUaGVyZSBhcmUgc2V2ZXJhbCBjYWxsIHNpdGVzIHRoYXQgd2VyZSBwYXNz
aW5nIGEgY29uc3QKKyAgICAgICAgICBjaGFyKiBhbmQgaW1wbGljaXRseSBjb25zdHJ1Y3Rpbmcg
YW4gdW5uZWNlc3NhcnkgU3RyaW5nIHRvIGNvbnN0cnVjdAorICAgICAgICAgIGEgU3RyaW5nVmll
dy4gVGhpcyBiZWNhbWUgbW9yZSBvYnZpb3VzIGJlY2F1c2UgdGhlIGNvbnN0cnVjdG9yIHRha2lu
ZworICAgICAgICAgIGFuIEF0b21pY1N0cmluZyBpbiBwYXJhbWV0ZXIgbWFkZSBzdWNoIGNhbGxz
IGFtYmlndW91cy4KKworCiAyMDE2LTA5LTA2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA1NTA0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDdiZjJkNzViZjI3ZDNhM2I3NTNiNDNkOTlkYWE2ZjQ3ZjAyMDc2OWMuLmQz
MTczNzRiNjY0ZTAwZDk3YjFjZGM1MGZjM2RlNzQ2OTliYjg5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MSBAQAogMjAxNi0wOS0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CisgICAgICAgIHBhcnNlSFRNTEludGVnZXIoKSBzaG91bGQgdGFrZSBhIFN0cmluZ1ZpZXcgaW4g
cGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE2NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRl
ciBpbnN0ZWFkIG9mIGEKKyAgICAgICAgY29uc3QgU3RyaW5nJi4KKworICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VG
b250RmFjZVNyY0xvY2FsKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU3RyaW5nOjp0b1N0cmluZ1ZpZXcpOgorICAg
ICAgICBBZGQgdG9TdHJpbmdWaWV3KCkgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBjb25zdHJ1Y3Rp
bmcgYSBTdHJpbmcgZm9yCisgICAgICAgIGNhbGxpbmcgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCku
CisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlSFRNTEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJlZnJlc2hJ
bnRlcm5hbCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6bGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmVOdW1iZXJzR3JlYXRlclRo
YW5aZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKToK
KyAgICAgICAgVGFrZSBhIFN0cmluZ1ZpZXcgaW4gcGFyYW1ldGVyIGluc3RlYWQgb2YgYSBjb25z
dCBTdHJpbmcmLgorCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmlzQ29sdW1uRGVjbGFyZWRBc0Js
b2IpOgorICAgICAgICBBdm9pZCB1bm5lY2Vzc2FyaWx5IGNvbnN0cnVjdGluZyBhIFN0cmluZyB0
byBjYWxsIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKCkKKyAgICAgICAgYnkgbGV2ZXJh
Z2luZyB0aGUgU3RyaW5nVmlldyBjb25zdHJ1Y3RvciB0YWtpbmcgYSAnY29uc3QgY2hhcionIGlu
IHBhcmFtZXRlci4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIEFkZCBjb25zdHJ1Y3RUZXh0UnVuKCkg
b3ZlcmxvYWQgdGFraW5nIGFuIEF0b21pY1N0cmluZy4gSXQgd2FzIG90aGVyd2lzZSBhbWJpZ3Vv
dXMKKyAgICAgICAgYmVjYXVzZSBib3RoIGEgU3RyaW5nIG9yIGEgU3RyaW5nVmlldyBjb3VsZCBi
ZSBjb25zdHJ1Y3RlZCBmcm9tIGFuIEF0b21pY1N0cmluZy4KKworICAgICAgICAqIHBhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zRGVmYXVsdEZvbnRDU1MpOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGREaXNwbGF5U3RyaW5nRm9yVHJhY2tCYXNlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU1hYzo6bWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6Om1lZGlhQ29udHJvbHNTY3JpcHQpOgorICAgICAgICBFeHBsaWNpdGx5IGNvbnN0
cnVjdCBhIFN0cmluZyBmcm9tIE5TU3RyaW5nIC8gQ0ZTdHJpbmdSZWYgdHlwZXMgYXMgc3VjaCBj
YWxscyBhcmUKKyAgICAgICAgbm93IGFtYmlndW91cy4KKworMjAxNi0wOS0wNiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEFsaWduIHNyY3NldCBhdHRyaWJ1dGUg
cGFyc2luZyB3aXRoIHRoZSBIVE1MIHNwZWNpZmljYXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTYzNgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oCmluZGV4IDgyMjRkMjJkNmI4ODI3ZmRkMTFlNjljYmE0NjA2MTQzMGM4MWRiMTQu
LjA1YjE1YmJmMDE0YWRhNGFiYzFjNGFjYWQ5ZWYwMTNlY2ZmOWI5OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oCkBAIC01MCw2ICs1MCwxMSBAQCBwdWJsaWM6CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMp
LCBsZW5ndGgpOyB9CiAKKyAgICB2b2lkIGFwcGVuZChjb25zdCBBdG9taWNTdHJpbmcmIGF0b21p
Y1N0cmluZykKKyAgICB7CisgICAgICAgIGFwcGVuZChhdG9taWNTdHJpbmcuc3RyaW5nKCkpOwor
ICAgIH0KKwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKICAg
ICAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4
IGJkN2U4ZjY0NjBiYjhiYTcxNWZjNTA3NDgzNzNjZjZjMTc4YzFiYWIuLmEzOWVhMDdkMjA3Yzk1
NTYwODE1NGExZTRiODU3MDZhMDE2NjBhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBA
IC02MCwxMSArNjAsMTMgQEAgcHVibGljOgogICAgIFN0cmluZ1ZpZXcmIG9wZXJhdG9yPShjb25z
dCBTdHJpbmdWaWV3Jik7CiAjZW5kaWYKIAorICAgIFN0cmluZ1ZpZXcoY29uc3QgQXRvbWljU3Ry
aW5nJik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmdWaWV3KGNv
bnN0IFN0cmluZ0ltcGwmKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwqKTsKICAg
ICBTdHJpbmdWaWV3KGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBTdHJpbmdW
aWV3KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBTdHJpbmdWaWV3KGNvbnN0
IGNoYXIqKTsKIAogICAgIHN0YXRpYyBTdHJpbmdWaWV3IGVtcHR5KCk7CiAKQEAgLTE5Myw2ICsx
OTUsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGEsIFN0cmluZ1ZpZXcg
YikgeyByZXR1cm4gIWVxdWFsKGIsIGEpOyB9CiAKIH0KIAorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKQEAgLTI4NSw2ICsyODgsMTEgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1Zp
ZXcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBpbml0aWFs
aXplKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKK2lubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdW
aWV3KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpCit7CisgICAgaW5pdGlhbGl6ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIHN0cmxlbihjaGFyYWN0ZXJzKSk7Cit9
CisKIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwmIHN0cmlu
ZykKIHsKICAgICBzZXRVbmRlcmx5aW5nU3RyaW5nKCZzdHJpbmcpOwpAQCAtMzIwLDYgKzMyOCwx
MSBAQCBpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsK
IH0KIAoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgQXRvbWljU3RyaW5nJiBh
dG9taWNTdHJpbmcpCisgICAgOiBTdHJpbmdWaWV3KGF0b21pY1N0cmluZy5zdHJpbmcoKSkKK3sK
K30KKwogaW5saW5lIHZvaWQgU3RyaW5nVmlldzo6Y2xlYXIoKQogewogICAgIG1fY2hhcmFjdGVy
cyA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKaW5kZXgg
ZDMwNzBlOGY1ZjM4YjJjMjM2MmM2ZDU4YTdmODgxNjQ4YjVlYjEwMC4uMTQ2NTU4ZDYxMGIyZjE1
MzdmNDhjMzZiZGEzNjVjYzZkOGI2MjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyLmNwcApAQCAtNzMyOCw3ICs3MzI4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9u
dEZhY2VTcmNMb2NhbChDU1NWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChsb2NhbFZhbHVlLT5zdHJpbmcpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobG9jYWxW
YWx1ZS0+c3RyaW5nLnRvU3RyaW5nVmlldygpKTsKICAgICAgICAgfQogICAgICAgICB2YWx1ZUxp
c3QuYXBwZW5kKENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZUxvY2FsKGJ1aWxkZXIudG9TdHJp
bmcoKSkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
VmFsdWVzLmgKaW5kZXggNDdkMDFiOWRkZGU1MWNmOGFjM2Q3NzViYWI2MDIwM2Q2NTgxZjkwNS4u
MWRkMmNmYTg3YTkxMjJjYTE2NzAyMmM5ZDUyN2ZjNjczYzhlNmIzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oCkBAIC04Nyw2ICs4Nyw3IEBAIHN0cnVj
dCBDU1NQYXJzZXJTdHJpbmcgewogCiAgICAgb3BlcmF0b3IgU3RyaW5nKCkgY29uc3QgeyByZXR1
cm4gaXM4Qml0KCkgPyBTdHJpbmcobV9kYXRhLmNoYXJhY3RlcnM4LCBtX2xlbmd0aCkgOiBTdHJp
bmcobV9kYXRhLmNoYXJhY3RlcnMxNiwgbV9sZW5ndGgpOyB9CiAgICAgb3BlcmF0b3IgQXRvbWlj
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gaXM4Qml0KCkgPyBBdG9taWNTdHJpbmcobV9kYXRhLmNo
YXJhY3RlcnM4LCBtX2xlbmd0aCkgOiBBdG9taWNTdHJpbmcobV9kYXRhLmNoYXJhY3RlcnMxNiwg
bV9sZW5ndGgpOyB9CisgICAgU3RyaW5nVmlldyB0b1N0cmluZ1ZpZXcoKSBjb25zdCB7IHJldHVy
biBpczhCaXQoKSA/IFN0cmluZ1ZpZXcobV9kYXRhLmNoYXJhY3RlcnM4LCBtX2xlbmd0aCkgOiBT
dHJpbmdWaWV3KG1fZGF0YS5jaGFyYWN0ZXJzMTYsIG1fbGVuZ3RoKTsgfQogCiAgICAgdW5pb24g
ewogICAgICAgICBMQ2hhciogY2hhcmFjdGVyczg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDRjN2I4OTZkODA0OWFhYTkwMDA2ZmVm
NmU0OWNjNTRhNWE0NjQyZmEuLjJjNjkxMzhkZTE5MDAyODMxNDQ4NzdmMTAyMjM3MTAyMGMxYTAw
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50
ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBjb24KIH0KIAogLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRt
bCNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwotT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRl
Z2VyKGNvbnN0IFN0cmluZyYgaW5wdXQpCitPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXIo
U3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgo
KTsKICAgICBpZiAoIWxlbmd0aCkKQEAgLTIwNyw3ICsyMDcsNyBAQCBPcHRpb25hbDxpbnQ+IHBh
cnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKIH0KIAogLy8gaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNydWxlcy1mb3It
cGFyc2luZy1ub24tbmVnYXRpdmUtaW50ZWdlcnMKLU9wdGlvbmFsPGludD4gcGFyc2VIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKGNvbnN0IFN0cmluZyYgaW5wdXQpCitPcHRpb25hbDxpbnQ+IHBhcnNl
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3IGlucHV0KQogewogICAgIE9wdGlvbmFs
PGludD4gc2lnbmVkVmFsdWUgPSBwYXJzZUhUTUxJbnRlZ2VyKGlucHV0KTsKICAgICBpZiAoIXNp
Z25lZFZhbHVlIHx8IHNpZ25lZFZhbHVlLnZhbHVlKCkgPCAwKQpAQCAtMzYzLDcgKzM2Myw3IEBA
IHN0YXRpYyBib29sIHBhcnNlSFRUUFJlZnJlc2hJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBl
KiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjCiAgICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kICYmIGlz
QVNDSUlEaWdpdCgqcG9zaXRpb24pKQogICAgICAgICArK3Bvc2l0aW9uOwogCi0gICAgT3B0aW9u
YWw8aW50PiBudW1iZXIgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyhu
dW1iZXJTdGFydCwgcG9zaXRpb24gLSBudW1iZXJTdGFydCkudG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpKTsKKyAgICBPcHRpb25hbDxpbnQ+IG51bWJlciA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50
ZWdlcihTdHJpbmdWaWV3KG51bWJlclN0YXJ0LCBwb3NpdGlvbiAtIG51bWJlclN0YXJ0KSk7CiAg
ICAgaWYgKCFudW1iZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IDI5Njg2NWNiNjllMGFkZGE2
OTVhMjI1ZTVlZTJiMDkzYzdkNDMxY2QuLjNhODAzMDJlZmRhZWNmY2FiMjcwZDZjNTBmNmM5NjRj
MzdkMTE0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsMTAg
KzYzLDEwIEBAIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcm
KTsKIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBkb3Vi
bGUgZmFsbGJhY2tWYWx1ZSk7CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCi1XRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJik7CitXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXIoU3RyaW5nVmlldyk7CiAK
IC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1
bGVzLWZvci1wYXJzaW5nLW5vbi1uZWdhdGl2ZS1pbnRlZ2VycwotV0VCQ09SRV9FWFBPUlQgT3B0
aW9uYWw8aW50PiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJik7CitX
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihT
dHJpbmdWaWV3KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdmFsaWQtbm9u
LW5lZ2F0aXZlLWludGVnZXIKIE9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2
ZUludGVnZXIoU3RyaW5nVmlldyk7CkBAIC0xMzIsNyArMTMzLDcgQEAgaW5saW5lIHVuc2lnbmVk
IGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVybyh1bnNpZ25l
ZCB2YWx1ZSwKICAgICByZXR1cm4gKHZhbHVlID4gMCAmJiB2YWx1ZSA8PSBtYXhIVE1MTm9uTmVn
YXRpdmVJbnRlZ2VyKSA/IHZhbHVlIDogZGVmYXVsdFZhbHVlOwogfQogCi1pbmxpbmUgdW5zaWdu
ZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvKGNvbnN0
IFN0cmluZyYgc3RyaW5nVmFsdWUsIHVuc2lnbmVkIGRlZmF1bHRWYWx1ZSA9IDEpCitpbmxpbmUg
dW5zaWduZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJv
KFN0cmluZ1ZpZXcgc3RyaW5nVmFsdWUsIHVuc2lnbmVkIGRlZmF1bHRWYWx1ZSA9IDEpCiB7CiAg
ICAgQVNTRVJUKGRlZmF1bHRWYWx1ZSA+IDApOwogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUgPD0g
bWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7CkBAIC0xNTAsNyArMTUxLDcgQEAgaW5saW5lIHVu
c2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25l
ZCBkZWZhdWx0VmFsdWUKICAgICByZXR1cm4gdmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50
ZWdlciA/IHZhbHVlIDogZGVmYXVsdFZhbHVlOwogfQogCi1pbmxpbmUgdW5zaWduZWQgbGltaXRU
b09ubHlIVE1MTm9uTmVnYXRpdmUoY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSwgdW5zaWduZWQg
ZGVmYXVsdFZhbHVlID0gMCkKK2lubGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdh
dGl2ZShTdHJpbmdWaWV3IHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUgPSAwKQog
ewogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7
CiAgICAgdW5zaWduZWQgdmFsdWUgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5n
VmFsdWUpLnZhbHVlT3IoZGVmYXVsdFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggMGVmN2RiM2YxZGJk
YmUxOGQ1YzM2NDRmYTE2MGZjYjg4NDIyOGExZi4uNWYwNWJiOTBmYTEyM2NiYmE2OTc0ZDBmMGU5
ZTQyYWI4NmJmYWNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTQzMiw3ICs0MzIsNyBAQCBTdHJpbmcgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zRGVmYXVsdEZvbnRDU1MoKSBjb25z
dAogICAgIAogICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHkpKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjogXCIiKTsKLSAg
ICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4obmFtZS5nZXQoKSkpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZyhzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4obmFtZS5n
ZXQoKSkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogICAgIGlmIChiZWhhdmlvciA9PSBr
TUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpCiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiICFpbXBvcnRhbnQiKTsKQEAgLTY0Miw3ICs2NDIsNyBAQCBzdGF0aWMgdm9p
ZCBidWlsZERpc3BsYXlTdHJpbmdGb3JUcmFja0Jhc2UoU3RyaW5nQnVpbGRlciYgZGlzcGxheU5h
bWUsIGNvbnN0IFRyYQogICAgICAgICBlbHNlIGlmICghbGFuZ3VhZ2UuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKGxhbmd1YWdlKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKGxvY2FsZUlkZW50aWZpZXIuZ2V0KCkpOworICAg
ICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKFN0cmluZyhsb2NhbGVJZGVudGlmaWVyLmdldCgp
KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnQuY3BwCmluZGV4IGQ2NmM4MTdmYTg3MzJlNGQxNTE4OTM5MTQ1NzhmYTNjZThmYzE3
NmQuLmU0Yzc3MWQ0M2VkMzgxY2MyYzEwNTZhZjhmZWI1ZThlNzA2ZjAwNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC0yODgsNyAr
Mjg4LDcgQEAgYm9vbCBTUUxpdGVTdGF0ZW1lbnQ6OmlzQ29sdW1uRGVjbGFyZWRBc0Jsb2IoaW50
IGNvbCkKICAgICAgICAgaWYgKHByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2Nv
bHVtbl9kZWNsdHlwZTE2KG1fc3RhdGVtZW50LCBjb2wpKSksICJibG9iIik7CisgICAgcmV0dXJu
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcoc3FsaXRlM19jb2x1bW5f
ZGVjbHR5cGUobV9zdGF0ZW1lbnQsIGNvbCkpLCAiYmxvYiIpOwogfQogCiBTdHJpbmcgU1FMaXRl
U3RhdGVtZW50OjpnZXRDb2x1bW5OYW1lKGludCBjb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCA2Nzg3ZmQxZGQyYmRiN2ZmYmMzYmMzNTJhNDAwNzBiMWVl
ZGE0MGY1Li45ODQ1YzM3NDk5NzAzM2Y3MTVlZTFmZTg2ZTFjN2UwNjY4ZTU0OWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTM4MDMsNiArMzgwMywxMSBA
QCBUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBjb25zdCBSZW5kZXJTdHlsZSYgcwogICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKFN0
cmluZ1ZpZXcoc3RyaW5nKSwgc3R5bGUsIGV4cGFuc2lvbiwgZmxhZ3MpOwogfQogCitUZXh0UnVu
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IEF0b21pY1N0cmluZyYgYXRvbWlj
U3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFu
c2lvbiwgVGV4dFJ1bkZsYWdzIGZsYWdzKQoreworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVu
KFN0cmluZ1ZpZXcoYXRvbWljU3RyaW5nKSwgc3R5bGUsIGV4cGFuc2lvbiwgZmxhZ3MpOworfQor
CiBUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQm
IHRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5z
aW9uKQogewogICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKHRleHQuc3RyaW5nVmlldygpLCBz
dHlsZSwgZXhwYW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5k
ZXggNzFmYjA5ZGIyYjJiYWJjZmFiODZkODgzNjY5NDVhN2JjMjkyMDhmZS4uYjdiNTA2ZGI2YmYx
NjI3YzExMGRjMDczZWFhMDEzNjE5MzgzNGQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKQEAgLTIwNyw2ICsyMDcsOCBAQCBwdWJsaWM6CiAgICAgICAgIEV4cGFuc2lv
bkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzID0gRGVmYXVsdFRleHRS
dW5GbGFncyk7CiAgICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBTdHJp
bmcmLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVm
YXVsdEV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzID0gRGVmYXVsdFRleHRSdW5GbGFncyk7CisgICAg
c3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBBdG9taWNTdHJpbmcmLCBjb25z
dCBSZW5kZXJTdHlsZSYsCisgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFu
c2lvbiwgVGV4dFJ1bkZsYWdzID0gRGVmYXVsdFRleHRSdW5GbGFncyk7CiAgICAgc3RhdGljIFRl
eHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgUmVuZGVyU3R5
bGUmLAogICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24pOwogICAg
IHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYsIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYjdiZmIxYTkyNGRkOWUx
OWFlODBhMWMxOTMyODRkZGQ0MzVmODlhNS4uM2FhZmQ2NWQyNmVhYzY1NDNjM2VmNTYxM2QwNGE4
MTA3YTVjZmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQpAQCAtMjM1LDcgKzIzNSw3IEBAIFN0cmluZyBSZW5kZXJUaGVtZU1hYzo6bWVkaWFDb250cm9s
c1N0eWxlU2hlZXQoKQogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAgaWYg
KG1fbWVkaWFDb250cm9sc1N0eWxlU2hlZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZ0J1
aWxkZXIgc3R5bGVTaGVldEJ1aWxkZXI7Ci0gICAgICAgIHN0eWxlU2hlZXRCdWlsZGVyLmFwcGVu
ZChbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgYnVuZGxlRm9y
Q2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpA
Im1lZGlhQ29udHJvbHNBcHBsZSIgb2ZUeXBlOkAiY3NzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmcgZXJyb3I6bmlsXSk7CisgICAgICAgIHN0eWxlU2hlZXRCdWlsZGVyLmFwcGVuZChT
dHJpbmcoW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRs
ZUZvckNsYXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3Vy
Y2U6QCJtZWRpYUNvbnRyb2xzQXBwbGUiIG9mVHlwZTpAImNzcyJdIGVuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pKTsKICAgICAgICAgbV9tZWRpYUNvbnRyb2xzU3R5bGVT
aGVldCA9IHN0eWxlU2hlZXRCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogICAgIHJldHVybiBt
X21lZGlhQ29udHJvbHNTdHlsZVNoZWV0OwpAQCAtMjQ5LDggKzI0OSw4IEBAIFN0cmluZyBSZW5k
ZXJUaGVtZU1hYzo6bWVkaWFDb250cm9sc1NjcmlwdCgpCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRS
T0xTX1NDUklQVCkKICAgICBpZiAobV9tZWRpYUNvbnRyb2xzU2NyaXB0LmlzRW1wdHkoKSkgewog
ICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7Ci0gICAgICAgIHNjcmlwdEJ1aWxk
ZXIuYXBwZW5kKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBi
dW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJl
c291cmNlOkAibWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3MiIG9mVHlwZTpAImpzIl0gZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSk7Ci0gICAgICAgIHNjcmlwdEJ1
aWxkZXIuYXBwZW5kKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRs
ZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZv
clJlc291cmNlOkAibWVkaWFDb250cm9sc0FwcGxlIiBvZlR5cGU6QCJqcyJdIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pOworICAgICAgICBzY3JpcHRCdWlsZGVyLmFw
cGVuZChTdHJpbmcoW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxl
IGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9y
UmVzb3VyY2U6QCJtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncyIgb2ZUeXBlOkAianMiXSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKSk7CisgICAgICAgIHNjcmlw
dEJ1aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxl
OltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFz
c11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNBcHBsZSIgb2ZUeXBlOkAianMiXSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKSk7CiAgICAgICAgIG1fbWVk
aWFDb250cm9sc1NjcmlwdCA9IHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAgICAg
cmV0dXJuIG1fbWVkaWFDb250cm9sc1NjcmlwdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5Y2FiNmY4N2UyNjQ1MWQ0MWEzOTA2NDA3MmRkZDk5
MTFlNjllYWE3Li4wNjRmNDIxMDIxZDBmYWNmY2Y5MzhhMmFjNGJkZTNmMTQ3NGNlN2UxIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTYtMDktMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFt
ZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYx
NjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhw
bGljaXRseSBjb25zdHJ1Y3QgYSBTdHJpbmcgZnJvbSB0aGUgQ0ZTdHJpbmdSZWYgaW4gb3JkZXIg
dG8gY2FsbAorICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoKS4gVGhpcyBpcyBuZWVkZWQg
bm93IHRoYXQgdGhlcmUgaXMgYW4gYXBwZW5kKCkKKyAgICAgICAgb3ZlcmxvYWQgdGFraW5nIGFu
IEF0b21pY1N0cmluZyBpbiBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZSk6CisKIDIwMTYtMDktMDUgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBs
ZW1lbnQgcmVsYXRpdmUgZmlsZSB1cmxzIGFuZCBiZWdpbiBpbXBsZW1lbnRpbmcgY2hhcmFjdGVy
IGVuY29kaW5nIGluIFVSTFBhcnNlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IDE4OTlh
OGIzYTNmNGQ3YzJiY2I0ZjdmNTk4MTVkZmE4MmE2NDBmNmYuLjc5OGE4NTUxMjIzM2U3NTAxZDQ1
MjcxNWE5NTZjZTdjZjljMzFjODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTg0Myw3
ICs4NDMsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZShX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZAogICAgIFdLUmV0YWluUHRyPFdLRGF0
YVJlZj4gd2tEYXRhID0gYWRvcHRXSyhXS0J1bmRsZUZyYW1lQ29weVdlYkFyY2hpdmUoZnJhbWUp
KTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZSgwLCBXS0RhdGFHZXRCeXRlcyh3a0RhdGEuZ2V0KCkpLCBXS0RhdGFHZXRTaXplKHdrRGF0YS5n
ZXQoKSkpKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gYWRvcHRDRihj
cmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoY2ZEYXRhLmdldCgpKSk7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoY2ZTdHJpbmcuZ2V0KCkpOworICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKFN0cmluZyhjZlN0cmluZy5nZXQoKSkpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288093</attachid>
            <date>2016-09-06 20:05:52 -0700</date>
            <delta_ts>2016-09-06 20:27:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161669-20160906200328.patch</filename>
            <type>text/plain</type>
            <size>22653</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUwNTFkZjA3MjA3ZjUwMjNhODcxZDg5
MWQ2ZjJmMjRkM2NlZDJkOTQuLjczOGI0MTllMWE5MTdkNzk5Nzg5YzljMTM2YTU3YjQ2ZWJmMjc3
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDktMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBT
dHJpbmdWaWV3IGluIHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYxNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIEFkZCBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoKSBvdmVybG9hZCB0YWtpbmcgYW4gQXRvbWljU3RyaW5nIGluIHBhcmFtZXRlci4KKyAgICAg
ICAgSXQgdXNlZCB0byBjYWxsIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmKSBp
bXBsaWNpdGx5IHdoZW4KKyAgICAgICAgcGFzc2luZyBhbiBBdG9taWNTdHJpbmcuIEhvd2V2ZXIs
IGl0IGlzIG5vdyBhbWJpZ3VvdXMgYmVjYXVzZSB0aGVyZQorICAgICAgICBpcyBhbiBvdmVybG9h
ZCB0YWtpbmcgYSBTdHJpbmdWaWV3LCBhbmQgaXQgaXMgbm93IHBvc3NpYmxlIHRvIGNvbnN0cnVj
dAorICAgICAgICBhIFN0cmluZ1ZpZXcgZnJvbSBhbiBBdG9taWNTdHJpbmcuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcpOgorICAgICAgICAtIEFkZCBTdHJpbmdWaWV3IGNvbnN0cnVjdG9yIHRha2luZyBhbiBB
dG9taWNTdHJpbmcgaW4gcGFyYW1ldGVyIGZvcgorICAgICAgICAgIGNvbnZlbmllbmNlLiBUaGlz
IGF2b2lkcyBoYXZpbmcgdG8gY2FsbCBBdG9taWNTdHJpbmc6OnN0cmluZygpCisgICAgICAgICAg
ZXhwbGljaXRseSBhdCBjYWxsIHNpdGVzLgorICAgICAgICAtIEFkZCBTdHJpbmdWaWV3IGNvbnN0
cnVjdG9yIHRha2luZyBhICdjb25zdCBjaGFyKicgaW4gcGFyYW1ldGVyIGZvcgorICAgICAgICAg
IHBlcmZvcm1hbmNlLiBUaGVyZSBhcmUgc2V2ZXJhbCBjYWxsIHNpdGVzIHRoYXQgd2VyZSBwYXNz
aW5nIGEgY29uc3QKKyAgICAgICAgICBjaGFyKiBhbmQgaW1wbGljaXRseSBjb25zdHJ1Y3Rpbmcg
YW4gdW5uZWNlc3NhcnkgU3RyaW5nIHRvIGNvbnN0cnVjdAorICAgICAgICAgIGEgU3RyaW5nVmll
dy4gVGhpcyBiZWNhbWUgbW9yZSBvYnZpb3VzIGJlY2F1c2UgdGhlIGNvbnN0cnVjdG9yIHRha2lu
ZworICAgICAgICAgIGFuIEF0b21pY1N0cmluZyBpbiBwYXJhbWV0ZXIgbWFkZSBzdWNoIGNhbGxz
IGFtYmlndW91cy4KKworCiAyMDE2LTA5LTA2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA1NTA0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDdiZjJkNzViZjI3ZDNhM2I3NTNiNDNkOTlkYWE2ZjQ3ZjAyMDc2OWMuLmQz
MTczNzRiNjY0ZTAwZDk3YjFjZGM1MGZjM2RlNzQ2OTliYjg5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MSBAQAogMjAxNi0wOS0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CisgICAgICAgIHBhcnNlSFRNTEludGVnZXIoKSBzaG91bGQgdGFrZSBhIFN0cmluZ1ZpZXcgaW4g
cGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE2NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRl
ciBpbnN0ZWFkIG9mIGEKKyAgICAgICAgY29uc3QgU3RyaW5nJi4KKworICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VG
b250RmFjZVNyY0xvY2FsKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU3RyaW5nOjp0b1N0cmluZ1ZpZXcpOgorICAg
ICAgICBBZGQgdG9TdHJpbmdWaWV3KCkgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBjb25zdHJ1Y3Rp
bmcgYSBTdHJpbmcgZm9yCisgICAgICAgIGNhbGxpbmcgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCku
CisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlSFRNTEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJlZnJlc2hJ
bnRlcm5hbCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6bGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmVOdW1iZXJzR3JlYXRlclRo
YW5aZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKToK
KyAgICAgICAgVGFrZSBhIFN0cmluZ1ZpZXcgaW4gcGFyYW1ldGVyIGluc3RlYWQgb2YgYSBjb25z
dCBTdHJpbmcmLgorCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmlzQ29sdW1uRGVjbGFyZWRBc0Js
b2IpOgorICAgICAgICBBdm9pZCB1bm5lY2Vzc2FyaWx5IGNvbnN0cnVjdGluZyBhIFN0cmluZyB0
byBjYWxsIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKCkKKyAgICAgICAgYnkgbGV2ZXJh
Z2luZyB0aGUgU3RyaW5nVmlldyBjb25zdHJ1Y3RvciB0YWtpbmcgYSAnY29uc3QgY2hhcionIGlu
IHBhcmFtZXRlci4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIEFkZCBjb25zdHJ1Y3RUZXh0UnVuKCkg
b3ZlcmxvYWQgdGFraW5nIGFuIEF0b21pY1N0cmluZy4gSXQgd2FzIG90aGVyd2lzZSBhbWJpZ3Vv
dXMKKyAgICAgICAgYmVjYXVzZSBib3RoIGEgU3RyaW5nIG9yIGEgU3RyaW5nVmlldyBjb3VsZCBi
ZSBjb25zdHJ1Y3RlZCBmcm9tIGFuIEF0b21pY1N0cmluZy4KKworICAgICAgICAqIHBhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zRGVmYXVsdEZvbnRDU1MpOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGREaXNwbGF5U3RyaW5nRm9yVHJhY2tCYXNlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU1hYzo6bWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6Om1lZGlhQ29udHJvbHNTY3JpcHQpOgorICAgICAgICBFeHBsaWNpdGx5IGNvbnN0
cnVjdCBhIFN0cmluZyBmcm9tIE5TU3RyaW5nIC8gQ0ZTdHJpbmdSZWYgdHlwZXMgYXMgc3VjaCBj
YWxscyBhcmUKKyAgICAgICAgbm93IGFtYmlndW91cy4KKworMjAxNi0wOS0wNiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEFsaWduIHNyY3NldCBhdHRyaWJ1dGUg
cGFyc2luZyB3aXRoIHRoZSBIVE1MIHNwZWNpZmljYXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTYzNgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMGI1N2YwMTJkNTYxNGMw
MjQ3YTA3YjQzNDAwZGU5NzViZDg4Zjg0Mi4uODJmMDIzODQwYjhkNjk5ZWVlZjgyNGFkYjIzZjQw
MzUyZTRmMzUzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b252ZXJzaW9uLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShj
b25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFz
CiAjZW5kaWYKICAgICAgICAgICAgIGlmICh0aW1lWm9uZU5hbWVbMF0pIHsKICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoIik7Ci0gICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQodGltZVpvbmVOYW1lKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChT
dHJpbmdWaWV3KHRpbWVab25lTmFtZSkpOwogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcpJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmgKaW5kZXggODIyNGQyMmQ2Yjg4MjdmZGQxMWU2OWNiYTQ2MDYxNDMwYzgxZGIxNC4uMDVi
MTViYmYwMTRhZGE0YWJjMWM0YWNhZDllZjAxM2VjZmY5Yjk5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmgKQEAgLTUwLDYgKzUwLDExIEBAIHB1YmxpYzoKIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxl
bmd0aCk7IH0KIAorICAgIHZvaWQgYXBwZW5kKGNvbnN0IEF0b21pY1N0cmluZyYgYXRvbWljU3Ry
aW5nKQorICAgIHsKKyAgICAgICAgYXBwZW5kKGF0b21pY1N0cmluZy5zdHJpbmcoKSk7CisgICAg
fQorCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewogICAgICAg
ICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggYmQ3
ZThmNjQ2MGJiOGJhNzE1ZmM1MDc0ODM3M2NmNmMxNzhjMWJhYi4uYTM5ZWEwN2QyMDdjOTU1NjA4
MTU0YTFlNGI4NTcwNmEwMTY2MGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTYw
LDExICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nVmlldyYgb3BlcmF0b3I9KGNvbnN0IFN0
cmluZ1ZpZXcmKTsKICNlbmRpZgogCisgICAgU3RyaW5nVmlldyhjb25zdCBBdG9taWNTdHJpbmcm
KTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZ1ZpZXcoY29uc3Qg
U3RyaW5nSW1wbCYpOwogICAgIFN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1wbCopOwogICAgIFN0
cmluZ1ZpZXcoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFN0cmluZ1ZpZXco
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFN0cmluZ1ZpZXcoY29uc3QgY2hh
ciopOwogCiAgICAgc3RhdGljIFN0cmluZ1ZpZXcgZW1wdHkoKTsKIApAQCAtMTkzLDYgKzE5NSw3
IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciogYSwgU3RyaW5nVmlldyBiKSB7
IHJldHVybiAhZXF1YWwoYiwgYSk7IH0KIAogfQogCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
VEYgewpAQCAtMjg1LDYgKzI4OCwxMSBAQCBpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgIGluaXRpYWxpemUo
Y2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXco
Y29uc3QgY2hhciogY2hhcmFjdGVycykKK3sKKyAgICBpbml0aWFsaXplKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgc3RybGVuKGNoYXJhY3RlcnMpKTsKK30KKwog
aW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nKQog
ewogICAgIHNldFVuZGVybHlpbmdTdHJpbmcoJnN0cmluZyk7CkBAIC0zMjAsNiArMzI4LDExIEBA
IGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAg
IGluaXRpYWxpemUoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOwogfQog
CitpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBBdG9taWNTdHJpbmcmIGF0b21p
Y1N0cmluZykKKyAgICA6IFN0cmluZ1ZpZXcoYXRvbWljU3RyaW5nLnN0cmluZygpKQoreworfQor
CiBpbmxpbmUgdm9pZCBTdHJpbmdWaWV3OjpjbGVhcigpCiB7CiAgICAgbV9jaGFyYWN0ZXJzID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAppbmRleCBkMzA3
MGU4ZjVmMzhiMmMyMzYyYzZkNThhN2Y4ODE2NDhiNWViMTAwLi4xNDY1NThkNjEwYjJmMTUzN2Y0
OGMzNmJkYTM2NWNjNmQ4YjYyNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXIuY3BwCkBAIC03MzI4LDcgKzczMjgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250RmFj
ZVNyY0xvY2FsKENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0KQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxv
Y2FsVmFsdWUtPnN0cmluZyk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsb2NhbFZhbHVl
LT5zdHJpbmcudG9TdHJpbmdWaWV3KCkpOwogICAgICAgICB9CiAgICAgICAgIHZhbHVlTGlzdC5h
cHBlbmQoQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlTG9jYWwoYnVpbGRlci50b1N0cmluZygp
KSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1
ZXMuaAppbmRleCA0N2QwMWI5ZGRkZTUxY2Y4YWMzZDc3NWJhYjYwMjAzZDY1ODFmOTA1Li4xZGQy
Y2ZhODdhOTEyMmNhMTY3MDIyYzlkNTI3ZmM2NzNjOGU2YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTg3LDYgKzg3LDcgQEAgc3RydWN0IENT
U1BhcnNlclN0cmluZyB7CiAKICAgICBvcGVyYXRvciBTdHJpbmcoKSBjb25zdCB7IHJldHVybiBp
czhCaXQoKSA/IFN0cmluZyhtX2RhdGEuY2hhcmFjdGVyczgsIG1fbGVuZ3RoKSA6IFN0cmluZyht
X2RhdGEuY2hhcmFjdGVyczE2LCBtX2xlbmd0aCk7IH0KICAgICBvcGVyYXRvciBBdG9taWNTdHJp
bmcoKSBjb25zdCB7IHJldHVybiBpczhCaXQoKSA/IEF0b21pY1N0cmluZyhtX2RhdGEuY2hhcmFj
dGVyczgsIG1fbGVuZ3RoKSA6IEF0b21pY1N0cmluZyhtX2RhdGEuY2hhcmFjdGVyczE2LCBtX2xl
bmd0aCk7IH0KKyAgICBTdHJpbmdWaWV3IHRvU3RyaW5nVmlldygpIGNvbnN0IHsgcmV0dXJuIGlz
OEJpdCgpID8gU3RyaW5nVmlldyhtX2RhdGEuY2hhcmFjdGVyczgsIG1fbGVuZ3RoKSA6IFN0cmlu
Z1ZpZXcobV9kYXRhLmNoYXJhY3RlcnMxNiwgbV9sZW5ndGgpOyB9CiAKICAgICB1bmlvbiB7CiAg
ICAgICAgIExDaGFyKiBjaGFyYWN0ZXJzODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggNGM3Yjg5NmQ4MDQ5YWFhOTAwMDZmZWY2ZTQ5
Y2M1NGE1YTQ2NDJmYS4uMmM2OTEzOGRlMTkwMDI4MzE0NDg3N2YxMDIyMzcxMDIwYzFhMDAzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAK
QEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2Vy
SW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbgogfQogCiAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI3J1
bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCi1PcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXIo
Y29uc3QgU3RyaW5nJiBpbnB1dCkKK09wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlcihTdHJp
bmdWaWV3IGlucHV0KQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwog
ICAgIGlmICghbGVuZ3RoKQpAQCAtMjA3LDcgKzIwNyw3IEBAIE9wdGlvbmFsPGludD4gcGFyc2VI
VE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0KQogfQogCiAvLyBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI3J1bGVzLWZvci1wYXJz
aW5nLW5vbi1uZWdhdGl2ZS1pbnRlZ2VycwotT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxOb25OZWdh
dGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKK09wdGlvbmFsPGludD4gcGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgT3B0aW9uYWw8aW50
PiBzaWduZWRWYWx1ZSA9IHBhcnNlSFRNTEludGVnZXIoaW5wdXQpOwogICAgIGlmICghc2lnbmVk
VmFsdWUgfHwgc2lnbmVkVmFsdWUudmFsdWUoKSA8IDApCkBAIC0zNjMsNyArMzYzLDcgQEAgc3Rh
dGljIGJvb2wgcGFyc2VIVFRQUmVmcmVzaEludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBv
c2l0aW9uLCBjb25zdCBDaGFyYWMKICAgICB3aGlsZSAocG9zaXRpb24gPCBlbmQgJiYgaXNBU0NJ
SURpZ2l0KCpwb3NpdGlvbikpCiAgICAgICAgICsrcG9zaXRpb247CiAKLSAgICBPcHRpb25hbDxp
bnQ+IG51bWJlciA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3KG51bWJl
clN0YXJ0LCBwb3NpdGlvbiAtIG51bWJlclN0YXJ0KS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkp
OworICAgIE9wdGlvbmFsPGludD4gbnVtYmVyID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KFN0cmluZ1ZpZXcobnVtYmVyU3RhcnQsIHBvc2l0aW9uIC0gbnVtYmVyU3RhcnQpKTsKICAgICBp
ZiAoIW51bWJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggMjk2ODY1Y2I2OWUwYWRkYTY5NWEy
MjVlNWVlMmIwOTNjN2Q0MzFjZC4uM2E4MDMwMmVmZGFlY2ZjYWIyNzBkNmM1MGY2Yzk2NGMzN2Qx
MTRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MiwxMCArNjMs
MTAgQEAgZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYpOwog
ZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBm
YWxsYmFja1ZhbHVlKTsKIAogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jcnVsZXMtZm9yLXBhcnNpbmctaW50ZWdlcnMKLVdFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlcihTdHJpbmdWaWV3KTsKIAogLy8g
aHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcnVsZXMt
Zm9yLXBhcnNpbmctbm9uLW5lZ2F0aXZlLWludGVnZXJzCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxpbnQ+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmKTsKK1dFQkNP
UkVfRVhQT1JUIE9wdGlvbmFsPGludD4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmlu
Z1ZpZXcpOwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN2YWxpZC1ub24tbmVn
YXRpdmUtaW50ZWdlcgogT3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50
ZWdlcihTdHJpbmdWaWV3KTsKQEAgLTEzMiw3ICsxMzMsNyBAQCBpbmxpbmUgdW5zaWduZWQgbGlt
aXRUb09ubHlIVE1MTm9uTmVnYXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvKHVuc2lnbmVkIHZh
bHVlLAogICAgIHJldHVybiAodmFsdWUgPiAwICYmIHZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2
ZUludGVnZXIpID8gdmFsdWUgOiBkZWZhdWx0VmFsdWU7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBs
aW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm8oY29uc3QgU3Ry
aW5nJiBzdHJpbmdWYWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlID0gMSkKK2lubGluZSB1bnNp
Z25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm8oU3Ry
aW5nVmlldyBzdHJpbmdWYWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlID0gMSkKIHsKICAgICBB
U1NFUlQoZGVmYXVsdFZhbHVlID4gMCk7CiAgICAgQVNTRVJUKGRlZmF1bHRWYWx1ZSA8PSBtYXhI
VE1MTm9uTmVnYXRpdmVJbnRlZ2VyKTsKQEAgLTE1MCw3ICsxNTEsNyBAQCBpbmxpbmUgdW5zaWdu
ZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUodW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIGRl
ZmF1bHRWYWx1ZQogICAgIHJldHVybiB2YWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
ID8gdmFsdWUgOiBkZWZhdWx0VmFsdWU7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBsaW1pdFRvT25s
eUhUTUxOb25OZWdhdGl2ZShjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZh
dWx0VmFsdWUgPSAwKQoraW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZl
KFN0cmluZ1ZpZXcgc3RyaW5nVmFsdWUsIHVuc2lnbmVkIGRlZmF1bHRWYWx1ZSA9IDApCiB7CiAg
ICAgQVNTRVJUKGRlZmF1bHRWYWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKTsKICAg
ICB1bnNpZ25lZCB2YWx1ZSA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihzdHJpbmdWYWx1
ZSkudmFsdWVPcihkZWZhdWx0VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCAwZWY3ZGIzZjFkYmRiZTE4
ZDVjMzY0NGZhMTYwZmNiODg0MjI4YTFmLi41ZjA1YmI5MGZhMTIzY2JiYTY5NzRkMGYwZTllNDJh
Yjg2YmZhY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNDMyLDcgKzQzMiw3IEBAIFN0cmluZyBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNEZWZhdWx0Rm9udENTUygpIGNvbnN0CiAg
ICAgCiAgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5
Rm9udEZhbWlseSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiBcIiIpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihuYW1lLmdldCgpKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoU3RyaW5nKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihuYW1lLmdldCgp
KSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAgICAgaWYgKGJlaGF2aW9yID09IGtNQUNh
cHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSkKICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgIWltcG9ydGFudCIpOwpAQCAtNjQyLDcgKzY0Miw3IEBAIHN0YXRpYyB2b2lkIGJ1
aWxkRGlzcGxheVN0cmluZ0ZvclRyYWNrQmFzZShTdHJpbmdCdWlsZGVyJiBkaXNwbGF5TmFtZSwg
Y29uc3QgVHJhCiAgICAgICAgIGVsc2UgaWYgKCFsYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICBkaXNwbGF5TmFtZS5hcHBlbmQobGFuZ3VhZ2UpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBkaXNwbGF5TmFtZS5hcHBlbmQobG9jYWxlSWRlbnRpZmllci5nZXQoKSk7CisgICAgICAg
ICAgICBkaXNwbGF5TmFtZS5hcHBlbmQoU3RyaW5nKGxvY2FsZUlkZW50aWZpZXIuZ2V0KCkpKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5jcHAKaW5kZXggZDY2YzgxN2ZhODczMmU0ZDE1MTg5MzkxNDU3OGZhM2NlOGZjMTc2ZC4u
ZTRjNzcxZDQzZWQzODFjYzJjMTA1NmFmOGZlYjVlOGU3MDZmMDA0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTI4OCw3ICsyODgs
NyBAQCBib29sIFNRTGl0ZVN0YXRlbWVudDo6aXNDb2x1bW5EZWNsYXJlZEFzQmxvYihpbnQgY29s
KQogICAgICAgICBpZiAocHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHNxbGl0ZTNfY29sdW1u
X2RlY2x0eXBlMTYobV9zdGF0ZW1lbnQsIGNvbCkpKSwgImJsb2IiKTsKKyAgICByZXR1cm4gZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyhzcWxpdGUzX2NvbHVtbl9kZWNs
dHlwZShtX3N0YXRlbWVudCwgY29sKSksICJibG9iIik7CiB9CiAKIFN0cmluZyBTUUxpdGVTdGF0
ZW1lbnQ6OmdldENvbHVtbk5hbWUoaW50IGNvbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IDY3ODdmZDFkZDJiZGI3ZmZiYzNiYzM1MmE0MDA3MGIxZWVkYTQw
ZjUuLjk4NDVjMzc0OTk3MDMzZjcxNWVlMWZlODZlMWM3ZTA2NjhlNTQ5ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzgwMyw2ICszODAzLDExIEBAIFRl
eHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGNvbnN0IFJlbmRlclN0eWxlJiBzCiAgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4oU3RyaW5n
VmlldyhzdHJpbmcpLCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7CiB9CiAKK1RleHRSdW4gUmVu
ZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgQXRvbWljU3RyaW5nJiBhdG9taWNTdHJp
bmcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9u
LCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCit7CisgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4oU3Ry
aW5nVmlldyhhdG9taWNTdHJpbmcpLCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7Cit9CisKIFRl
eHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYgdGV4
dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24p
CiB7CiAgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4odGV4dC5zdHJpbmdWaWV3KCksIHN0eWxl
LCBleHBhbnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCA3
MWZiMDlkYjJiMmJhYmNmYWI4NmQ4ODM2Njk0NWE3YmMyOTIwOGZlLi5iN2I1MDZkYjZiZjE2Mjdj
MTEwZGMwNzNlYWEwMTM2MTkzODM0ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaApAQCAtMjA3LDYgKzIwNyw4IEBAIHB1YmxpYzoKICAgICAgICAgRXhwYW5zaW9uQmVo
YXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZs
YWdzKTsKICAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0
RXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKKyAgICBzdGF0
aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFJl
bmRlclN0eWxlJiwKKyAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9u
LCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKICAgICBzdGF0aWMgVGV4dFJ1
biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYs
CiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbik7CiAgICAgc3Rh
dGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0JiwgdW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCBmOWM5YzkxZDA4YzhhOGNhMDZj
YTUyNTY2YjM3YjhlY2UxYmUwYTJiLi41OTA4OWE0M2U2NzE0YmFmNTJhMzQ2ZjQ3YjQwZjc3OTU1
NGJjN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBA
IC0xMjk1LDcgKzEyOTUsNyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVJT1M6Om1lZGlhQ29udHJvbHNT
dHlsZVNoZWV0KCkKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogICAgIGlmICht
X21lZGlhQ29udHJvbHNTdHlsZVNoZWV0LmlzRW1wdHkoKSkgewogICAgICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKFtOU1N0cmluZyBzdHJpbmdXaXRo
Q29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRo
ZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc2lPUyIgb2ZU
eXBlOkAiY3NzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRz
T2ZGaWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRs
ZSBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNpT1MiIG9mVHlwZTpAImNz
cyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pKTsKICAgICAgICAg
bV9tZWRpYUNvbnRyb2xzU3R5bGVTaGVldCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAg
ICAgcmV0dXJuIG1fbWVkaWFDb250cm9sc1N0eWxlU2hlZXQ7CkBAIC0xMzA5LDkgKzEzMDksOSBA
QCBTdHJpbmcgUmVuZGVyVGhlbWVJT1M6Om1lZGlhQ29udHJvbHNTY3JpcHQoKQogI2lmIEVOQUJM
RShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAgaWYgKG1fbWVkaWFDb250cm9sc1NjcmlwdC5p
c0VtcHR5KCkpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOwotICAgICAg
ICBzY3JpcHRCdWlsZGVyLmFwcGVuZChbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxl
OltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFz
c11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzIiBvZlR5
cGU6QCJqcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pOwotICAg
ICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZG
aWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBj
bGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNBcHBsZSIgb2ZUeXBlOkAianMi
XSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKTsKLSAgICAgICAgc2Ny
aXB0QnVpbGRlci5hcHBlbmQoW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05T
QnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBw
YXRoRm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRyb2xzaU9TIiBvZlR5cGU6QCJqcyJdIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pOworICAgICAgICBzY3JpcHRCdWlsZGVy
LmFwcGVuZChTdHJpbmcoW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVu
ZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRo
Rm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncyIgb2ZUeXBlOkAianMi
XSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKSk7CisgICAgICAgIHNj
cmlwdEJ1aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZG
aWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBj
bGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNBcHBsZSIgb2ZUeXBlOkAianMi
XSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKSk7CisgICAgICAgIHNj
cmlwdEJ1aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZG
aWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBj
bGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNpT1MiIG9mVHlwZTpAImpzIl0g
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSkpOwogICAgICAgICBtX21l
ZGlhQ29udHJvbHNTY3JpcHQgPSBzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogICAg
IHJldHVybiBtX21lZGlhQ29udHJvbHNTY3JpcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYjdiZmIxYTkyNGRkOWUxOWFlODBhMWMxOTMyODRkZGQ0
MzVmODlhNS4uM2FhZmQ2NWQyNmVhYzY1NDNjM2VmNTYxM2QwNGE4MTA3YTVjZmRmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjM1LDcgKzIzNSw3
IEBAIFN0cmluZyBSZW5kZXJUaGVtZU1hYzo6bWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKQogI2lm
IEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAgaWYgKG1fbWVkaWFDb250cm9sc1N0
eWxlU2hlZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgc3R5bGVTaGVldEJ1
aWxkZXI7Ci0gICAgICAgIHN0eWxlU2hlZXRCdWlsZGVyLmFwcGVuZChbTlNTdHJpbmcgc3RyaW5n
V2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5k
ZXJUaGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNBcHBs
ZSIgb2ZUeXBlOkAiY3NzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmls
XSk7CisgICAgICAgIHN0eWxlU2hlZXRCdWlsZGVyLmFwcGVuZChTdHJpbmcoW05TU3RyaW5nIHN0
cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3Jl
UmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRyb2xz
QXBwbGUiIG9mVHlwZTpAImNzcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9y
Om5pbF0pKTsKICAgICAgICAgbV9tZWRpYUNvbnRyb2xzU3R5bGVTaGVldCA9IHN0eWxlU2hlZXRC
dWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogICAgIHJldHVybiBtX21lZGlhQ29udHJvbHNTdHls
ZVNoZWV0OwpAQCAtMjQ5LDggKzI0OSw4IEBAIFN0cmluZyBSZW5kZXJUaGVtZU1hYzo6bWVkaWFD
b250cm9sc1NjcmlwdCgpCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKICAgICBp
ZiAobV9tZWRpYUNvbnRyb2xzU2NyaXB0LmlzRW1wdHkoKSkgewogICAgICAgICBTdHJpbmdCdWls
ZGVyIHNjcmlwdEJ1aWxkZXI7Ci0gICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2Vi
Q29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250
cm9sc0xvY2FsaXplZFN0cmluZ3MiIG9mVHlwZTpAImpzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmcgZXJyb3I6bmlsXSk7Ci0gICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFtOU1N0
cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpb
V2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFD
b250cm9sc0FwcGxlIiBvZlR5cGU6QCJqcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
IGVycm9yOm5pbF0pOworICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChTdHJpbmcoW05TU3Ry
aW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltX
ZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJtZWRpYUNv
bnRyb2xzTG9jYWxpemVkU3RyaW5ncyIgb2ZUeXBlOkAianMiXSBlbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZyBlcnJvcjpuaWxdKSk7CisgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFN0
cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhGb3JSZXNvdXJj
ZTpAIm1lZGlhQ29udHJvbHNBcHBsZSIgb2ZUeXBlOkAianMiXSBlbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZyBlcnJvcjpuaWxdKSk7CiAgICAgICAgIG1fbWVkaWFDb250cm9sc1NjcmlwdCA9
IHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAgICAgcmV0dXJuIG1fbWVkaWFDb250
cm9sc1NjcmlwdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA5Y2FiNmY4N2UyNjQ1MWQ0MWEzOTA2NDA3MmRkZDk5MTFlNjllYWE3Li4wNjRmNDIx
MDIxZDBmYWNmY2Y5MzhhMmFjNGJkZTNmMTQ3NGNlN2UxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDktMDYg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBwYXJzZUhUTUxJbnRl
Z2VyKCkgc2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNjY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwbGljaXRseSBjb25zdHJ1Y3Qg
YSBTdHJpbmcgZnJvbSB0aGUgQ0ZTdHJpbmdSZWYgaW4gb3JkZXIgdG8gY2FsbAorICAgICAgICBT
dHJpbmdCdWlsZGVyOjphcHBlbmQoKS4gVGhpcyBpcyBuZWVkZWQgbm93IHRoYXQgdGhlcmUgaXMg
YW4gYXBwZW5kKCkKKyAgICAgICAgb3ZlcmxvYWQgdGFraW5nIGFuIEF0b21pY1N0cmluZyBpbiBw
YXJhbWV0ZXIuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6
ZHVtcERPTUFzV2ViQXJjaGl2ZSk6CisKIDIwMTYtMDktMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgcmVsYXRpdmUgZmls
ZSB1cmxzIGFuZCBiZWdpbiBpbXBsZW1lbnRpbmcgY2hhcmFjdGVyIGVuY29kaW5nIGluIFVSTFBh
cnNlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IDE4OTlhOGIzYTNmNGQ3YzJiY2I0Zjdm
NTk4MTVkZmE4MmE2NDBmNmYuLjc5OGE4NTUxMjIzM2U3NTAxZDQ1MjcxNWE5NTZjZTdjZjljMzFj
ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZShXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBTdHJpbmdCdWlsZAogICAgIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gd2tEYXRhID0gYWRv
cHRXSyhXS0J1bmRsZUZyYW1lQ29weVdlYkFyY2hpdmUoZnJhbWUpKTsKICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCBXS0RhdGFHZXRCeXRl
cyh3a0RhdGEuZ2V0KCkpLCBXS0RhdGFHZXRTaXplKHdrRGF0YS5nZXQoKSkpKTsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gYWRvcHRDRihjcmVhdGVYTUxTdHJpbmdGcm9t
V2ViQXJjaGl2ZURhdGEoY2ZEYXRhLmdldCgpKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Y2ZTdHJpbmcuZ2V0KCkpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZyhjZlN0cmlu
Zy5nZXQoKSkpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288094</attachid>
            <date>2016-09-06 20:27:47 -0700</date>
            <delta_ts>2016-09-08 19:20:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161669-20160906202523.patch</filename>
            <type>text/plain</type>
            <size>22649</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUwNTFkZjA3MjA3ZjUwMjNhODcxZDg5
MWQ2ZjJmMjRkM2NlZDJkOTQuLjczOGI0MTllMWE5MTdkNzk5Nzg5YzljMTM2YTU3YjQ2ZWJmMjc3
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDktMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBT
dHJpbmdWaWV3IGluIHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYxNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIEFkZCBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoKSBvdmVybG9hZCB0YWtpbmcgYW4gQXRvbWljU3RyaW5nIGluIHBhcmFtZXRlci4KKyAgICAg
ICAgSXQgdXNlZCB0byBjYWxsIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmKSBp
bXBsaWNpdGx5IHdoZW4KKyAgICAgICAgcGFzc2luZyBhbiBBdG9taWNTdHJpbmcuIEhvd2V2ZXIs
IGl0IGlzIG5vdyBhbWJpZ3VvdXMgYmVjYXVzZSB0aGVyZQorICAgICAgICBpcyBhbiBvdmVybG9h
ZCB0YWtpbmcgYSBTdHJpbmdWaWV3LCBhbmQgaXQgaXMgbm93IHBvc3NpYmxlIHRvIGNvbnN0cnVj
dAorICAgICAgICBhIFN0cmluZ1ZpZXcgZnJvbSBhbiBBdG9taWNTdHJpbmcuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcpOgorICAgICAgICAtIEFkZCBTdHJpbmdWaWV3IGNvbnN0cnVjdG9yIHRha2luZyBhbiBB
dG9taWNTdHJpbmcgaW4gcGFyYW1ldGVyIGZvcgorICAgICAgICAgIGNvbnZlbmllbmNlLiBUaGlz
IGF2b2lkcyBoYXZpbmcgdG8gY2FsbCBBdG9taWNTdHJpbmc6OnN0cmluZygpCisgICAgICAgICAg
ZXhwbGljaXRseSBhdCBjYWxsIHNpdGVzLgorICAgICAgICAtIEFkZCBTdHJpbmdWaWV3IGNvbnN0
cnVjdG9yIHRha2luZyBhICdjb25zdCBjaGFyKicgaW4gcGFyYW1ldGVyIGZvcgorICAgICAgICAg
IHBlcmZvcm1hbmNlLiBUaGVyZSBhcmUgc2V2ZXJhbCBjYWxsIHNpdGVzIHRoYXQgd2VyZSBwYXNz
aW5nIGEgY29uc3QKKyAgICAgICAgICBjaGFyKiBhbmQgaW1wbGljaXRseSBjb25zdHJ1Y3Rpbmcg
YW4gdW5uZWNlc3NhcnkgU3RyaW5nIHRvIGNvbnN0cnVjdAorICAgICAgICAgIGEgU3RyaW5nVmll
dy4gVGhpcyBiZWNhbWUgbW9yZSBvYnZpb3VzIGJlY2F1c2UgdGhlIGNvbnN0cnVjdG9yIHRha2lu
ZworICAgICAgICAgIGFuIEF0b21pY1N0cmluZyBpbiBwYXJhbWV0ZXIgbWFkZSBzdWNoIGNhbGxz
IGFtYmlndW91cy4KKworCiAyMDE2LTA5LTA2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA1NTA0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDdiZjJkNzViZjI3ZDNhM2I3NTNiNDNkOTlkYWE2ZjQ3ZjAyMDc2OWMuLmQz
MTczNzRiNjY0ZTAwZDk3YjFjZGM1MGZjM2RlNzQ2OTliYjg5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MSBAQAogMjAxNi0wOS0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CisgICAgICAgIHBhcnNlSFRNTEludGVnZXIoKSBzaG91bGQgdGFrZSBhIFN0cmluZ1ZpZXcgaW4g
cGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE2NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRl
ciBpbnN0ZWFkIG9mIGEKKyAgICAgICAgY29uc3QgU3RyaW5nJi4KKworICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VG
b250RmFjZVNyY0xvY2FsKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU3RyaW5nOjp0b1N0cmluZ1ZpZXcpOgorICAg
ICAgICBBZGQgdG9TdHJpbmdWaWV3KCkgdG8gYXZvaWQgdW5uZWNlc3NhcmlseSBjb25zdHJ1Y3Rp
bmcgYSBTdHJpbmcgZm9yCisgICAgICAgIGNhbGxpbmcgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCku
CisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlSFRNTEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJlZnJlc2hJ
bnRlcm5hbCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6bGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmVOdW1iZXJzR3JlYXRlclRo
YW5aZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKToK
KyAgICAgICAgVGFrZSBhIFN0cmluZ1ZpZXcgaW4gcGFyYW1ldGVyIGluc3RlYWQgb2YgYSBjb25z
dCBTdHJpbmcmLgorCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmlzQ29sdW1uRGVjbGFyZWRBc0Js
b2IpOgorICAgICAgICBBdm9pZCB1bm5lY2Vzc2FyaWx5IGNvbnN0cnVjdGluZyBhIFN0cmluZyB0
byBjYWxsIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKCkKKyAgICAgICAgYnkgbGV2ZXJh
Z2luZyB0aGUgU3RyaW5nVmlldyBjb25zdHJ1Y3RvciB0YWtpbmcgYSAnY29uc3QgY2hhcionIGlu
IHBhcmFtZXRlci4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIEFkZCBjb25zdHJ1Y3RUZXh0UnVuKCkg
b3ZlcmxvYWQgdGFraW5nIGFuIEF0b21pY1N0cmluZy4gSXQgd2FzIG90aGVyd2lzZSBhbWJpZ3Vv
dXMKKyAgICAgICAgYmVjYXVzZSBib3RoIGEgU3RyaW5nIG9yIGEgU3RyaW5nVmlldyBjb3VsZCBi
ZSBjb25zdHJ1Y3RlZCBmcm9tIGFuIEF0b21pY1N0cmluZy4KKworICAgICAgICAqIHBhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zRGVmYXVsdEZvbnRDU1MpOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGREaXNwbGF5U3RyaW5nRm9yVHJhY2tCYXNlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU1hYzo6bWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6Om1lZGlhQ29udHJvbHNTY3JpcHQpOgorICAgICAgICBFeHBsaWNpdGx5IGNvbnN0
cnVjdCBhIFN0cmluZyBmcm9tIE5TU3RyaW5nIC8gQ0ZTdHJpbmdSZWYgdHlwZXMgYXMgc3VjaCBj
YWxscyBhcmUKKyAgICAgICAgbm93IGFtYmlndW91cy4KKworMjAxNi0wOS0wNiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEFsaWduIHNyY3NldCBhdHRyaWJ1dGUg
cGFyc2luZyB3aXRoIHRoZSBIVE1MIHNwZWNpZmljYXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTYzNgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMGI1N2YwMTJkNTYxNGMw
MjQ3YTA3YjQzNDAwZGU5NzViZDg4Zjg0Mi4uNjZkYTgwOTY1NWJkZGM3ODU4ODkyOWJmNmJmOWRl
N2Y5NTVhNTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b252ZXJzaW9uLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIFN0cmluZyBmb3JtYXREYXRlVGltZShj
b25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFz
CiAjZW5kaWYKICAgICAgICAgICAgIGlmICh0aW1lWm9uZU5hbWVbMF0pIHsKICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoIik7Ci0gICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQodGltZVpvbmVOYW1lKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChT
dHJpbmcodGltZVpvbmVOYW1lKSk7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJykn
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aAppbmRleCA4MjI0ZDIyZDZiODgyN2ZkZDExZTY5Y2JhNDYwNjE0MzBjODFkYjE0Li4wNWIxNWJi
ZjAxNGFkYTRhYmMxYzRhY2FkOWVmMDEzZWNmZjliOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaApAQCAtNTAsNiArNTAsMTEgQEAgcHVibGljOgogCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpIHsg
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3Ro
KTsgfQogCisgICAgdm9pZCBhcHBlbmQoY29uc3QgQXRvbWljU3RyaW5nJiBhdG9taWNTdHJpbmcp
CisgICAgeworICAgICAgICBhcHBlbmQoYXRvbWljU3RyaW5nLnN0cmluZygpKTsKKyAgICB9CisK
ICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAgIGlm
ICghc3RyaW5nLmxlbmd0aCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCBiZDdlOGY2
NDYwYmI4YmE3MTVmYzUwNzQ4MzczY2Y2YzE3OGMxYmFiLi5hMzllYTA3ZDIwN2M5NTU2MDgxNTRh
MWU0Yjg1NzA2YTAxNjYwYTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtNjAsMTEg
KzYwLDEzIEBAIHB1YmxpYzoKICAgICBTdHJpbmdWaWV3JiBvcGVyYXRvcj0oY29uc3QgU3RyaW5n
VmlldyYpOwogI2VuZGlmCiAKKyAgICBTdHJpbmdWaWV3KGNvbnN0IEF0b21pY1N0cmluZyYpOwog
ICAgIFN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBTdHJp
bmdJbXBsJik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsKik7CiAgICAgU3RyaW5n
Vmlldyhjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgU3RyaW5nVmlldyhjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKik7
CiAKICAgICBzdGF0aWMgU3RyaW5nVmlldyBlbXB0eSgpOwogCkBAIC0xOTMsNiArMTk1LDcgQEAg
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGFyKiBhLCBTdHJpbmdWaWV3IGIpIHsgcmV0
dXJuICFlcXVhbChiLCBhKTsgfQogCiB9CiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7
CkBAIC0yODUsNiArMjg4LDExIEBAIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgaW5pdGlhbGl6ZShjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogfQogCitpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25z
dCBjaGFyKiBjaGFyYWN0ZXJzKQoreworICAgIGluaXRpYWxpemUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBzdHJsZW4oY2hhcmFjdGVycykpOworfQorCiBpbmxp
bmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAg
ICAgc2V0VW5kZXJseWluZ1N0cmluZygmc3RyaW5nKTsKQEAgLTMyMCw2ICszMjgsMTEgQEAgaW5s
aW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgaW5p
dGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CiB9CiAKK2lu
bGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IEF0b21pY1N0cmluZyYgYXRvbWljU3Ry
aW5nKQorICAgIDogU3RyaW5nVmlldyhhdG9taWNTdHJpbmcuc3RyaW5nKCkpCit7Cit9CisKIGlu
bGluZSB2b2lkIFN0cmluZ1ZpZXc6OmNsZWFyKCkKIHsKICAgICBtX2NoYXJhY3RlcnMgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCmluZGV4IGQzMDcwZThm
NWYzOGIyYzIzNjJjNmQ1OGE3Zjg4MTY0OGI1ZWIxMDAuLjE0NjU1OGQ2MTBiMmYxNTM3ZjQ4YzM2
YmRhMzY1Y2M2ZDhiNjI1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5j
cHAKQEAgLTczMjgsNyArNzMyOCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlU3Jj
TG9jYWwoQ1NTVmFsdWVMaXN0JiB2YWx1ZUxpc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobG9jYWxW
YWx1ZS0+c3RyaW5nKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxvY2FsVmFsdWUtPnN0
cmluZy50b1N0cmluZ1ZpZXcoKSk7CiAgICAgICAgIH0KICAgICAgICAgdmFsdWVMaXN0LmFwcGVu
ZChDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGVMb2NhbChidWlsZGVyLnRvU3RyaW5nKCkpKTsK
ICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5o
CmluZGV4IDQ3ZDAxYjlkZGRlNTFjZjhhYzNkNzc1YmFiNjAyMDNkNjU4MWY5MDUuLjFkZDJjZmE4
N2E5MTIyY2ExNjcwMjJjOWQ1MjdmYzY3M2M4ZTZiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtODcsNiArODcsNyBAQCBzdHJ1Y3QgQ1NTUGFy
c2VyU3RyaW5nIHsKIAogICAgIG9wZXJhdG9yIFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIGlzOEJp
dCgpID8gU3RyaW5nKG1fZGF0YS5jaGFyYWN0ZXJzOCwgbV9sZW5ndGgpIDogU3RyaW5nKG1fZGF0
YS5jaGFyYWN0ZXJzMTYsIG1fbGVuZ3RoKTsgfQogICAgIG9wZXJhdG9yIEF0b21pY1N0cmluZygp
IGNvbnN0IHsgcmV0dXJuIGlzOEJpdCgpID8gQXRvbWljU3RyaW5nKG1fZGF0YS5jaGFyYWN0ZXJz
OCwgbV9sZW5ndGgpIDogQXRvbWljU3RyaW5nKG1fZGF0YS5jaGFyYWN0ZXJzMTYsIG1fbGVuZ3Ro
KTsgfQorICAgIFN0cmluZ1ZpZXcgdG9TdHJpbmdWaWV3KCkgY29uc3QgeyByZXR1cm4gaXM4Qml0
KCkgPyBTdHJpbmdWaWV3KG1fZGF0YS5jaGFyYWN0ZXJzOCwgbV9sZW5ndGgpIDogU3RyaW5nVmll
dyhtX2RhdGEuY2hhcmFjdGVyczE2LCBtX2xlbmd0aCk7IH0KIAogICAgIHVuaW9uIHsKICAgICAg
ICAgTENoYXIqIGNoYXJhY3RlcnM4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA0YzdiODk2ZDgwNDlhYWE5MDAwNmZlZjZlNDljYzU0
YTVhNDY0MmZhLi4yYzY5MTM4ZGUxOTAwMjgzMTQ0ODc3ZjEwMjIzNzEwMjBjMWEwMDMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAt
MTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXJJbnRl
cm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29uCiB9CiAKIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjcnVsZXMt
Zm9yLXBhcnNpbmctaW50ZWdlcnMKLU9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlcihjb25z
dCBTdHJpbmcmIGlucHV0KQorT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VyKFN0cmluZ1Zp
ZXcgaW5wdXQpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgICAg
aWYgKCFsZW5ndGgpCkBAIC0yMDcsNyArMjA3LDcgQEAgT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJ
bnRlZ2VyKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjcnVsZXMtZm9yLXBhcnNpbmct
bm9uLW5lZ2F0aXZlLWludGVnZXJzCi1PcHRpb25hbDxpbnQ+IHBhcnNlSFRNTE5vbk5lZ2F0aXZl
SW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0KQorT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxOb25O
ZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICBPcHRpb25hbDxpbnQ+IHNp
Z25lZFZhbHVlID0gcGFyc2VIVE1MSW50ZWdlcihpbnB1dCk7CiAgICAgaWYgKCFzaWduZWRWYWx1
ZSB8fCBzaWduZWRWYWx1ZS52YWx1ZSgpIDwgMCkKQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMg
Ym9vbCBwYXJzZUhUVFBSZWZyZXNoSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRp
b24sIGNvbnN0IENoYXJhYwogICAgIHdoaWxlIChwb3NpdGlvbiA8IGVuZCAmJiBpc0FTQ0lJRGln
aXQoKnBvc2l0aW9uKSkKICAgICAgICAgKytwb3NpdGlvbjsKIAotICAgIE9wdGlvbmFsPGludD4g
bnVtYmVyID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcobnVtYmVyU3Rh
cnQsIHBvc2l0aW9uIC0gbnVtYmVyU3RhcnQpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Cisg
ICAgT3B0aW9uYWw8aW50PiBudW1iZXIgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3Ry
aW5nVmlldyhudW1iZXJTdGFydCwgcG9zaXRpb24gLSBudW1iZXJTdGFydCkpOwogICAgIGlmICgh
bnVtYmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCAyOTY4NjVjYjY5ZTBhZGRhNjk1YTIyNWU1
ZWUyYjA5M2M3ZDQzMWNkLi4zYTgwMzAyZWZkYWVjZmNhYjI3MGQ2YzUwZjZjOTY0YzM3ZDExNGRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDEwICs2MywxMCBA
QCBkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJik7CiBkb3Vi
bGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgZG91YmxlIGZhbGxi
YWNrVmFsdWUpOwogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrLyNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwotV0VCQ09SRV9FWFBPUlQgT3B0
aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VyKFN0cmluZ1ZpZXcpOwogCiAvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNydWxlcy1mb3It
cGFyc2luZy1ub24tbmVnYXRpdmUtaW50ZWdlcnMKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGlu
dD4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9F
WFBPUlQgT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmll
dyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3ZhbGlkLW5vbi1uZWdhdGl2
ZS1pbnRlZ2VyCiBPcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KFN0cmluZ1ZpZXcpOwpAQCAtMTMyLDcgKzEzMyw3IEBAIGlubGluZSB1bnNpZ25lZCBsaW1pdFRv
T25seUhUTUxOb25OZWdhdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm8odW5zaWduZWQgdmFsdWUs
CiAgICAgcmV0dXJuICh2YWx1ZSA+IDAgJiYgdmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50
ZWdlcikgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIGxpbWl0
VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVybyhjb25zdCBTdHJpbmcm
IHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUgPSAxKQoraW5saW5lIHVuc2lnbmVk
IGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVybyhTdHJpbmdW
aWV3IHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUgPSAxKQogewogICAgIEFTU0VS
VChkZWZhdWx0VmFsdWUgPiAwKTsKICAgICBBU1NFUlQoZGVmYXVsdFZhbHVlIDw9IG1heEhUTUxO
b25OZWdhdGl2ZUludGVnZXIpOwpAQCAtMTUwLDcgKzE1MSw3IEBAIGlubGluZSB1bnNpZ25lZCBs
aW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSh1bnNpZ25lZCB2YWx1ZSwgdW5zaWduZWQgZGVmYXVs
dFZhbHVlCiAgICAgcmV0dXJuIHZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIgPyB2
YWx1ZSA6IGRlZmF1bHRWYWx1ZTsKIH0KIAotaW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRN
TE5vbk5lZ2F0aXZlKGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUsIHVuc2lnbmVkIGRlZmF1bHRW
YWx1ZSA9IDApCitpbmxpbmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUoU3Ry
aW5nVmlldyBzdHJpbmdWYWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlID0gMCkKIHsKICAgICBB
U1NFUlQoZGVmYXVsdFZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIpOwogICAgIHVu
c2lnbmVkIHZhbHVlID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKHN0cmluZ1ZhbHVlKS52
YWx1ZU9yKGRlZmF1bHRWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmluZGV4IDBlZjdkYjNmMWRiZGJlMThkNWMz
NjQ0ZmExNjBmY2I4ODQyMjhhMWYuLjVmMDViYjkwZmExMjNjYmJhNjk3NGQwZjBlOWU0MmFiODZi
ZmFjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUYuY3BwCkBAIC00MzIsNyArNDMyLDcgQEAgU3RyaW5nIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCkgY29uc3QKICAgICAK
ICAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlGb250
RmFtaWx5KSk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6IFwiIik7Ci0gICAgYnVpbGRl
ci5hcHBlbmQoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KG5hbWUuZ2V0KCkpKTsKKyAgICBidWls
ZGVyLmFwcGVuZChTdHJpbmcoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KG5hbWUuZ2V0KCkpKSk7
CiAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKICAgICBpZiAoYmVoYXZpb3IgPT0ga01BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKQogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiAhaW1wb3J0YW50Iik7CkBAIC02NDIsNyArNjQyLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRE
aXNwbGF5U3RyaW5nRm9yVHJhY2tCYXNlKFN0cmluZ0J1aWxkZXImIGRpc3BsYXlOYW1lLCBjb25z
dCBUcmEKICAgICAgICAgZWxzZSBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGRpc3BsYXlOYW1lLmFwcGVuZChsYW5ndWFnZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGRpc3BsYXlOYW1lLmFwcGVuZChsb2NhbGVJZGVudGlmaWVyLmdldCgpKTsKKyAgICAgICAgICAg
IGRpc3BsYXlOYW1lLmFwcGVuZChTdHJpbmcobG9jYWxlSWRlbnRpZmllci5nZXQoKSkpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0
YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmNwcAppbmRleCBkNjZjODE3ZmE4NzMyZTRkMTUxODkzOTE0NTc4ZmEzY2U4ZmMxNzZkLi5lNGM3
NzFkNDNlZDM4MWNjMmMxMDU2YWY4ZmViNWU4ZTcwNmYwMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMjg4LDcgKzI4OCw3IEBA
IGJvb2wgU1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkRlY2xhcmVkQXNCbG9iKGludCBjb2wpCiAg
ICAgICAgIGlmIChwcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3Ry
aW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3FsaXRlM19jb2x1bW5fZGVj
bHR5cGUxNihtX3N0YXRlbWVudCwgY29sKSkpLCAiYmxvYiIpOworICAgIHJldHVybiBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KHNxbGl0ZTNfY29sdW1uX2RlY2x0eXBl
KG1fc3RhdGVtZW50LCBjb2wpKSwgImJsb2IiKTsKIH0KIAogU3RyaW5nIFNRTGl0ZVN0YXRlbWVu
dDo6Z2V0Q29sdW1uTmFtZShpbnQgY29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKaW5kZXggNjc4N2ZkMWRkMmJkYjdmZmJjM2JjMzUyYTQwMDcwYjFlZWRhNDBmNS4u
OTg0NWMzNzQ5OTcwMzNmNzE1ZWUxZmU4NmUxYzdlMDY2OGU1NDlmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zODAzLDYgKzM4MDMsMTEgQEAgVGV4dFJ1
biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBTdHJpbmcmIHN0cmluZywgY29u
c3QgUmVuZGVyU3R5bGUmIHMKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3
KHN0cmluZyksIHN0eWxlLCBleHBhbnNpb24sIGZsYWdzKTsKIH0KIAorVGV4dFJ1biBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBBdG9taWNTdHJpbmcmIGF0b21pY1N0cmluZywg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRl
eHRSdW5GbGFncyBmbGFncykKK3sKKyAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdW
aWV3KGF0b21pY1N0cmluZyksIHN0eWxlLCBleHBhbnNpb24sIGZsYWdzKTsKK30KKwogVGV4dFJ1
biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0LCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKIHsK
ICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bih0ZXh0LnN0cmluZ1ZpZXcoKSwgc3R5bGUsIGV4
cGFuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDcxZmIw
OWRiMmIyYmFiY2ZhYjg2ZDg4MzY2OTQ1YTdiYzI5MjA4ZmUuLmI3YjUwNmRiNmJmMTYyN2MxMTBk
YzA3M2VhYTAxMzYxOTM4MzRkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCkBAIC0yMDcsNiArMjA3LDggQEAgcHVibGljOgogICAgICAgICBFeHBhbnNpb25CZWhhdmlv
ciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHRSdW5GbGFncyA9IERlZmF1bHRUZXh0UnVuRmxhZ3Mp
OwogICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgU3RyaW5nJiwgY29u
c3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBh
bnNpb24sIFRleHRSdW5GbGFncyA9IERlZmF1bHRUZXh0UnVuRmxhZ3MpOworICAgIHN0YXRpYyBU
ZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgUmVuZGVy
U3R5bGUmLAorICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRl
eHRSdW5GbGFncyA9IERlZmF1bHRUZXh0UnVuRmxhZ3MpOwogICAgIHN0YXRpYyBUZXh0UnVuIGNv
bnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAg
ICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uKTsKICAgICBzdGF0aWMg
VGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGY5YzljOTFkMDhjOGE4Y2EwNmNhNTI1
NjZiMzdiOGVjZTFiZTBhMmIuLjU5MDg5YTQzZTY3MTRiYWY1MmEzNDZmNDdiNDBmNzc5NTU0YmM3
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTEy
OTUsNyArMTI5NSw3IEBAIFN0cmluZyBSZW5kZXJUaGVtZUlPUzo6bWVkaWFDb250cm9sc1N0eWxl
U2hlZXQoKQogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAgaWYgKG1fbWVk
aWFDb250cm9sc1N0eWxlU2hlZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoW05TU3RyaW5nIHN0cmluZ1dpdGhDb250
ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlUmVuZGVyVGhlbWVC
dW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRyb2xzaU9TIiBvZlR5cGU6
QCJjc3MiXSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZp
bGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNs
YXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc2lPUyIgb2ZUeXBlOkAiY3NzIl0g
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSkpOwogICAgICAgICBtX21l
ZGlhQ29udHJvbHNTdHlsZVNoZWV0ID0gYnVpbGRlci50b1N0cmluZygpOwogICAgIH0KICAgICBy
ZXR1cm4gbV9tZWRpYUNvbnRyb2xzU3R5bGVTaGVldDsKQEAgLTEzMDksOSArMTMwOSw5IEBAIFN0
cmluZyBSZW5kZXJUaGVtZUlPUzo6bWVkaWFDb250cm9sc1NjcmlwdCgpCiAjaWYgRU5BQkxFKE1F
RElBX0NPTlRST0xTX1NDUklQVCkKICAgICBpZiAobV9tZWRpYUNvbnRyb2xzU2NyaXB0LmlzRW1w
dHkoKSkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxkZXI7Ci0gICAgICAgIHNj
cmlwdEJ1aWxkZXIuYXBwZW5kKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tO
U0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0g
cGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3MiIG9mVHlwZTpA
ImpzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSk7Ci0gICAgICAg
IHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6
W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNz
XV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc0FwcGxlIiBvZlR5cGU6QCJqcyJdIGVu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pOwotICAgICAgICBzY3JpcHRC
dWlsZGVyLmFwcGVuZChbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5k
bGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhG
b3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNpT1MiIG9mVHlwZTpAImpzIl0gZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSk7CisgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBw
ZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUg
YnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhGb3JS
ZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzIiBvZlR5cGU6QCJqcyJdIGVu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pKTsKKyAgICAgICAgc2NyaXB0
QnVpbGRlci5hcHBlbmQoU3RyaW5nKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6
W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNz
XV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc0FwcGxlIiBvZlR5cGU6QCJqcyJdIGVu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pKTsKKyAgICAgICAgc2NyaXB0
QnVpbGRlci5hcHBlbmQoU3RyaW5nKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6
W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNz
XV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc2lPUyIgb2ZUeXBlOkAianMiXSBlbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKSk7CiAgICAgICAgIG1fbWVkaWFD
b250cm9sc1NjcmlwdCA9IHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAgICAgcmV0
dXJuIG1fbWVkaWFDb250cm9sc1NjcmlwdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQppbmRleCBiN2JmYjFhOTI0ZGQ5ZTE5YWU4MGExYzE5MzI4NGRkZDQzNWY4
OWE1Li4zYWFmZDY1ZDI2ZWFjNjU0M2MzZWY1NjEzZDA0YTgxMDdhNWNmZGZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yMzUsNyArMjM1LDcgQEAg
U3RyaW5nIFJlbmRlclRoZW1lTWFjOjptZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpCiAjaWYgRU5B
QkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKICAgICBpZiAobV9tZWRpYUNvbnRyb2xzU3R5bGVT
aGVldC5pc0VtcHR5KCkpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBzdHlsZVNoZWV0QnVpbGRl
cjsKLSAgICAgICAgc3R5bGVTaGVldEJ1aWxkZXIuYXBwZW5kKFtOU1N0cmluZyBzdHJpbmdXaXRo
Q29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRo
ZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc0FwcGxlIiBv
ZlR5cGU6QCJjc3MiXSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKTsK
KyAgICAgICAgc3R5bGVTaGVldEJ1aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5n
V2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5k
ZXJUaGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNBcHBs
ZSIgb2ZUeXBlOkAiY3NzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmls
XSkpOwogICAgICAgICBtX21lZGlhQ29udHJvbHNTdHlsZVNoZWV0ID0gc3R5bGVTaGVldEJ1aWxk
ZXIudG9TdHJpbmcoKTsKICAgICB9CiAgICAgcmV0dXJuIG1fbWVkaWFDb250cm9sc1N0eWxlU2hl
ZXQ7CkBAIC0yNDksOCArMjQ5LDggQEAgU3RyaW5nIFJlbmRlclRoZW1lTWFjOjptZWRpYUNvbnRy
b2xzU2NyaXB0KCkKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogICAgIGlmICht
X21lZGlhQ29udHJvbHNTY3JpcHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
c2NyaXB0QnVpbGRlcjsKLSAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoW05TU3RyaW5nIHN0
cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3Jl
UmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRyb2xz
TG9jYWxpemVkU3RyaW5ncyIgb2ZUeXBlOkAianMiXSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZyBlcnJvcjpuaWxdKTsKLSAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoW05TU3RyaW5n
IHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJD
b3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRy
b2xzQXBwbGUiIG9mVHlwZTpAImpzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJy
b3I6bmlsXSk7CisgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcg
c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNv
cmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJv
bHNMb2NhbGl6ZWRTdHJpbmdzIiBvZlR5cGU6QCJqcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nIGVycm9yOm5pbF0pKTsKKyAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoU3RyaW5n
KFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JD
bGFzczpbV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAi
bWVkaWFDb250cm9sc0FwcGxlIiBvZlR5cGU6QCJqcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nIGVycm9yOm5pbF0pKTsKICAgICAgICAgbV9tZWRpYUNvbnRyb2xzU2NyaXB0ID0gc2Ny
aXB0QnVpbGRlci50b1N0cmluZygpOwogICAgIH0KICAgICByZXR1cm4gbV9tZWRpYUNvbnRyb2xz
U2NyaXB0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDljYWI2Zjg3ZTI2NDUxZDQxYTM5MDY0MDcyZGRkOTkxMWU2OWVhYTcuLjA2NGY0MjEwMjFk
MGZhY2ZjZjkzOGEyYWM0YmRlM2YxNDc0Y2U3ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0wOS0wNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIHBhcnNlSFRNTEludGVnZXIo
KSBzaG91bGQgdGFrZSBhIFN0cmluZ1ZpZXcgaW4gcGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE2NjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBsaWNpdGx5IGNvbnN0cnVjdCBhIFN0
cmluZyBmcm9tIHRoZSBDRlN0cmluZ1JlZiBpbiBvcmRlciB0byBjYWxsCisgICAgICAgIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZCgpLiBUaGlzIGlzIG5lZWRlZCBub3cgdGhhdCB0aGVyZSBpcyBhbiBh
cHBlbmQoKQorICAgICAgICBvdmVybG9hZCB0YWtpbmcgYW4gQXRvbWljU3RyaW5nIGluIHBhcmFt
ZXRlci4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1w
RE9NQXNXZWJBcmNoaXZlKToKKwogMjAxNi0wOS0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCByZWxhdGl2ZSBmaWxlIHVy
bHMgYW5kIGJlZ2luIGltcGxlbWVudGluZyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gVVJMUGFyc2Vy
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggMTg5OWE4YjNhM2Y0ZDdjMmJjYjRmN2Y1OTgx
NWRmYTgyYTY0MGY2Zi4uNzk4YTg1NTEyMjMzZTc1MDFkNDUyNzE1YTk1NmNlN2NmOWMzMWM4MCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlOjpkdW1wRE9NQXNXZWJBcmNoaXZlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IFN0cmluZ0J1aWxkCiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiB3a0RhdGEgPSBhZG9wdFdL
KFdLQnVuZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZShmcmFtZSkpOwogICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIFdLRGF0YUdldEJ5dGVzKHdr
RGF0YS5nZXQoKSksIFdLRGF0YUdldFNpemUod2tEYXRhLmdldCgpKSkpOwogICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBhZG9wdENGKGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJB
cmNoaXZlRGF0YShjZkRhdGEuZ2V0KCkpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjZlN0
cmluZy5nZXQoKSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nKGNmU3RyaW5nLmdl
dCgpKSk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288377</attachid>
            <date>2016-09-08 19:20:28 -0700</date>
            <delta_ts>2016-09-09 09:03:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161669-20160908191801.patch</filename>
            <type>text/plain</type>
            <size>22629</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1Njg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhkODUwOGQyMzk0MTZjMjVjYmYwNmUx
OTJiOGEzNGZlZTRlYzNiZjEuLjZlOWJkOTdlYjllYjk0ZWZkMDMyOTRiZWY3ZmU0MjcwMjU3NWFl
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDktMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBT
dHJpbmdWaWV3IGluIHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYxNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIEFkZCBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoKSBvdmVybG9hZCB0YWtpbmcgYW4gQXRvbWljU3RyaW5nIGluIHBhcmFtZXRlci4KKyAgICAg
ICAgSXQgdXNlZCB0byBjYWxsIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmKSBp
bXBsaWNpdGx5IHdoZW4KKyAgICAgICAgcGFzc2luZyBhbiBBdG9taWNTdHJpbmcuIEhvd2V2ZXIs
IGl0IGlzIG5vdyBhbWJpZ3VvdXMgYmVjYXVzZSB0aGVyZQorICAgICAgICBpcyBhbiBvdmVybG9h
ZCB0YWtpbmcgYSBTdHJpbmdWaWV3LCBhbmQgaXQgaXMgbm93IHBvc3NpYmxlIHRvIGNvbnN0cnVj
dAorICAgICAgICBhIFN0cmluZ1ZpZXcgZnJvbSBhbiBBdG9taWNTdHJpbmcuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcpOgorICAgICAgICAtIEFkZCBTdHJpbmdWaWV3IGNvbnN0cnVjdG9yIHRha2luZyBhbiBB
dG9taWNTdHJpbmcgaW4gcGFyYW1ldGVyIGZvcgorICAgICAgICAgIGNvbnZlbmllbmNlLiBUaGlz
IGF2b2lkcyBoYXZpbmcgdG8gY2FsbCBBdG9taWNTdHJpbmc6OnN0cmluZygpCisgICAgICAgICAg
ZXhwbGljaXRseSBhdCBjYWxsIHNpdGVzLgorICAgICAgICAtIEFkZCBTdHJpbmdWaWV3IGNvbnN0
cnVjdG9yIHRha2luZyBhICdjb25zdCBjaGFyKicgaW4gcGFyYW1ldGVyIGZvcgorICAgICAgICAg
IHBlcmZvcm1hbmNlLiBUaGVyZSBhcmUgc2V2ZXJhbCBjYWxsIHNpdGVzIHRoYXQgd2VyZSBwYXNz
aW5nIGEgY29uc3QKKyAgICAgICAgICBjaGFyKiBhbmQgaW1wbGljaXRseSBjb25zdHJ1Y3Rpbmcg
YW4gdW5uZWNlc3NhcnkgU3RyaW5nIHRvIGNvbnN0cnVjdAorICAgICAgICAgIGEgU3RyaW5nVmll
dy4gVGhpcyBiZWNhbWUgbW9yZSBvYnZpb3VzIGJlY2F1c2UgdGhlIGNvbnN0cnVjdG9yIHRha2lu
ZworICAgICAgICAgIGFuIEF0b21pY1N0cmluZyBpbiBwYXJhbWV0ZXIgbWFkZSBzdWNoIGNhbGxz
IGFtYmlndW91cy4KKworCiAyMDE2LTA5LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgSGVhcDo6aXNNYXJrZWQoKSBzaG91bGRuJ3QgcGF5IHRoZSBwcmljZSBv
ZiBjb25jdXJyZW50IGxhenkgZmxpcHBpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNzI0ZmM5YmVhYTc5Nzgy
ODQ3MWIxMzMxN2UzM2E0MGQ0N2RhMWUzLi44MzY2MzEwYzE4YmRmOGEzMDQ4NzBmYzM0NWVjZDc4
Y2EwNGZmNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTYtMDktMDYgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkg
c2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNjY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcGFyc2VIVE1MSW50ZWdlcigpIHNob3VsZCB0
YWtlIGEgU3RyaW5nVmlldyBpbiBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhCisgICAgICAgIGNvbnN0
IFN0cmluZyYuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VTcmNMb2NhbCk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clN0cmluZzo6dG9TdHJpbmdWaWV3KToKKyAgICAgICAgQWRkIHRvU3RyaW5nVmlldygpIHRvIGF2
b2lkIHVubmVjZXNzYXJpbHkgY29uc3RydWN0aW5nIGEgU3RyaW5nIGZvcgorICAgICAgICBjYWxs
aW5nIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgpLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUTUxJbnRlZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpwYXJzZUhUVFBSZWZyZXNoSW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbWl0VG9Pbmx5SFRN
TE5vbk5lZ2F0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVybyk6CisgICAgICAgIChXZWJDb3JlOjps
aW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSk6CisgICAgICAgIFRha2UgYSBTdHJpbmdWaWV3IGlu
IHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgY29uc3QgU3RyaW5nJi4KKworICAgICAgICAqIHBsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50Ojppc0NvbHVtbkRlY2xhcmVkQXNCbG9iKToKKyAgICAgICAgQXZvaWQgdW5uZWNlc3Nh
cmlseSBjb25zdHJ1Y3RpbmcgYSBTdHJpbmcgdG8gY2FsbCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSgpCisgICAgICAgIGJ5IGxldmVyYWdpbmcgdGhlIFN0cmluZ1ZpZXcgY29uc3RydWN0
b3IgdGFraW5nIGEgJ2NvbnN0IGNoYXIqJyBpbiBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAg
ICAgICBBZGQgY29uc3RydWN0VGV4dFJ1bigpIG92ZXJsb2FkIHRha2luZyBhbiBBdG9taWNTdHJp
bmcuIEl0IHdhcyBvdGhlcndpc2UgYW1iaWd1b3VzCisgICAgICAgIGJlY2F1c2UgYm90aCBhIFN0
cmluZyBvciBhIFN0cmluZ1ZpZXcgY291bGQgYmUgY29uc3RydWN0ZWQgZnJvbSBhbiBBdG9taWNT
dHJpbmcuCisKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0
aW9uc0RlZmF1bHRGb250Q1NTKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkRGlzcGxheVN0cmlu
Z0ZvclRyYWNrQmFzZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Om1lZGlhQ29udHJvbHNTdHlsZVNoZWV0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjptZWRpYUNvbnRyb2xzU2NyaXB0
KToKKyAgICAgICAgRXhwbGljaXRseSBjb25zdHJ1Y3QgYSBTdHJpbmcgZnJvbSBOU1N0cmluZyAv
IENGU3RyaW5nUmVmIHR5cGVzIGFzIHN1Y2ggY2FsbHMgYXJlCisgICAgICAgIG5vdyBhbWJpZ3Vv
dXMuCisKIDIwMTYtMDktMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgSFRNTElmcmFtZUVsZW1lbnQuYWxsb3dGdWxsc2NyZWVuIGF0
dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNv
bnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNp
b24uY3BwCmluZGV4IDBiNTdmMDEyZDU2MTRjMDI0N2EwN2I0MzQwMGRlOTc1YmQ4OGY4NDIuLjY2
ZGE4MDk2NTViZGRjNzg1ODg5MjliZjZiZjlkZTdmOTU1YTUwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKQEAgLTExNSw3ICsxMTUs
NyBAQCBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERh
dGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhcwogI2VuZGlmCiAgICAgICAgICAgICBpZiAodGlt
ZVpvbmVOYW1lWzBdKSB7CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
KCIpOwotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRpbWVab25lTmFtZSk7CisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nKHRpbWVab25lTmFtZSkpOwogICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKaW5kZXggODIyNGQyMmQ2Yjg4MjdmZGQxMWU2
OWNiYTQ2MDYxNDMwYzgxZGIxNC4uMDViMTViYmYwMTRhZGE0YWJjMWM0YWNhZDllZjAxM2VjZmY5
Yjk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTUwLDYgKzUwLDExIEBA
IHB1YmxpYzoKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7IH0KIAorICAgIHZvaWQgYXBwZW5kKGNvbnN0
IEF0b21pY1N0cmluZyYgYXRvbWljU3RyaW5nKQorICAgIHsKKyAgICAgICAgYXBwZW5kKGF0b21p
Y1N0cmluZy5zdHJpbmcoKSk7CisgICAgfQorCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAgICAgewogICAgICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmgKaW5kZXggYmQ3ZThmNjQ2MGJiOGJhNzE1ZmM1MDc0ODM3M2NmNmMxNzhj
MWJhYi4uYTM5ZWEwN2QyMDdjOTU1NjA4MTU0YTFlNGI4NTcwNmEwMTY2MGEzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmgKQEAgLTYwLDExICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
VmlldyYgb3BlcmF0b3I9KGNvbnN0IFN0cmluZ1ZpZXcmKTsKICNlbmRpZgogCisgICAgU3RyaW5n
Vmlldyhjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IFN0cmluZyYp
OwogICAgIFN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1wbCYpOwogICAgIFN0cmluZ1ZpZXcoY29u
c3QgU3RyaW5nSW1wbCopOwogICAgIFN0cmluZ1ZpZXcoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgIFN0cmluZ1ZpZXcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIFN0cmluZ1ZpZXcoY29uc3QgY2hhciopOwogCiAgICAgc3RhdGljIFN0cmluZ1ZpZXcgZW1w
dHkoKTsKIApAQCAtMTkzLDYgKzE5NSw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Y2hhciogYSwgU3RyaW5nVmlldyBiKSB7IHJldHVybiAhZXF1YWwoYiwgYSk7IH0KIAogfQogCisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMjg1LDYgKzI4OCwxMSBAQCBpbmxpbmUg
U3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQogICAgIGluaXRpYWxpemUoY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAoraW5saW5l
IFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgY2hhciogY2hhcmFjdGVycykKK3sKKyAgICBp
bml0aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgc3Ry
bGVuKGNoYXJhY3RlcnMpKTsKK30KKwogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29u
c3QgU3RyaW5nSW1wbCYgc3RyaW5nKQogewogICAgIHNldFVuZGVybHlpbmdTdHJpbmcoJnN0cmlu
Zyk7CkBAIC0zMjAsNiArMzI4LDExIEBAIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGluaXRpYWxpemUoc3RyaW5nLmNoYXJhY3RlcnMxNigp
LCBzdHJpbmcubGVuZ3RoKCkpOwogfQogCitpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhj
b25zdCBBdG9taWNTdHJpbmcmIGF0b21pY1N0cmluZykKKyAgICA6IFN0cmluZ1ZpZXcoYXRvbWlj
U3RyaW5nLnN0cmluZygpKQoreworfQorCiBpbmxpbmUgdm9pZCBTdHJpbmdWaWV3OjpjbGVhcigp
CiB7CiAgICAgbV9jaGFyYWN0ZXJzID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyLmNwcAppbmRleCA4ZmNlZmJjNTkyMjAwN2I0Y2M0MWZjMGYyNDY4Yjk5YTk1MzRh
OGFkLi42ZGZhZjQ4YmNiNTFlZWU1NTMxMDJiMWQ1YzgxZGU5ZmY1MmM5ZDRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCkBAIC03MzI4LDcgKzczMjgsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVNyY0xvY2FsKENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghYnVpbGRl
ci5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxvY2FsVmFsdWUtPnN0cmluZyk7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChsb2NhbFZhbHVlLT5zdHJpbmcudG9TdHJpbmdWaWV3KCkpOwogICAgICAg
ICB9CiAgICAgICAgIHZhbHVlTGlzdC5hcHBlbmQoQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRl
TG9jYWwoYnVpbGRlci50b1N0cmluZygpKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuaAppbmRleCAxZTc4ODNmNjEzMzE3MmJjZTczMmJk
ZGVmODM3ZTI0Y2JkOWUwOWYzLi5hOTE5NDE1YTZkMTRmZWM3MjY0MWI5YzM4NWQ3ODE4ZTc4M2Zh
OTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmgKQEAg
LTg3LDYgKzg3LDcgQEAgc3RydWN0IENTU1BhcnNlclN0cmluZyB7CiAKICAgICBvcGVyYXRvciBT
dHJpbmcoKSBjb25zdCB7IHJldHVybiBpczhCaXQoKSA/IFN0cmluZyhtX2RhdGEuY2hhcmFjdGVy
czgsIG1fbGVuZ3RoKSA6IFN0cmluZyhtX2RhdGEuY2hhcmFjdGVyczE2LCBtX2xlbmd0aCk7IH0K
ICAgICBvcGVyYXRvciBBdG9taWNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBpczhCaXQoKSA/IEF0
b21pY1N0cmluZyhtX2RhdGEuY2hhcmFjdGVyczgsIG1fbGVuZ3RoKSA6IEF0b21pY1N0cmluZyht
X2RhdGEuY2hhcmFjdGVyczE2LCBtX2xlbmd0aCk7IH0KKyAgICBTdHJpbmdWaWV3IHRvU3RyaW5n
VmlldygpIGNvbnN0IHsgcmV0dXJuIGlzOEJpdCgpID8gU3RyaW5nVmlldyhtX2RhdGEuY2hhcmFj
dGVyczgsIG1fbGVuZ3RoKSA6IFN0cmluZ1ZpZXcobV9kYXRhLmNoYXJhY3RlcnMxNiwgbV9sZW5n
dGgpOyB9CiAKICAgICB1bmlvbiB7CiAgICAgICAgIExDaGFyKiBjaGFyYWN0ZXJzODsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggMGRj
YzdmNjM1NDQ0NDU5YzRlNDYyYzEzZmZmMGZhNTViMGRiY2UwZS4uM2I4Y2M0ZDIyNTBjYmQ2Yjhh
Nzc1NWM3ZmFlOGJjZjZkZDUxMjM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9z
aXRpb24sIGNvbgogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9pbmZyYXN0cnVjdHVyZS5odG1sI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCi1PcHRpb25h
bDxpbnQ+IHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKK09wdGlvbmFsPGlu
dD4gcGFyc2VIVE1MSW50ZWdlcihTdHJpbmdWaWV3IGlucHV0KQogewogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IGlucHV0Lmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoKQpAQCAtMjA3LDcgKzIwNyw3
IEBAIE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0KQog
fQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVj
dHVyZS5odG1sI3J1bGVzLWZvci1wYXJzaW5nLW5vbi1uZWdhdGl2ZS1pbnRlZ2VycwotT3B0aW9u
YWw8dW5zaWduZWQ+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmIGlu
cHV0KQorT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJp
bmdWaWV3IGlucHV0KQogewogICAgIE9wdGlvbmFsPGludD4gc2lnbmVkVmFsdWUgPSBwYXJzZUhU
TUxJbnRlZ2VyKGlucHV0KTsKICAgICBpZiAoIXNpZ25lZFZhbHVlIHx8IHNpZ25lZFZhbHVlLnZh
bHVlKCkgPCAwKQpAQCAtMzYzLDcgKzM2Myw3IEBAIHN0YXRpYyBib29sIHBhcnNlSFRUUFJlZnJl
c2hJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjCiAg
ICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kICYmIGlzQVNDSUlEaWdpdCgqcG9zaXRpb24pKQogICAg
ICAgICArK3Bvc2l0aW9uOwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG51bWJlciA9IHBhcnNl
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3KG51bWJlclN0YXJ0LCBwb3NpdGlvbiAt
IG51bWJlclN0YXJ0KS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBudW1iZXIgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyhu
dW1iZXJTdGFydCwgcG9zaXRpb24gLSBudW1iZXJTdGFydCkpOwogICAgIGlmICghbnVtYmVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuaAppbmRleCBkOWVkMDgzNzQ5MzNiNGExMTgyMjQzNGVmNTM2NmZlYTAz
NThhZWM3Li4zZTc5ODlkN2NhY2YxYmRiMTczNjdjOGRhODdkYmVjM2IxMGY3YWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmll
dy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDEwICs2MywxMCBAQCBkb3VibGUg
cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJik7CiBkb3VibGUgcGFyc2VU
b0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgZG91YmxlIGZhbGxiYWNrVmFsdWUp
OwogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3Jr
LyNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8aW50
PiBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VyKFN0cmluZ1ZpZXcpOwogCiAvLyBodHRwOi8vd3d3Lndo
YXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNydWxlcy1mb3ItcGFyc2luZy1u
b24tbmVnYXRpdmUtaW50ZWdlcnMKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHVuc2lnbmVkPiBw
YXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9S
VCBPcHRpb25hbDx1bnNpZ25lZD4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1Zp
ZXcpOwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN2YWxpZC1ub24tbmVnYXRp
dmUtaW50ZWdlcgogT3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cihTdHJpbmdWaWV3KTsKQEAgLTEzMiw3ICsxMzMsNyBAQCBpbmxpbmUgdW5zaWduZWQgbGltaXRU
b09ubHlIVE1MTm9uTmVnYXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvKHVuc2lnbmVkIHZhbHVl
LAogICAgIHJldHVybiAodmFsdWUgPiAwICYmIHZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIpID8gdmFsdWUgOiBkZWZhdWx0VmFsdWU7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBsaW1p
dFRvT25seUhUTUxOb25OZWdhdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm8oY29uc3QgU3RyaW5n
JiBzdHJpbmdWYWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlID0gMSkKK2lubGluZSB1bnNpZ25l
ZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm8oU3RyaW5n
VmlldyBzdHJpbmdWYWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlID0gMSkKIHsKICAgICBBU1NF
UlQoZGVmYXVsdFZhbHVlID4gMCk7CiAgICAgQVNTRVJUKGRlZmF1bHRWYWx1ZSA8PSBtYXhIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKTsKQEAgLTE1MCw3ICsxNTEsNyBAQCBpbmxpbmUgdW5zaWduZWQg
bGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUodW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIGRlZmF1
bHRWYWx1ZQogICAgIHJldHVybiB2YWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyID8g
dmFsdWUgOiBkZWZhdWx0VmFsdWU7CiB9CiAKLWlubGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhU
TUxOb25OZWdhdGl2ZShjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0
VmFsdWUgPSAwKQoraW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKFN0
cmluZ1ZpZXcgc3RyaW5nVmFsdWUsIHVuc2lnbmVkIGRlZmF1bHRWYWx1ZSA9IDApCiB7CiAgICAg
QVNTRVJUKGRlZmF1bHRWYWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKTsKICAgICB1
bnNpZ25lZCB2YWx1ZSA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihzdHJpbmdWYWx1ZSku
dmFsdWVPcihkZWZhdWx0VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCAwZWY3ZGIzZjFkYmRiZTE4ZDVj
MzY0NGZhMTYwZmNiODg0MjI4YTFmLi41ZjA1YmI5MGZhMTIzY2JiYTY5NzRkMGYwZTllNDJhYjg2
YmZhY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNDMyLDcgKzQzMiw3IEBAIFN0cmluZyBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNEZWZhdWx0Rm9udENTUygpIGNvbnN0CiAgICAg
CiAgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5Rm9u
dEZhbWlseSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiBcIiIpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihuYW1lLmdldCgpKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoU3RyaW5nKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihuYW1lLmdldCgpKSkp
OwogICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAgICAgaWYgKGJlaGF2aW9yID09IGtNQUNhcHRp
b25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSkKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgIWltcG9ydGFudCIpOwpAQCAtNjQyLDcgKzY0Miw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxk
RGlzcGxheVN0cmluZ0ZvclRyYWNrQmFzZShTdHJpbmdCdWlsZGVyJiBkaXNwbGF5TmFtZSwgY29u
c3QgVHJhCiAgICAgICAgIGVsc2UgaWYgKCFsYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBkaXNwbGF5TmFtZS5hcHBlbmQobGFuZ3VhZ2UpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBkaXNwbGF5TmFtZS5hcHBlbmQobG9jYWxlSWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgICAg
ICBkaXNwbGF5TmFtZS5hcHBlbmQoU3RyaW5nKGxvY2FsZUlkZW50aWZpZXIuZ2V0KCkpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5jcHAKaW5kZXggZDY2YzgxN2ZhODczMmU0ZDE1MTg5MzkxNDU3OGZhM2NlOGZjMTc2ZC4uZTRj
NzcxZDQzZWQzODFjYzJjMTA1NmFmOGZlYjVlOGU3MDZmMDA0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTI4OCw3ICsyODgsNyBA
QCBib29sIFNRTGl0ZVN0YXRlbWVudDo6aXNDb2x1bW5EZWNsYXJlZEFzQmxvYihpbnQgY29sKQog
ICAgICAgICBpZiAocHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHNxbGl0ZTNfY29sdW1uX2Rl
Y2x0eXBlMTYobV9zdGF0ZW1lbnQsIGNvbCkpKSwgImJsb2IiKTsKKyAgICByZXR1cm4gZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyhzcWxpdGUzX2NvbHVtbl9kZWNsdHlw
ZShtX3N0YXRlbWVudCwgY29sKSksICJibG9iIik7CiB9CiAKIFN0cmluZyBTUUxpdGVTdGF0ZW1l
bnQ6OmdldENvbHVtbk5hbWUoaW50IGNvbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCmluZGV4IDY3ODdmZDFkZDJiZGI3ZmZiYzNiYzM1MmE0MDA3MGIxZWVkYTQwZjUu
Ljk4NDVjMzc0OTk3MDMzZjcxNWVlMWZlODZlMWM3ZTA2NjhlNTQ5ZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzgwMyw2ICszODAzLDExIEBAIFRleHRS
dW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNv
bnN0IFJlbmRlclN0eWxlJiBzCiAgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4oU3RyaW5nVmll
dyhzdHJpbmcpLCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7CiB9CiAKK1RleHRSdW4gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgQXRvbWljU3RyaW5nJiBhdG9taWNTdHJpbmcs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uLCBU
ZXh0UnVuRmxhZ3MgZmxhZ3MpCit7CisgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4oU3RyaW5n
VmlldyhhdG9taWNTdHJpbmcpLCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7Cit9CisKIFRleHRS
dW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCiB7
CiAgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4odGV4dC5zdHJpbmdWaWV3KCksIHN0eWxlLCBl
eHBhbnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCA3MWZi
MDlkYjJiMmJhYmNmYWI4NmQ4ODM2Njk0NWE3YmMyOTIwOGZlLi5iN2I1MDZkYjZiZjE2MjdjMTEw
ZGMwNzNlYWEwMTM2MTkzODM0ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaApAQCAtMjA3LDYgKzIwNyw4IEBAIHB1YmxpYzoKICAgICAgICAgRXhwYW5zaW9uQmVoYXZp
b3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdz
KTsKICAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhw
YW5zaW9uLCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKKyAgICBzdGF0aWMg
VGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IFJlbmRl
clN0eWxlJiwKKyAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBU
ZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKICAgICBzdGF0aWMgVGV4dFJ1biBj
b25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAg
ICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbik7CiAgICAgc3RhdGlj
IFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0JiwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCBlMTFlNjlmODUzMDAyM2Q1ZTQ2ZDZm
MGRhMzQ4YWM5MDI4YzBlZDRhLi5mZmMzMGQ0ODcxZWNkNTZjNjUxY2FhZTM1ZTFiOGEwMTg3MmNj
NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0x
MjkyLDcgKzEyOTIsNyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVJT1M6Om1lZGlhQ29udHJvbHNTdHls
ZVNoZWV0KCkKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogICAgIGlmIChtX21l
ZGlhQ29udHJvbHNTdHlsZVNoZWV0LmlzRW1wdHkoKSkgewogICAgICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29u
dGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1l
QnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc2lPUyIgb2ZUeXBl
OkAiY3NzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZG
aWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBj
bGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNpT1MiIG9mVHlwZTpAImNzcyJd
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pKTsKICAgICAgICAgbV9t
ZWRpYUNvbnRyb2xzU3R5bGVTaGVldCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAgICAg
cmV0dXJuIG1fbWVkaWFDb250cm9sc1N0eWxlU2hlZXQ7CkBAIC0xMzA2LDkgKzEzMDYsOSBAQCBT
dHJpbmcgUmVuZGVyVGhlbWVJT1M6Om1lZGlhQ29udHJvbHNTY3JpcHQoKQogI2lmIEVOQUJMRShN
RURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAgaWYgKG1fbWVkaWFDb250cm9sc1NjcmlwdC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOwotICAgICAgICBz
Y3JpcHRCdWlsZGVyLmFwcGVuZChbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOltb
TlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFzc11d
IHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzIiBvZlR5cGU6
QCJqcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pOwotICAgICAg
ICBzY3JpcHRCdWlsZGVyLmFwcGVuZChbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxl
OltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFz
c11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNBcHBsZSIgb2ZUeXBlOkAianMiXSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKTsKLSAgICAgICAgc2NyaXB0
QnVpbGRlci5hcHBlbmQoW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVu
ZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRo
Rm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRyb2xzaU9TIiBvZlR5cGU6QCJqcyJdIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pOworICAgICAgICBzY3JpcHRCdWlsZGVyLmFw
cGVuZChTdHJpbmcoW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxl
IGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9y
UmVzb3VyY2U6QCJtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncyIgb2ZUeXBlOkAianMiXSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKSk7CisgICAgICAgIHNjcmlw
dEJ1aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxl
OltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFz
c11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNBcHBsZSIgb2ZUeXBlOkAianMiXSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKSk7CisgICAgICAgIHNjcmlw
dEJ1aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxl
OltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFz
c11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNpT1MiIG9mVHlwZTpAImpzIl0gZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSkpOwogICAgICAgICBtX21lZGlh
Q29udHJvbHNTY3JpcHQgPSBzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogICAgIHJl
dHVybiBtX21lZGlhQ29udHJvbHNTY3JpcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KaW5kZXggYjdiZmIxYTkyNGRkOWUxOWFlODBhMWMxOTMyODRkZGQ0MzVm
ODlhNS4uM2FhZmQ2NWQyNmVhYzY1NDNjM2VmNTYxM2QwNGE4MTA3YTVjZmRmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjM1LDcgKzIzNSw3IEBA
IFN0cmluZyBSZW5kZXJUaGVtZU1hYzo6bWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKQogI2lmIEVO
QUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAgaWYgKG1fbWVkaWFDb250cm9sc1N0eWxl
U2hlZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgc3R5bGVTaGVldEJ1aWxk
ZXI7Ci0gICAgICAgIHN0eWxlU2hlZXRCdWlsZGVyLmFwcGVuZChbTlNTdHJpbmcgc3RyaW5nV2l0
aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJU
aGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNBcHBsZSIg
b2ZUeXBlOkAiY3NzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSk7
CisgICAgICAgIHN0eWxlU2hlZXRCdWlsZGVyLmFwcGVuZChTdHJpbmcoW05TU3RyaW5nIHN0cmlu
Z1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlUmVu
ZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRyb2xzQXBw
bGUiIG9mVHlwZTpAImNzcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5p
bF0pKTsKICAgICAgICAgbV9tZWRpYUNvbnRyb2xzU3R5bGVTaGVldCA9IHN0eWxlU2hlZXRCdWls
ZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogICAgIHJldHVybiBtX21lZGlhQ29udHJvbHNTdHlsZVNo
ZWV0OwpAQCAtMjQ5LDggKzI0OSw4IEBAIFN0cmluZyBSZW5kZXJUaGVtZU1hYzo6bWVkaWFDb250
cm9sc1NjcmlwdCgpCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKICAgICBpZiAo
bV9tZWRpYUNvbnRyb2xzU2NyaXB0LmlzRW1wdHkoKSkgewogICAgICAgICBTdHJpbmdCdWlsZGVy
IHNjcmlwdEJ1aWxkZXI7Ci0gICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFtOU1N0cmluZyBz
dHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29y
ZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9s
c0xvY2FsaXplZFN0cmluZ3MiIG9mVHlwZTpAImpzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmcgZXJyb3I6bmlsXSk7Ci0gICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2Vi
Q29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250
cm9sc0FwcGxlIiBvZlR5cGU6QCJqcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVy
cm9yOm5pbF0pOworICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChTdHJpbmcoW05TU3RyaW5n
IHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJD
b3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRy
b2xzTG9jYWxpemVkU3RyaW5ncyIgb2ZUeXBlOkAianMiXSBlbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZyBlcnJvcjpuaWxdKSk7CisgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFN0cmlu
ZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgYnVuZGxlRm9y
Q2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpA
Im1lZGlhQ29udHJvbHNBcHBsZSIgb2ZUeXBlOkAianMiXSBlbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZyBlcnJvcjpuaWxdKSk7CiAgICAgICAgIG1fbWVkaWFDb250cm9sc1NjcmlwdCA9IHNj
cmlwdEJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAgICAgcmV0dXJuIG1fbWVkaWFDb250cm9s
c1NjcmlwdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA5YWY1N2QwYWRjNTRlZTVjZWJiZWNjNjM0ZGI3ZWM0ZGQ1MzQxNTdlLi4zYTA0N2FjODFm
MTFmMzQ3NmFkMjE4YzZjNmU0NDYyM2MyZDYwOTE1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDktMDYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBwYXJzZUhUTUxJbnRlZ2Vy
KCkgc2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNjY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwbGljaXRseSBjb25zdHJ1Y3QgYSBT
dHJpbmcgZnJvbSB0aGUgQ0ZTdHJpbmdSZWYgaW4gb3JkZXIgdG8gY2FsbAorICAgICAgICBTdHJp
bmdCdWlsZGVyOjphcHBlbmQoKS4gVGhpcyBpcyBuZWVkZWQgbm93IHRoYXQgdGhlcmUgaXMgYW4g
YXBwZW5kKCkKKyAgICAgICAgb3ZlcmxvYWQgdGFraW5nIGFuIEF0b21pY1N0cmluZyBpbiBwYXJh
bWV0ZXIuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZHVt
cERPTUFzV2ViQXJjaGl2ZSk6CisKIDIwMTYtMDktMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVUkxQYXJzZXI6IEhhbmRsZSBcIGluIHBh
dGhzIG9mIHNwZWNpYWwgVVJMcyBhY2NvcmRpbmcgdG8gc3BlYwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCmluZGV4IDE4OTlhOGIzYTNmNGQ3YzJiY2I0ZjdmNTk4MTVkZmE4MmE2NDBmNmYuLjc5OGE4
NTUxMjIzM2U3NTAxZDQ1MjcxNWE5NTZjZTdjZjljMzFjODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAKQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcERP
TUFzV2ViQXJjaGl2ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZAogICAgIFdL
UmV0YWluUHRyPFdLRGF0YVJlZj4gd2tEYXRhID0gYWRvcHRXSyhXS0J1bmRsZUZyYW1lQ29weVdl
YkFyY2hpdmUoZnJhbWUpKTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZSgwLCBXS0RhdGFHZXRCeXRlcyh3a0RhdGEuZ2V0KCkpLCBXS0RhdGFH
ZXRTaXplKHdrRGF0YS5nZXQoKSkpKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3Ry
aW5nID0gYWRvcHRDRihjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoY2ZEYXRhLmdl
dCgpKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoY2ZTdHJpbmcuZ2V0KCkpOworICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZyhjZlN0cmluZy5nZXQoKSkpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288406</attachid>
            <date>2016-09-09 09:04:03 -0700</date>
            <delta_ts>2016-09-09 09:38:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161669-20160909090135.patch</filename>
            <type>text/plain</type>
            <size>21916</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Y2U2NzliN2EzYTA3NGU3MjVlNzQ3
YTNkMWEwYjNjZWZkNDZmZDQuLjBiMDk3MmM0NTAyZGM5OGZmNDM2YjQxMTkzZjgwZmU2YWY4ZmFl
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDktMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBT
dHJpbmdWaWV3IGluIHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYxNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIEFkZCBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoKSBvdmVybG9hZCB0YWtpbmcgYW4gQXRvbWljU3RyaW5nIGluIHBhcmFtZXRlci4KKyAgICAg
ICAgSXQgdXNlZCB0byBjYWxsIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmKSBp
bXBsaWNpdGx5IHdoZW4KKyAgICAgICAgcGFzc2luZyBhbiBBdG9taWNTdHJpbmcuIEhvd2V2ZXIs
IGl0IGlzIG5vdyBhbWJpZ3VvdXMgYmVjYXVzZSB0aGVyZQorICAgICAgICBpcyBhbiBvdmVybG9h
ZCB0YWtpbmcgYSBTdHJpbmdWaWV3LCBhbmQgaXQgaXMgbm93IHBvc3NpYmxlIHRvIGNvbnN0cnVj
dAorICAgICAgICBhIFN0cmluZ1ZpZXcgZnJvbSBhbiBBdG9taWNTdHJpbmcuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcpOgorICAgICAgICAtIEFkZCBTdHJpbmdWaWV3IGNvbnN0cnVjdG9yIHRha2luZyBhbiBB
dG9taWNTdHJpbmcgaW4gcGFyYW1ldGVyIGZvcgorICAgICAgICAgIGNvbnZlbmllbmNlLiBUaGlz
IGF2b2lkcyBoYXZpbmcgdG8gY2FsbCBBdG9taWNTdHJpbmc6OnN0cmluZygpCisgICAgICAgICAg
ZXhwbGljaXRseSBhdCBjYWxsIHNpdGVzLgorICAgICAgICAtIEFkZCBTdHJpbmdWaWV3IGNvbnN0
cnVjdG9yIHRha2luZyBhICdjb25zdCBjaGFyKicgaW4gcGFyYW1ldGVyIGZvcgorICAgICAgICAg
IHBlcmZvcm1hbmNlLiBUaGVyZSBhcmUgc2V2ZXJhbCBjYWxsIHNpdGVzIHRoYXQgd2VyZSBwYXNz
aW5nIGEgY29uc3QKKyAgICAgICAgICBjaGFyKiBhbmQgaW1wbGljaXRseSBjb25zdHJ1Y3Rpbmcg
YW4gdW5uZWNlc3NhcnkgU3RyaW5nIHRvIGNvbnN0cnVjdAorICAgICAgICAgIGEgU3RyaW5nVmll
dy4gVGhpcyBiZWNhbWUgbW9yZSBvYnZpb3VzIGJlY2F1c2UgdGhlIGNvbnN0cnVjdG9yIHRha2lu
ZworICAgICAgICAgIGFuIEF0b21pY1N0cmluZyBpbiBwYXJhbWV0ZXIgbWFkZSBzdWNoIGNhbGxz
IGFtYmlndW91cy4KKworCiAyMDE2LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGluZyBhIGZldyBKU0MgdGVzdCBmYWlsdXJlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMjgyM2E0MTJlZTY4NWIzYzcyM2RhODZkOTQ0ZGI2Nzg2YzgyNzg4Li43
OTA4MGEwYzYxNmU5N2U2NzQzN2U5YjdjMDg2NzcyYmY2MzBlYjFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDkgQEAKKzIwMTYtMDktMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGlu
IHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYxNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgcGFyc2VIVE1MSW50ZWdlcigpIHNob3VsZCB0YWtlIGEgU3RyaW5nVmlldyBpbiBwYXJhbWV0
ZXIgaW5zdGVhZCBvZiBhCisgICAgICAgIGNvbnN0IFN0cmluZyYuCisKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
Rm9udEZhY2VTcmNMb2NhbCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclN0cmluZzo6dG9TdHJpbmdWaWV3KToKKyAg
ICAgICAgQWRkIHRvU3RyaW5nVmlldygpIHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgY29uc3RydWN0
aW5nIGEgU3RyaW5nIGZvcgorICAgICAgICBjYWxsaW5nIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgp
LgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwYXJzZUhUTUxJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBSZWZyZXNo
SW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlTnVtYmVyc0dyZWF0ZXJU
aGFuWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSk6
CisgICAgICAgIFRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgY29u
c3QgU3RyaW5nJi4KKworICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkRlY2xhcmVkQXNC
bG9iKToKKyAgICAgICAgQXZvaWQgdW5uZWNlc3NhcmlseSBjb25zdHJ1Y3RpbmcgYSBTdHJpbmcg
dG8gY2FsbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSgpCisgICAgICAgIGJ5IGxldmVy
YWdpbmcgdGhlIFN0cmluZ1ZpZXcgY29uc3RydWN0b3IgdGFraW5nIGEgJ2NvbnN0IGNoYXIqJyBp
biBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICBBZGQgY29uc3RydWN0VGV4dFJ1bigp
IG92ZXJsb2FkIHRha2luZyBhbiBBdG9taWNTdHJpbmcuIEl0IHdhcyBvdGhlcndpc2UgYW1iaWd1
b3VzCisgICAgICAgIGJlY2F1c2UgYm90aCBhIFN0cmluZyBvciBhIFN0cmluZ1ZpZXcgY291bGQg
YmUgY29uc3RydWN0ZWQgZnJvbSBhbiBBdG9taWNTdHJpbmcuCisKKyAgICAgICAgKiBwYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0RlZmF1bHRGb250Q1NTKToKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1aWxkRGlzcGxheVN0cmluZ0ZvclRyYWNrQmFzZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6Om1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTWFjOjptZWRpYUNvbnRyb2xzU2NyaXB0KToKKyAgICAgICAgRXhwbGljaXRseSBjb25z
dHJ1Y3QgYSBTdHJpbmcgZnJvbSBOU1N0cmluZyAvIENGU3RyaW5nUmVmIHR5cGVzIGFzIHN1Y2gg
Y2FsbHMgYXJlCisgICAgICAgIG5vdyBhbWJpZ3VvdXMuCisKIDIwMTYtMDktMDkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IHBy
b21pc2UuaW5oZXJpdHMoSlNQcm9taXNlOjppbmZvKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oCmluZGV4IDgyMjRkMjJkNmI4ODI3ZmRkMTFlNjljYmE0NjA2MTQzMGM4MWRiMTQuLjA1
YjE1YmJmMDE0YWRhNGFiYzFjNGFjYWQ5ZWYwMTNlY2ZmOWI5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oCkBAIC01MCw2ICs1MCwxMSBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBs
ZW5ndGgpOyB9CiAKKyAgICB2b2lkIGFwcGVuZChjb25zdCBBdG9taWNTdHJpbmcmIGF0b21pY1N0
cmluZykKKyAgICB7CisgICAgICAgIGFwcGVuZChhdG9taWNTdHJpbmcuc3RyaW5nKCkpOworICAg
IH0KKwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKICAgICAg
ICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IGJk
N2U4ZjY0NjBiYjhiYTcxNWZjNTA3NDgzNzNjZjZjMTc4YzFiYWIuLmEzOWVhMDdkMjA3Yzk1NTYw
ODE1NGExZTRiODU3MDZhMDE2NjBhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC02
MCwxMSArNjAsMTMgQEAgcHVibGljOgogICAgIFN0cmluZ1ZpZXcmIG9wZXJhdG9yPShjb25zdCBT
dHJpbmdWaWV3Jik7CiAjZW5kaWYKIAorICAgIFN0cmluZ1ZpZXcoY29uc3QgQXRvbWljU3RyaW5n
Jik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0
IFN0cmluZ0ltcGwmKTsKICAgICBTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwqKTsKICAgICBT
dHJpbmdWaWV3KGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBTdHJpbmdWaWV3
KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBTdHJpbmdWaWV3KGNvbnN0IGNo
YXIqKTsKIAogICAgIHN0YXRpYyBTdHJpbmdWaWV3IGVtcHR5KCk7CiAKQEAgLTE5Myw2ICsxOTUs
NyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGEsIFN0cmluZ1ZpZXcgYikg
eyByZXR1cm4gIWVxdWFsKGIsIGEpOyB9CiAKIH0KIAorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V1RGIHsKQEAgLTI4NSw2ICsyODgsMTEgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXco
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBpbml0aWFsaXpl
KGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKK2lubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3
KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpCit7CisgICAgaW5pdGlhbGl6ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIHN0cmxlbihjaGFyYWN0ZXJzKSk7Cit9CisK
IGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZykK
IHsKICAgICBzZXRVbmRlcmx5aW5nU3RyaW5nKCZzdHJpbmcpOwpAQCAtMzIwLDYgKzMyOCwxMSBA
QCBpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAg
ICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIH0K
IAoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgQXRvbWljU3RyaW5nJiBhdG9t
aWNTdHJpbmcpCisgICAgOiBTdHJpbmdWaWV3KGF0b21pY1N0cmluZy5zdHJpbmcoKSkKK3sKK30K
KwogaW5saW5lIHZvaWQgU3RyaW5nVmlldzo6Y2xlYXIoKQogewogICAgIG1fY2hhcmFjdGVycyA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKaW5kZXggOGZj
ZWZiYzU5MjIwMDdiNGNjNDFmYzBmMjQ2OGI5OWE5NTM0YThhZC4uNmRmYWY0OGJjYjUxZWVlNTUz
MTAyYjFkNWM4MWRlOWZmNTJjOWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyLmNwcApAQCAtNzMyOCw3ICs3MzI4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udEZh
Y2VTcmNMb2NhbChDU1NWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChs
b2NhbFZhbHVlLT5zdHJpbmcpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobG9jYWxWYWx1
ZS0+c3RyaW5nLnRvU3RyaW5nVmlldygpKTsKICAgICAgICAgfQogICAgICAgICB2YWx1ZUxpc3Qu
YXBwZW5kKENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZUxvY2FsKGJ1aWxkZXIudG9TdHJpbmco
KSkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFs
dWVzLmgKaW5kZXggMWU3ODgzZjYxMzMxNzJiY2U3MzJiZGRlZjgzN2UyNGNiZDllMDlmMy4uYTkx
OTQxNWE2ZDE0ZmVjNzI2NDFiOWMzODVkNzgxOGU3ODNmYTk5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oCkBAIC04Nyw2ICs4Nyw3IEBAIHN0cnVjdCBD
U1NQYXJzZXJTdHJpbmcgewogCiAgICAgb3BlcmF0b3IgU3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
aXM4Qml0KCkgPyBTdHJpbmcobV9kYXRhLmNoYXJhY3RlcnM4LCBtX2xlbmd0aCkgOiBTdHJpbmco
bV9kYXRhLmNoYXJhY3RlcnMxNiwgbV9sZW5ndGgpOyB9CiAgICAgb3BlcmF0b3IgQXRvbWljU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gaXM4Qml0KCkgPyBBdG9taWNTdHJpbmcobV9kYXRhLmNoYXJh
Y3RlcnM4LCBtX2xlbmd0aCkgOiBBdG9taWNTdHJpbmcobV9kYXRhLmNoYXJhY3RlcnMxNiwgbV9s
ZW5ndGgpOyB9CisgICAgU3RyaW5nVmlldyB0b1N0cmluZ1ZpZXcoKSBjb25zdCB7IHJldHVybiBp
czhCaXQoKSA/IFN0cmluZ1ZpZXcobV9kYXRhLmNoYXJhY3RlcnM4LCBtX2xlbmd0aCkgOiBTdHJp
bmdWaWV3KG1fZGF0YS5jaGFyYWN0ZXJzMTYsIG1fbGVuZ3RoKTsgfQogCiAgICAgdW5pb24gewog
ICAgICAgICBMQ2hhciogY2hhcmFjdGVyczg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDBkY2M3ZjYzNTQ0NDQ1OWM0ZTQ2MmMxM2Zm
ZjBmYTU1YjBkYmNlMGUuLjNiOGNjNGQyMjUwY2JkNmI4YTc3NTVjN2ZhZThiY2Y2ZGQ1MTIzNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdl
ckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBjb24KIH0KIAogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNy
dWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwotT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2Vy
KGNvbnN0IFN0cmluZyYgaW5wdXQpCitPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXIoU3Ry
aW5nVmlldyBpbnB1dCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsK
ICAgICBpZiAoIWxlbmd0aCkKQEAgLTIwNyw3ICsyMDcsNyBAQCBPcHRpb25hbDxpbnQ+IHBhcnNl
SFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNydWxlcy1mb3ItcGFy
c2luZy1ub24tbmVnYXRpdmUtaW50ZWdlcnMKLU9wdGlvbmFsPHVuc2lnbmVkPiBwYXJzZUhUTUxO
b25OZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKK09wdGlvbmFsPHVuc2lnbmVk
PiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICBP
cHRpb25hbDxpbnQ+IHNpZ25lZFZhbHVlID0gcGFyc2VIVE1MSW50ZWdlcihpbnB1dCk7CiAgICAg
aWYgKCFzaWduZWRWYWx1ZSB8fCBzaWduZWRWYWx1ZS52YWx1ZSgpIDwgMCkKQEAgLTM2Myw3ICsz
NjMsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUhUVFBSZWZyZXNoSW50ZXJuYWwoY29uc3QgQ2hhcmFj
dGVyVHlwZSogcG9zaXRpb24sIGNvbnN0IENoYXJhYwogICAgIHdoaWxlIChwb3NpdGlvbiA8IGVu
ZCAmJiBpc0FTQ0lJRGlnaXQoKnBvc2l0aW9uKSkKICAgICAgICAgKytwb3NpdGlvbjsKIAotICAg
IE9wdGlvbmFsPHVuc2lnbmVkPiBudW1iZXIgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIo
U3RyaW5nVmlldyhudW1iZXJTdGFydCwgcG9zaXRpb24gLSBudW1iZXJTdGFydCkudG9TdHJpbmdX
aXRob3V0Q29weWluZygpKTsKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gbnVtYmVyID0gcGFyc2VI
VE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcobnVtYmVyU3RhcnQsIHBvc2l0aW9uIC0g
bnVtYmVyU3RhcnQpKTsKICAgICBpZiAoIW51bWJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXgg
ZDllZDA4Mzc0OTMzYjRhMTE4MjI0MzRlZjUzNjZmZWEwMzU4YWVjNy4uM2U3OTg5ZDdjYWNmMWJk
YjE3MzY3YzhkYTg3ZGJlYzNiMTBmN2FhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC02MiwxMCArNjMsMTAgQEAgZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlKGNvbnN0IFN0cmluZyYpOwogZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNv
bnN0IFN0cmluZyYsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKTsKIAogLy8gaHR0cDovL3d3dy53aGF0
d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcnVsZXMtZm9yLXBhcnNpbmctaW50
ZWdlcnMKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlcihjb25z
dCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdl
cihTdHJpbmdWaWV3KTsKIAogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jcnVsZXMtZm9yLXBhcnNpbmctbm9uLW5lZ2F0aXZlLWludGVnZXJzCi1X
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDx1bnNpZ25lZD4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8dW5zaWduZWQ+IHBh
cnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3KTsKIAogLy8gaHR0cHM6Ly9odG1s
LnNwZWMud2hhdHdnLm9yZy8jdmFsaWQtbm9uLW5lZ2F0aXZlLWludGVnZXIKIE9wdGlvbmFsPGlu
dD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyk7CkBAIC0xMzIs
NyArMTMzLDcgQEAgaW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlTnVt
YmVyc0dyZWF0ZXJUaGFuWmVybyh1bnNpZ25lZCB2YWx1ZSwKICAgICByZXR1cm4gKHZhbHVlID4g
MCAmJiB2YWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKSA/IHZhbHVlIDogZGVmYXVs
dFZhbHVlOwogfQogCi1pbmxpbmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmVO
dW1iZXJzR3JlYXRlclRoYW5aZXJvKGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUsIHVuc2lnbmVk
IGRlZmF1bHRWYWx1ZSA9IDEpCitpbmxpbmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1MTm9uTmVn
YXRpdmVOdW1iZXJzR3JlYXRlclRoYW5aZXJvKFN0cmluZ1ZpZXcgc3RyaW5nVmFsdWUsIHVuc2ln
bmVkIGRlZmF1bHRWYWx1ZSA9IDEpCiB7CiAgICAgQVNTRVJUKGRlZmF1bHRWYWx1ZSA+IDApOwog
ICAgIEFTU0VSVChkZWZhdWx0VmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7CkBA
IC0xNTAsNyArMTUxLDcgQEAgaW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0
aXZlKHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUKICAgICByZXR1cm4gdmFs
dWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlciA/IHZhbHVlIDogZGVmYXVsdFZhbHVlOwog
fQogCi1pbmxpbmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUoY29uc3QgU3Ry
aW5nJiBzdHJpbmdWYWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlID0gMCkKK2lubGluZSB1bnNp
Z25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZShTdHJpbmdWaWV3IHN0cmluZ1ZhbHVlLCB1
bnNpZ25lZCBkZWZhdWx0VmFsdWUgPSAwKQogewogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUgPD0g
bWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7CiAgICAgdW5zaWduZWQgdmFsdWUgPSBwYXJzZUhU
TUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5nVmFsdWUpLnZhbHVlT3IoZGVmYXVsdFZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5jcHAKaW5kZXggMGVmN2RiM2YxZGJkYmUxOGQ1YzM2NDRmYTE2MGZjYjg4NDIyOGExZi4u
NWYwNWJiOTBmYTEyM2NiYmE2OTc0ZDBmMGU5ZTQyYWI4NmJmYWNlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAg
LTQzMiw3ICs0MzIsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNh
cHRpb25zRGVmYXVsdEZvbnRDU1MoKSBjb25zdAogICAgIAogICAgIGJ1aWxkZXIuYXBwZW5kKGdl
dFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKTsKICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIjogXCIiKTsKLSAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxD
RlN0cmluZ1JlZj4obmFtZS5nZXQoKSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZyhzdGF0
aWNfY2FzdDxDRlN0cmluZ1JlZj4obmFtZS5nZXQoKSkpKTsKICAgICBidWlsZGVyLmFwcGVuZCgn
IicpOwogICAgIGlmIChiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNl
VmFsdWUpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICFpbXBvcnRhbnQiKTsKQEAg
LTY0Miw3ICs2NDIsNyBAQCBzdGF0aWMgdm9pZCBidWlsZERpc3BsYXlTdHJpbmdGb3JUcmFja0Jh
c2UoU3RyaW5nQnVpbGRlciYgZGlzcGxheU5hbWUsIGNvbnN0IFRyYQogICAgICAgICBlbHNlIGlm
ICghbGFuZ3VhZ2UuaXNFbXB0eSgpKQogICAgICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKGxh
bmd1YWdlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKGxv
Y2FsZUlkZW50aWZpZXIuZ2V0KCkpOworICAgICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKFN0
cmluZyhsb2NhbGVJZGVudGlmaWVyLmdldCgpKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCmluZGV4IGQ2NmM4MTdmYTg3
MzJlNGQxNTE4OTM5MTQ1NzhmYTNjZThmYzE3NmQuLmU0Yzc3MWQ0M2VkMzgxY2MyYzEwNTZhZjhm
ZWI1ZThlNzA2ZjAwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVTdGF0ZW1lbnQuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgYm9vbCBTUUxpdGVTdGF0ZW1lbnQ6
OmlzQ29sdW1uRGVjbGFyZWRBc0Jsb2IoaW50IGNvbCkKICAgICAgICAgaWYgKHByZXBhcmUoKSAh
PSBTUUxJVEVfT0spCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVy
biBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUNoYXIqPihzcWxpdGUzX2NvbHVtbl9kZWNsdHlwZTE2KG1fc3RhdGVtZW50LCBj
b2wpKSksICJibG9iIik7CisgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ1ZpZXcoc3FsaXRlM19jb2x1bW5fZGVjbHR5cGUobV9zdGF0ZW1lbnQsIGNvbCkpLCAi
YmxvYiIpOwogfQogCiBTdHJpbmcgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5OYW1lKGludCBj
b2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA2Nzg3ZmQx
ZGQyYmRiN2ZmYmMzYmMzNTJhNDAwNzBiMWVlZGE0MGY1Li45ODQ1YzM3NDk5NzAzM2Y3MTVlZTFm
ZTg2ZTFjN2UwNjY4ZTU0OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKQEAgLTM4MDMsNiArMzgwMywxMSBAQCBUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1
Y3RUZXh0UnVuKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYgcwogICAg
IHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcoc3RyaW5nKSwgc3R5bGUsIGV4cGFu
c2lvbiwgZmxhZ3MpOwogfQogCitUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVu
KGNvbnN0IEF0b21pY1N0cmluZyYgYXRvbWljU3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzIGZsYWdzKQorewor
ICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcoYXRvbWljU3RyaW5nKSwgc3R5
bGUsIGV4cGFuc2lvbiwgZmxhZ3MpOworfQorCiBUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1
Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmIHRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewogICAgIHJldHVybiBjb25zdHJ1Y3RU
ZXh0UnVuKHRleHQuc3RyaW5nVmlldygpLCBzdHlsZSwgZXhwYW5zaW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggNzFmYjA5ZGIyYjJiYWJjZmFiODZkODgzNjY5
NDVhN2JjMjkyMDhmZS4uYjdiNTA2ZGI2YmYxNjI3YzExMGRjMDczZWFhMDEzNjE5MzgzNGQzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTIwNyw2ICsyMDcsOCBA
QCBwdWJsaWM6CiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwg
VGV4dFJ1bkZsYWdzID0gRGVmYXVsdFRleHRSdW5GbGFncyk7CiAgICAgc3RhdGljIFRleHRSdW4g
Y29uc3RydWN0VGV4dFJ1bihjb25zdCBTdHJpbmcmLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAg
ICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzID0g
RGVmYXVsdFRleHRSdW5GbGFncyk7CisgICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1
bihjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAgICAgIEV4cGFu
c2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzID0gRGVmYXVsdFRl
eHRSdW5GbGFncyk7CiAgICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBS
ZW5kZXJUZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBhbnNpb25CZWhhdmlv
ciA9IERlZmF1bHRFeHBhbnNpb24pOwogICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRS
dW4oY29uc3QgUmVuZGVyVGV4dCYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBSZW5kZXJTdHlsZSYsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KaW5kZXggZTExZTY5Zjg1MzAwMjNkNWU0NmQ2ZjBkYTM0OGFjOTAyOGMwZWQ0YS4uZmZj
MzBkNDg3MWVjZDU2YzY1MWNhYWUzNWUxYjhhMDE4NzJjYzU3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTI5Miw3ICsxMjkyLDcgQEAgU3RyaW5n
IFJlbmRlclRoZW1lSU9TOjptZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpCiAjaWYgRU5BQkxFKE1F
RElBX0NPTlRST0xTX1NDUklQVCkKICAgICBpZiAobV9tZWRpYUNvbnRyb2xzU3R5bGVTaGVldC5p
c0VtcHR5KCkpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWls
ZGVyLmFwcGVuZChbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUg
YnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhGb3JS
ZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNpT1MiIG9mVHlwZTpAImNzcyJdIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmcoW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZv
ckNsYXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6
QCJtZWRpYUNvbnRyb2xzaU9TIiBvZlR5cGU6QCJjc3MiXSBlbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZyBlcnJvcjpuaWxdKSk7CiAgICAgICAgIG1fbWVkaWFDb250cm9sc1N0eWxlU2hlZXQg
PSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogICAgIHJldHVybiBtX21lZGlhQ29udHJvbHNT
dHlsZVNoZWV0OwpAQCAtMTMwNiw5ICsxMzA2LDkgQEAgU3RyaW5nIFJlbmRlclRoZW1lSU9TOjpt
ZWRpYUNvbnRyb2xzU2NyaXB0KCkKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQog
ICAgIGlmIChtX21lZGlhQ29udHJvbHNTY3JpcHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoW05T
U3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNz
OltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJtZWRp
YUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncyIgb2ZUeXBlOkAianMiXSBlbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKTsKLSAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQo
W05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNs
YXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJt
ZWRpYUNvbnRyb2xzQXBwbGUiIG9mVHlwZTpAImpzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmcgZXJyb3I6bmlsXSk7Ci0gICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2Vi
Q29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250
cm9sc2lPUyIgb2ZUeXBlOkAianMiXSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJv
cjpuaWxdKTsKKyAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoU3RyaW5nKFtOU1N0cmluZyBz
dHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29y
ZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9s
c0xvY2FsaXplZFN0cmluZ3MiIG9mVHlwZTpAImpzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmcgZXJyb3I6bmlsXSkpOworICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChTdHJpbmco
W05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNs
YXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJt
ZWRpYUNvbnRyb2xzQXBwbGUiIG9mVHlwZTpAImpzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmcgZXJyb3I6bmlsXSkpOworICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChTdHJpbmco
W05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNs
YXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJt
ZWRpYUNvbnRyb2xzaU9TIiBvZlR5cGU6QCJqcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nIGVycm9yOm5pbF0pKTsKICAgICAgICAgbV9tZWRpYUNvbnRyb2xzU2NyaXB0ID0gc2NyaXB0
QnVpbGRlci50b1N0cmluZygpOwogICAgIH0KICAgICByZXR1cm4gbV9tZWRpYUNvbnRyb2xzU2Ny
aXB0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IGI3
YmZiMWE5MjRkZDllMTlhZTgwYTFjMTkzMjg0ZGRkNDM1Zjg5YTUuLjNhYWZkNjVkMjZlYWM2NTQz
YzNlZjU2MTNkMDRhODEwN2E1Y2ZkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KQEAgLTIzNSw3ICsyMzUsNyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVNYWM6
Om1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NS
SVBUKQogICAgIGlmIChtX21lZGlhQ29udHJvbHNTdHlsZVNoZWV0LmlzRW1wdHkoKSkgewogICAg
ICAgICBTdHJpbmdCdWlsZGVyIHN0eWxlU2hlZXRCdWlsZGVyOwotICAgICAgICBzdHlsZVNoZWV0
QnVpbGRlci5hcHBlbmQoW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVu
ZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRo
Rm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRyb2xzQXBwbGUiIG9mVHlwZTpAImNzcyJdIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pOworICAgICAgICBzdHlsZVNoZWV0QnVp
bGRlci5hcHBlbmQoU3RyaW5nKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tO
U0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0g
cGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc0FwcGxlIiBvZlR5cGU6QCJjc3MiXSBlbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKSk7CiAgICAgICAgIG1fbWVkaWFD
b250cm9sc1N0eWxlU2hlZXQgPSBzdHlsZVNoZWV0QnVpbGRlci50b1N0cmluZygpOwogICAgIH0K
ICAgICByZXR1cm4gbV9tZWRpYUNvbnRyb2xzU3R5bGVTaGVldDsKQEAgLTI0OSw4ICsyNDksOCBA
QCBTdHJpbmcgUmVuZGVyVGhlbWVNYWM6Om1lZGlhQ29udHJvbHNTY3JpcHQoKQogI2lmIEVOQUJM
RShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAgaWYgKG1fbWVkaWFDb250cm9sc1NjcmlwdC5p
c0VtcHR5KCkpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBzY3JpcHRCdWlsZGVyOwotICAgICAg
ICBzY3JpcHRCdWlsZGVyLmFwcGVuZChbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxl
OltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFz
c11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzIiBvZlR5
cGU6QCJqcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pOwotICAg
ICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZG
aWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBj
bGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNBcHBsZSIgb2ZUeXBlOkAianMi
XSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKTsKKyAgICAgICAgc2Ny
aXB0QnVpbGRlci5hcHBlbmQoU3RyaW5nKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZp
bGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNs
YXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3MiIG9m
VHlwZTpAImpzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSkpOwor
ICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChTdHJpbmcoW05TU3RyaW5nIHN0cmluZ1dpdGhD
b250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlUmVuZGVyVGhl
bWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRyb2xzQXBwbGUiIG9m
VHlwZTpAImpzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSkpOwog
ICAgICAgICBtX21lZGlhQ29udHJvbHNTY3JpcHQgPSBzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCk7
CiAgICAgfQogICAgIHJldHVybiBtX21lZGlhQ29udHJvbHNTY3JpcHQ7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTRjYTZiNzNmYzRlZTU1MzU3
MjU5YjIzOWI1Njc3ZTMyMzY4NGY3Ni4uNzlhMmRhMzFjYzNlYTUyZDA4NzhmODI4YmVhYTlmZjZi
MGUxM2E1MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA5LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgcGFyc2VIVE1MSW50ZWdlcigpIHNob3VsZCB0YWtlIGEgU3RyaW5n
VmlldyBpbiBwYXJhbWV0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTY2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEV4cGxpY2l0bHkgY29uc3RydWN0IGEgU3RyaW5nIGZyb20gdGhlIENGU3RyaW5n
UmVmIGluIG9yZGVyIHRvIGNhbGwKKyAgICAgICAgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCkuIFRo
aXMgaXMgbmVlZGVkIG5vdyB0aGF0IHRoZXJlIGlzIGFuIGFwcGVuZCgpCisgICAgICAgIG92ZXJs
b2FkIHRha2luZyBhbiBBdG9taWNTdHJpbmcgaW4gcGFyYW1ldGVyLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAg
ICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorCiAy
MDE2LTA5LTA4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAg
ICAgIFtXVEZdIEhhc2hUYWJsZSdzIHJlaGFzaCBpcyBub3QgY29tcGF0aWJsZSB0byBSZWY8VD4g
YW5kIEFTYW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAxODk5YThiM2EzZjRkN2MyYmNi
NGY3ZjU5ODE1ZGZhODJhNjQwZjZmLi43OThhODU1MTIyMzNlNzUwMWQ0NTI3MTVhOTU2Y2U3Y2Y5
YzMxYzgwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC04NDMsNyArODQzLDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUoV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSwgU3RyaW5nQnVpbGQKICAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IHdrRGF0YSA9
IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNoaXZlKGZyYW1lKSk7CiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgV0tEYXRhR2V0
Qnl0ZXMod2tEYXRhLmdldCgpKSwgV0tEYXRhR2V0U2l6ZSh3a0RhdGEuZ2V0KCkpKSk7CiAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IGFkb3B0Q0YoY3JlYXRlWE1MU3RyaW5n
RnJvbVdlYkFyY2hpdmVEYXRhKGNmRGF0YS5nZXQoKSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGNmU3RyaW5nLmdldCgpKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmcoY2ZT
dHJpbmcuZ2V0KCkpKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288408</attachid>
            <date>2016-09-09 09:38:21 -0700</date>
            <delta_ts>2016-09-10 11:10:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161669-20160909093553.patch</filename>
            <type>text/plain</type>
            <size>23492</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MmZhNmI5YjM3ZTU3NjEwM2I4YjdjZDI5YjVkMzIxMzJmMGE0MDBkLi4xNGU3M2Q0OGEwOTAzMWJm
YWI3ZTQ5ZTk3OTYwMjgzNWE2NmEwNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0wOS0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIHBhcnNlSFRNTEludGVnZXIoKSBzaG91bGQgdGFrZSBhIFN0cmluZ1ZpZXcgaW4g
cGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE2NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXREYXRl
VGltZSk6CisgICAgICAgIEV4cGxpY2l0bHkgY29uc3RydWN0IGEgU3RyaW5nIGZyb20gdGhlIGNv
bnN0IFdDSEFSKiBvbiBXaW5kb3dzIGJlY2F1c2UKKyAgICAgICAgaXQgaXMgYW1iaWd1b3VzIG90
aGVyd2lzZSBub3cgdGhhdCB0aGVyZSBpcyBhIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgpCisgICAg
ICAgIG92ZXJsb2FkIHRha2luZyBhbiBBdG9taWNTdHJpbmcgaW4uCisKIDIwMTYtMDktMDkgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlM
RUQ6IHByb21pc2UuaW5oZXJpdHMoSlNQcm9taXNlOjppbmZvKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Y2U2NzliN2Ez
YTA3NGU3MjVlNzQ3YTNkMWEwYjNjZWZkNDZmZDQuLjBiMDk3MmM0NTAyZGM5OGZmNDM2YjQxMTkz
ZjgwZmU2YWY4ZmFlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDktMDYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hv
dWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIEFkZCBTdHJpbmdC
dWlsZGVyOjphcHBlbmQoKSBvdmVybG9hZCB0YWtpbmcgYW4gQXRvbWljU3RyaW5nIGluIHBhcmFt
ZXRlci4KKyAgICAgICAgSXQgdXNlZCB0byBjYWxsIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25z
dCBTdHJpbmcmKSBpbXBsaWNpdGx5IHdoZW4KKyAgICAgICAgcGFzc2luZyBhbiBBdG9taWNTdHJp
bmcuIEhvd2V2ZXIsIGl0IGlzIG5vdyBhbWJpZ3VvdXMgYmVjYXVzZSB0aGVyZQorICAgICAgICBp
cyBhbiBvdmVybG9hZCB0YWtpbmcgYSBTdHJpbmdWaWV3LCBhbmQgaXQgaXMgbm93IHBvc3NpYmxl
IHRvIGNvbnN0cnVjdAorICAgICAgICBhIFN0cmluZ1ZpZXcgZnJvbSBhbiBBdG9taWNTdHJpbmcu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmlu
Z1ZpZXc6OlN0cmluZ1ZpZXcpOgorICAgICAgICAtIEFkZCBTdHJpbmdWaWV3IGNvbnN0cnVjdG9y
IHRha2luZyBhbiBBdG9taWNTdHJpbmcgaW4gcGFyYW1ldGVyIGZvcgorICAgICAgICAgIGNvbnZl
bmllbmNlLiBUaGlzIGF2b2lkcyBoYXZpbmcgdG8gY2FsbCBBdG9taWNTdHJpbmc6OnN0cmluZygp
CisgICAgICAgICAgZXhwbGljaXRseSBhdCBjYWxsIHNpdGVzLgorICAgICAgICAtIEFkZCBTdHJp
bmdWaWV3IGNvbnN0cnVjdG9yIHRha2luZyBhICdjb25zdCBjaGFyKicgaW4gcGFyYW1ldGVyIGZv
cgorICAgICAgICAgIHBlcmZvcm1hbmNlLiBUaGVyZSBhcmUgc2V2ZXJhbCBjYWxsIHNpdGVzIHRo
YXQgd2VyZSBwYXNzaW5nIGEgY29uc3QKKyAgICAgICAgICBjaGFyKiBhbmQgaW1wbGljaXRseSBj
b25zdHJ1Y3RpbmcgYW4gdW5uZWNlc3NhcnkgU3RyaW5nIHRvIGNvbnN0cnVjdAorICAgICAgICAg
IGEgU3RyaW5nVmlldy4gVGhpcyBiZWNhbWUgbW9yZSBvYnZpb3VzIGJlY2F1c2UgdGhlIGNvbnN0
cnVjdG9yIHRha2luZworICAgICAgICAgIGFuIEF0b21pY1N0cmluZyBpbiBwYXJhbWV0ZXIgbWFk
ZSBzdWNoIGNhbGxzIGFtYmlndW91cy4KKworCiAyMDE2LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGluZyBhIGZldyBKU0MgdGVz
dCBmYWlsdXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjgyM2E0MTJlZTY4NWIzYzcyM2RhODZkOTQ0ZGI2
Nzg2YzgyNzg4Li43OTA4MGEwYzYxNmU5N2U2NzQzN2U5YjdjMDg2NzcyYmY2MzBlYjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTYtMDktMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBT
dHJpbmdWaWV3IGluIHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYxNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgcGFyc2VIVE1MSW50ZWdlcigpIHNob3VsZCB0YWtlIGEgU3RyaW5nVmll
dyBpbiBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhCisgICAgICAgIGNvbnN0IFN0cmluZyYuCisKKyAg
ICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlRm9udEZhY2VTcmNMb2NhbCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQ
YXJzZXJWYWx1ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclN0cmluZzo6dG9TdHJp
bmdWaWV3KToKKyAgICAgICAgQWRkIHRvU3RyaW5nVmlldygpIHRvIGF2b2lkIHVubmVjZXNzYXJp
bHkgY29uc3RydWN0aW5nIGEgU3RyaW5nIGZvcgorICAgICAgICBjYWxsaW5nIFN0cmluZ0J1aWxk
ZXI6OmFwcGVuZCgpLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUTUxJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZUhUVFBSZWZyZXNoSW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlTnVt
YmVyc0dyZWF0ZXJUaGFuWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpsaW1pdFRvT25seUhUTUxO
b25OZWdhdGl2ZSk6CisgICAgICAgIFRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRlciBpbnN0
ZWFkIG9mIGEgY29uc3QgU3RyaW5nJi4KKworICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojppc0NvbHVt
bkRlY2xhcmVkQXNCbG9iKToKKyAgICAgICAgQXZvaWQgdW5uZWNlc3NhcmlseSBjb25zdHJ1Y3Rp
bmcgYSBTdHJpbmcgdG8gY2FsbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSgpCisgICAg
ICAgIGJ5IGxldmVyYWdpbmcgdGhlIFN0cmluZ1ZpZXcgY29uc3RydWN0b3IgdGFraW5nIGEgJ2Nv
bnN0IGNoYXIqJyBpbiBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICBBZGQgY29uc3Ry
dWN0VGV4dFJ1bigpIG92ZXJsb2FkIHRha2luZyBhbiBBdG9taWNTdHJpbmcuIEl0IHdhcyBvdGhl
cndpc2UgYW1iaWd1b3VzCisgICAgICAgIGJlY2F1c2UgYm90aCBhIFN0cmluZyBvciBhIFN0cmlu
Z1ZpZXcgY291bGQgYmUgY29uc3RydWN0ZWQgZnJvbSBhbiBBdG9taWNTdHJpbmcuCisKKyAgICAg
ICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0RlZmF1bHRGb250
Q1NTKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkRGlzcGxheVN0cmluZ0ZvclRyYWNrQmFzZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVNYWM6Om1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjptZWRpYUNvbnRyb2xzU2NyaXB0KToKKyAgICAgICAgRXhw
bGljaXRseSBjb25zdHJ1Y3QgYSBTdHJpbmcgZnJvbSBOU1N0cmluZyAvIENGU3RyaW5nUmVmIHR5
cGVzIGFzIHN1Y2ggY2FsbHMgYXJlCisgICAgICAgIG5vdyBhbWJpZ3VvdXMuCisKIDIwMTYtMDkt
MDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVElP
TiBGQUlMRUQ6IHByb21pc2UuaW5oZXJpdHMoSlNQcm9taXNlOjppbmZvKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMGI1N2Yw
MTJkNTYxNGMwMjQ3YTA3YjQzNDAwZGU5NzViZDg4Zjg0Mi4uZGY5YTYwZGZlNThlZTA3ZTY5N2Nj
MGQxNDY4ZDk2YzA2ZWE1NzNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTE1LDcgKzExNSwxMSBAQCBTdHJpbmcgZm9ybWF0
RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZvcm1h
dCwgYm9vbCBhcwogI2VuZGlmCiAgICAgICAgICAgICBpZiAodGltZVpvbmVOYW1lWzBdKSB7CiAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKCIpOworI2lmIE9TKFdJTkRP
V1MpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nKHRpbWVab25lTmFtZSkp
OworI2Vsc2UKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0aW1lWm9uZU5hbWUpOwor
I2VuZGlmCiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCA4MjI0ZDIy
ZDZiODgyN2ZkZDExZTY5Y2JhNDYwNjE0MzBjODFkYjE0Li4wNWIxNWJiZjAxNGFkYTRhYmMxYzRh
Y2FkOWVmMDEzZWNmZjliOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAt
NTAsNiArNTAsMTEgQEAgcHVibGljOgogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZChj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsgfQogCisgICAgdm9p
ZCBhcHBlbmQoY29uc3QgQXRvbWljU3RyaW5nJiBhdG9taWNTdHJpbmcpCisgICAgeworICAgICAg
ICBhcHBlbmQoYXRvbWljU3RyaW5nLnN0cmluZygpKTsKKyAgICB9CisKICAgICB2b2lkIGFwcGVu
ZChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAgIGlmICghc3RyaW5nLmxlbmd0
aCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCBiZDdlOGY2NDYwYmI4YmE3MTVmYzUw
NzQ4MzczY2Y2YzE3OGMxYmFiLi5hMzllYTA3ZDIwN2M5NTU2MDgxNTRhMWU0Yjg1NzA2YTAxNjYw
YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtNjAsMTEgKzYwLDEzIEBAIHB1Ymxp
YzoKICAgICBTdHJpbmdWaWV3JiBvcGVyYXRvcj0oY29uc3QgU3RyaW5nVmlldyYpOwogI2VuZGlm
CiAKKyAgICBTdHJpbmdWaWV3KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFN0cmluZ1ZpZXco
Y29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJik7CiAgICAg
U3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsKik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBMQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgU3RyaW5nVmlldyhjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKik7CiAKICAgICBzdGF0aWMg
U3RyaW5nVmlldyBlbXB0eSgpOwogCkBAIC0xOTMsNiArMTk1LDcgQEAgaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBjaGFyKiBhLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJuICFlcXVhbChiLCBh
KTsgfQogCiB9CiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0yODUsNiArMjg4
LDExIEBAIGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgaW5pdGlhbGl6ZShjaGFyYWN0ZXJzLCBsZW5ndGgp
OwogfQogCitpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzKQoreworICAgIGluaXRpYWxpemUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNo
YXJhY3RlcnMpLCBzdHJsZW4oY2hhcmFjdGVycykpOworfQorCiBpbmxpbmUgU3RyaW5nVmlldzo6
U3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgc2V0VW5kZXJseWlu
Z1N0cmluZygmc3RyaW5nKTsKQEAgLTMyMCw2ICszMjgsMTEgQEAgaW5saW5lIFN0cmluZ1ZpZXc6
OlN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgaW5pdGlhbGl6ZShzdHJpbmcu
Y2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CiB9CiAKK2lubGluZSBTdHJpbmdWaWV3
OjpTdHJpbmdWaWV3KGNvbnN0IEF0b21pY1N0cmluZyYgYXRvbWljU3RyaW5nKQorICAgIDogU3Ry
aW5nVmlldyhhdG9taWNTdHJpbmcuc3RyaW5nKCkpCit7Cit9CisKIGlubGluZSB2b2lkIFN0cmlu
Z1ZpZXc6OmNsZWFyKCkKIHsKICAgICBtX2NoYXJhY3RlcnMgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCmluZGV4IDhmY2VmYmM1OTIyMDA3YjRjYzQxZmMw
ZjI0NjhiOTlhOTUzNGE4YWQuLjZkZmFmNDhiY2I1MWVlZTU1MzEwMmIxZDVjODFkZTlmZjUyYzlk
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKQEAgLTczMjgsNyAr
NzMyOCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlU3JjTG9jYWwoQ1NTVmFsdWVM
aXN0JiB2YWx1ZUxpc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnICcpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobG9jYWxWYWx1ZS0+c3RyaW5nKTsK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxvY2FsVmFsdWUtPnN0cmluZy50b1N0cmluZ1Zp
ZXcoKSk7CiAgICAgICAgIH0KICAgICAgICAgdmFsdWVMaXN0LmFwcGVuZChDU1NGb250RmFjZVNy
Y1ZhbHVlOjpjcmVhdGVMb2NhbChidWlsZGVyLnRvU3RyaW5nKCkpKTsKICAgICB9IGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDFlNzg4M2Y2
MTMzMTcyYmNlNzMyYmRkZWY4MzdlMjRjYmQ5ZTA5ZjMuLmE5MTk0MTVhNmQxNGZlYzcyNjQxYjlj
Mzg1ZDc4MThlNzgzZmE5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyVmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJWYWx1ZXMuaApAQCAtODcsNiArODcsNyBAQCBzdHJ1Y3QgQ1NTUGFyc2VyU3RyaW5nIHsKIAog
ICAgIG9wZXJhdG9yIFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIGlzOEJpdCgpID8gU3RyaW5nKG1f
ZGF0YS5jaGFyYWN0ZXJzOCwgbV9sZW5ndGgpIDogU3RyaW5nKG1fZGF0YS5jaGFyYWN0ZXJzMTYs
IG1fbGVuZ3RoKTsgfQogICAgIG9wZXJhdG9yIEF0b21pY1N0cmluZygpIGNvbnN0IHsgcmV0dXJu
IGlzOEJpdCgpID8gQXRvbWljU3RyaW5nKG1fZGF0YS5jaGFyYWN0ZXJzOCwgbV9sZW5ndGgpIDog
QXRvbWljU3RyaW5nKG1fZGF0YS5jaGFyYWN0ZXJzMTYsIG1fbGVuZ3RoKTsgfQorICAgIFN0cmlu
Z1ZpZXcgdG9TdHJpbmdWaWV3KCkgY29uc3QgeyByZXR1cm4gaXM4Qml0KCkgPyBTdHJpbmdWaWV3
KG1fZGF0YS5jaGFyYWN0ZXJzOCwgbV9sZW5ndGgpIDogU3RyaW5nVmlldyhtX2RhdGEuY2hhcmFj
dGVyczE2LCBtX2xlbmd0aCk7IH0KIAogICAgIHVuaW9uIHsKICAgICAgICAgTENoYXIqIGNoYXJh
Y3RlcnM4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcAppbmRleCAwZGNjN2Y2MzU0NDQ0NTljNGU0NjJjMTNmZmYwZmE1NWIwZGJjZTBlLi4zYjhj
YzRkMjI1MGNiZDZiOGE3NzU1YzdmYWU4YmNmNmRkNTEyMzViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBA
IHN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChjb25zdCBDaGFy
YWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29uCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjcnVsZXMtZm9yLXBhcnNpbmctaW50
ZWdlcnMKLU9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0
KQorT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCkBA
IC0yMDcsNyArMjA3LDcgQEAgT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0
cmluZyYgaW5wdXQpCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2luZnJhc3RydWN0dXJlLmh0bWwjcnVsZXMtZm9yLXBhcnNpbmctbm9uLW5lZ2F0aXZlLWlu
dGVnZXJzCi1PcHRpb25hbDx1bnNpZ25lZD4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGNv
bnN0IFN0cmluZyYgaW5wdXQpCitPcHRpb25hbDx1bnNpZ25lZD4gcGFyc2VIVE1MTm9uTmVnYXRp
dmVJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgT3B0aW9uYWw8aW50PiBzaWduZWRW
YWx1ZSA9IHBhcnNlSFRNTEludGVnZXIoaW5wdXQpOwogICAgIGlmICghc2lnbmVkVmFsdWUgfHwg
c2lnbmVkVmFsdWUudmFsdWUoKSA8IDApCkBAIC0zNjMsNyArMzYzLDcgQEAgc3RhdGljIGJvb2wg
cGFyc2VIVFRQUmVmcmVzaEludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBj
b25zdCBDaGFyYWMKICAgICB3aGlsZSAocG9zaXRpb24gPCBlbmQgJiYgaXNBU0NJSURpZ2l0KCpw
b3NpdGlvbikpCiAgICAgICAgICsrcG9zaXRpb247CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4g
bnVtYmVyID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcobnVtYmVyU3Rh
cnQsIHBvc2l0aW9uIC0gbnVtYmVyU3RhcnQpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Cisg
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IG51bWJlciA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cihTdHJpbmdWaWV3KG51bWJlclN0YXJ0LCBwb3NpdGlvbiAtIG51bWJlclN0YXJ0KSk7CiAgICAg
aWYgKCFudW1iZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IGQ5ZWQwODM3NDkzM2I0YTExODIy
NDM0ZWY1MzY2ZmVhMDM1OGFlYzcuLjNlNzk4OWQ3Y2FjZjFiZGIxNzM2N2M4ZGE4N2RiZWMzYjEw
ZjdhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsMTAgKzYz
LDEwIEBAIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmKTsK
IGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBkb3VibGUg
ZmFsbGJhY2tWYWx1ZSk7CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBw
cy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCi1XRUJDT1JFX0VYUE9S
VCBPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJik7CitXRUJDT1JF
X0VYUE9SVCBPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXIoU3RyaW5nVmlldyk7CiAKIC8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVz
LWZvci1wYXJzaW5nLW5vbi1uZWdhdGl2ZS1pbnRlZ2VycwotV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8dW5zaWduZWQ+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmKTsK
K1dFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXJzZUhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIoU3RyaW5nVmlldyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3Zh
bGlkLW5vbi1uZWdhdGl2ZS1pbnRlZ2VyCiBPcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcpOwpAQCAtMTMyLDcgKzEzMyw3IEBAIGlubGluZSB1
bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZU51bWJlcnNHcmVhdGVyVGhhblplcm8o
dW5zaWduZWQgdmFsdWUsCiAgICAgcmV0dXJuICh2YWx1ZSA+IDAgJiYgdmFsdWUgPD0gbWF4SFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcikgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTsKIH0KIAotaW5saW5l
IHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlTnVtYmVyc0dyZWF0ZXJUaGFuWmVy
byhjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUgPSAxKQor
aW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlTnVtYmVyc0dyZWF0ZXJU
aGFuWmVybyhTdHJpbmdWaWV3IHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUgPSAx
KQogewogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUgPiAwKTsKICAgICBBU1NFUlQoZGVmYXVsdFZh
bHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIpOwpAQCAtMTUwLDcgKzE1MSw3IEBAIGlu
bGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSh1bnNpZ25lZCB2YWx1ZSwg
dW5zaWduZWQgZGVmYXVsdFZhbHVlCiAgICAgcmV0dXJuIHZhbHVlIDw9IG1heEhUTUxOb25OZWdh
dGl2ZUludGVnZXIgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTsKIH0KIAotaW5saW5lIHVuc2lnbmVk
IGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUsIHVu
c2lnbmVkIGRlZmF1bHRWYWx1ZSA9IDApCitpbmxpbmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1M
Tm9uTmVnYXRpdmUoU3RyaW5nVmlldyBzdHJpbmdWYWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVl
ID0gMCkKIHsKICAgICBBU1NFUlQoZGVmYXVsdFZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIpOwogICAgIHVuc2lnbmVkIHZhbHVlID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KHN0cmluZ1ZhbHVlKS52YWx1ZU9yKGRlZmF1bHRWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmluZGV4IDBlZjdk
YjNmMWRiZGJlMThkNWMzNjQ0ZmExNjBmY2I4ODQyMjhhMWYuLjVmMDViYjkwZmExMjNjYmJhNjk3
NGQwZjBlOWU0MmFiODZiZmFjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC00MzIsNyArNDMyLDcgQEAgU3Ry
aW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0RlZmF1bHRGb250Q1NT
KCkgY29uc3QKICAgICAKICAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmco
Q1NTUHJvcGVydHlGb250RmFtaWx5KSk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6IFwi
Iik7Ci0gICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KG5hbWUuZ2V0
KCkpKTsKKyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmcoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KG5hbWUuZ2V0KCkpKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKICAgICBpZiAoYmVoYXZp
b3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKQogICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIiAhaW1wb3J0YW50Iik7CkBAIC02NDIsNyArNjQyLDcgQEAgc3Rh
dGljIHZvaWQgYnVpbGREaXNwbGF5U3RyaW5nRm9yVHJhY2tCYXNlKFN0cmluZ0J1aWxkZXImIGRp
c3BsYXlOYW1lLCBjb25zdCBUcmEKICAgICAgICAgZWxzZSBpZiAoIWxhbmd1YWdlLmlzRW1wdHko
KSkKICAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsYW5ndWFnZSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChsb2NhbGVJZGVudGlmaWVyLmdldCgp
KTsKKyAgICAgICAgICAgIGRpc3BsYXlOYW1lLmFwcGVuZChTdHJpbmcobG9jYWxlSWRlbnRpZmll
ci5nZXQoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBkNjZjODE3ZmE4NzMyZTRkMTUxODkzOTE0NTc4ZmEz
Y2U4ZmMxNzZkLi5lNGM3NzFkNDNlZDM4MWNjMmMxMDU2YWY4ZmViNWU4ZTcwNmYwMDQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAt
Mjg4LDcgKzI4OCw3IEBAIGJvb2wgU1FMaXRlU3RhdGVtZW50Ojppc0NvbHVtbkRlY2xhcmVkQXNC
bG9iKGludCBjb2wpCiAgICAgICAgIGlmIChwcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3Fs
aXRlM19jb2x1bW5fZGVjbHR5cGUxNihtX3N0YXRlbWVudCwgY29sKSkpLCAiYmxvYiIpOworICAg
IHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KHNxbGl0ZTNf
Y29sdW1uX2RlY2x0eXBlKG1fc3RhdGVtZW50LCBjb2wpKSwgImJsb2IiKTsKIH0KIAogU3RyaW5n
IFNRTGl0ZVN0YXRlbWVudDo6Z2V0Q29sdW1uTmFtZShpbnQgY29sKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNjc4N2ZkMWRkMmJkYjdmZmJjM2JjMzUyYTQw
MDcwYjFlZWRhNDBmNS4uOTg0NWMzNzQ5OTcwMzNmNzE1ZWUxZmU4NmUxYzdlMDY2OGU1NDlmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zODAzLDYgKzM4
MDMsMTEgQEAgVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBTdHJp
bmcmIHN0cmluZywgY29uc3QgUmVuZGVyU3R5bGUmIHMKICAgICByZXR1cm4gY29uc3RydWN0VGV4
dFJ1bihTdHJpbmdWaWV3KHN0cmluZyksIHN0eWxlLCBleHBhbnNpb24sIGZsYWdzKTsKIH0KIAor
VGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBBdG9taWNTdHJpbmcm
IGF0b21pY1N0cmluZywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlv
ciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKK3sKKyAgICByZXR1cm4gY29uc3RydWN0
VGV4dFJ1bihTdHJpbmdWaWV3KGF0b21pY1N0cmluZyksIHN0eWxlLCBleHBhbnNpb24sIGZsYWdz
KTsKK30KKwogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5k
ZXJUZXh0JiB0ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9y
IGV4cGFuc2lvbikKIHsKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bih0ZXh0LnN0cmluZ1Zp
ZXcoKSwgc3R5bGUsIGV4cGFuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCmluZGV4IDcxZmIwOWRiMmIyYmFiY2ZhYjg2ZDg4MzY2OTQ1YTdiYzI5MjA4ZmUuLmI3YjUw
NmRiNmJmMTYyN2MxMTBkYzA3M2VhYTAxMzYxOTM4MzRkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oCkBAIC0yMDcsNiArMjA3LDggQEAgcHVibGljOgogICAgICAgICBF
eHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHRSdW5GbGFncyA9IERlZmF1
bHRUZXh0UnVuRmxhZ3MpOwogICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29u
c3QgU3RyaW5nJiwgY29uc3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBhbnNpb25CZWhhdmlv
ciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHRSdW5GbGFncyA9IERlZmF1bHRUZXh0UnVuRmxhZ3Mp
OworICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgQXRvbWljU3RyaW5n
JiwgY29uc3QgUmVuZGVyU3R5bGUmLAorICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1
bHRFeHBhbnNpb24sIFRleHRSdW5GbGFncyA9IERlZmF1bHRUZXh0UnVuRmxhZ3MpOwogICAgIHN0
YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IFJl
bmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9u
KTsKICAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQm
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGUxMWU2OWY4
NTMwMDIzZDVlNDZkNmYwZGEzNDhhYzkwMjhjMGVkNGEuLmZmYzMwZDQ4NzFlY2Q1NmM2NTFjYWFl
MzVlMWI4YTAxODcyY2M1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0KQEAgLTEyOTIsNyArMTI5Miw3IEBAIFN0cmluZyBSZW5kZXJUaGVtZUlPUzo6bWVk
aWFDb250cm9sc1N0eWxlU2hlZXQoKQogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQp
CiAgICAgaWYgKG1fbWVkaWFDb250cm9sc1N0eWxlU2hlZXQuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoW05TU3RyaW5n
IHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJD
b3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6QCJtZWRpYUNvbnRy
b2xzaU9TIiBvZlR5cGU6QCJjc3MiXSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJv
cjpuaWxdKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nKFtOU1N0cmluZyBzdHJpbmdX
aXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRl
clRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc2lPUyIg
b2ZUeXBlOkAiY3NzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSkp
OwogICAgICAgICBtX21lZGlhQ29udHJvbHNTdHlsZVNoZWV0ID0gYnVpbGRlci50b1N0cmluZygp
OwogICAgIH0KICAgICByZXR1cm4gbV9tZWRpYUNvbnRyb2xzU3R5bGVTaGVldDsKQEAgLTEzMDYs
OSArMTMwNiw5IEBAIFN0cmluZyBSZW5kZXJUaGVtZUlPUzo6bWVkaWFDb250cm9sc1NjcmlwdCgp
CiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKICAgICBpZiAobV9tZWRpYUNvbnRy
b2xzU2NyaXB0LmlzRW1wdHkoKSkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIHNjcmlwdEJ1aWxk
ZXI7Ci0gICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29u
dGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1l
QnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc0xvY2FsaXplZFN0
cmluZ3MiIG9mVHlwZTpAImpzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6
bmlsXSk7Ci0gICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFtOU1N0cmluZyBzdHJpbmdXaXRo
Q29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRo
ZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc0FwcGxlIiBv
ZlR5cGU6QCJqcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pOwot
ICAgICAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZChbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRz
T2ZGaWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRs
ZSBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNpT1MiIG9mVHlwZTpAImpz
Il0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXSk7CisgICAgICAgIHNj
cmlwdEJ1aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZG
aWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBj
bGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzIiBv
ZlR5cGU6QCJqcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pKTsK
KyAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoU3RyaW5nKFtOU1N0cmluZyBzdHJpbmdXaXRo
Q29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRo
ZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc0FwcGxlIiBv
ZlR5cGU6QCJqcyJdIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pKTsK
KyAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmQoU3RyaW5nKFtOU1N0cmluZyBzdHJpbmdXaXRo
Q29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRo
ZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc2lPUyIgb2ZU
eXBlOkAianMiXSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKSk7CiAg
ICAgICAgIG1fbWVkaWFDb250cm9sc1NjcmlwdCA9IHNjcmlwdEJ1aWxkZXIudG9TdHJpbmcoKTsK
ICAgICB9CiAgICAgcmV0dXJuIG1fbWVkaWFDb250cm9sc1NjcmlwdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBiN2JmYjFhOTI0ZGQ5ZTE5YWU4MGEx
YzE5MzI4NGRkZDQzNWY4OWE1Li4zYWFmZDY1ZDI2ZWFjNjU0M2MzZWY1NjEzZDA0YTgxMDdhNWNm
ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0y
MzUsNyArMjM1LDcgQEAgU3RyaW5nIFJlbmRlclRoZW1lTWFjOjptZWRpYUNvbnRyb2xzU3R5bGVT
aGVldCgpCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKICAgICBpZiAobV9tZWRp
YUNvbnRyb2xzU3R5bGVTaGVldC5pc0VtcHR5KCkpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBz
dHlsZVNoZWV0QnVpbGRlcjsKLSAgICAgICAgc3R5bGVTaGVldEJ1aWxkZXIuYXBwZW5kKFtOU1N0
cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpb
V2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0aEZvclJlc291cmNlOkAibWVkaWFD
b250cm9sc0FwcGxlIiBvZlR5cGU6QCJjc3MiXSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
ZyBlcnJvcjpuaWxdKTsKKyAgICAgICAgc3R5bGVTaGVldEJ1aWxkZXIuYXBwZW5kKFN0cmluZyhb
TlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgYnVuZGxlRm9yQ2xh
c3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIm1l
ZGlhQ29udHJvbHNBcHBsZSIgb2ZUeXBlOkAiY3NzIl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmcgZXJyb3I6bmlsXSkpOwogICAgICAgICBtX21lZGlhQ29udHJvbHNTdHlsZVNoZWV0ID0g
c3R5bGVTaGVldEJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAgICAgcmV0dXJuIG1fbWVkaWFD
b250cm9sc1N0eWxlU2hlZXQ7CkBAIC0yNDksOCArMjQ5LDggQEAgU3RyaW5nIFJlbmRlclRoZW1l
TWFjOjptZWRpYUNvbnRyb2xzU2NyaXB0KCkKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NS
SVBUKQogICAgIGlmIChtX21lZGlhQ29udHJvbHNTY3JpcHQuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBl
bmQoW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRsZUZv
ckNsYXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3VyY2U6
QCJtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncyIgb2ZUeXBlOkAianMiXSBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdKTsKLSAgICAgICAgc2NyaXB0QnVpbGRlci5h
cHBlbmQoW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIGJ1bmRs
ZUZvckNsYXNzOltXZWJDb3JlUmVuZGVyVGhlbWVCdW5kbGUgY2xhc3NdXSBwYXRoRm9yUmVzb3Vy
Y2U6QCJtZWRpYUNvbnRyb2xzQXBwbGUiIG9mVHlwZTpAImpzIl0gZW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmcgZXJyb3I6bmlsXSk7CisgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kKFN0
cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6W1dlYkNvcmVSZW5kZXJUaGVtZUJ1bmRsZSBjbGFzc11dIHBhdGhGb3JSZXNvdXJj
ZTpAIm1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzIiBvZlR5cGU6QCJqcyJdIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pKTsKKyAgICAgICAgc2NyaXB0QnVpbGRl
ci5hcHBlbmQoU3RyaW5nKFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1
bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIGNsYXNzXV0gcGF0
aEZvclJlc291cmNlOkAibWVkaWFDb250cm9sc0FwcGxlIiBvZlR5cGU6QCJqcyJdIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOm5pbF0pKTsKICAgICAgICAgbV9tZWRpYUNvbnRy
b2xzU2NyaXB0ID0gc2NyaXB0QnVpbGRlci50b1N0cmluZygpOwogICAgIH0KICAgICByZXR1cm4g
bV9tZWRpYUNvbnRyb2xzU2NyaXB0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDE0Y2E2YjczZmM0ZWU1NTM1NzI1OWIyMzliNTY3N2UzMjM2ODRm
NzYuLjc5YTJkYTMxY2MzZWE1MmQwODc4ZjgyOGJlYWE5ZmY2YjBlMTNhNTMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNi0wOS0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIHBh
cnNlSFRNTEludGVnZXIoKSBzaG91bGQgdGFrZSBhIFN0cmluZ1ZpZXcgaW4gcGFyYW1ldGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE2NjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBsaWNpdGx5
IGNvbnN0cnVjdCBhIFN0cmluZyBmcm9tIHRoZSBDRlN0cmluZ1JlZiBpbiBvcmRlciB0byBjYWxs
CisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgpLiBUaGlzIGlzIG5lZWRlZCBub3cgdGhh
dCB0aGVyZSBpcyBhbiBhcHBlbmQoKQorICAgICAgICBvdmVybG9hZCB0YWtpbmcgYW4gQXRvbWlj
U3RyaW5nIGluIHBhcmFtZXRlci4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjpkdW1wRE9NQXNXZWJBcmNoaXZlKToKKwogMjAxNi0wOS0wOCAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBIYXNoVGFibGUn
cyByZWhhc2ggaXMgbm90IGNvbXBhdGlibGUgdG8gUmVmPFQ+IGFuZCBBU2FuCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAKaW5kZXggMTg5OWE4YjNhM2Y0ZDdjMmJjYjRmN2Y1OTgxNWRmYTgyYTY0MGY2
Zi4uNzk4YTg1NTEyMjMzZTc1MDFkNDUyNzE1YTk1NmNlN2NmOWMzMWM4MCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmNwcApAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpkdW1wRE9NQXNXZWJBcmNoaXZlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxk
CiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiB3a0RhdGEgPSBhZG9wdFdLKFdLQnVuZGxlRnJh
bWVDb3B5V2ViQXJjaGl2ZShmcmFtZSkpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIFdLRGF0YUdldEJ5dGVzKHdrRGF0YS5nZXQoKSks
IFdLRGF0YUdldFNpemUod2tEYXRhLmdldCgpKSkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2ZTdHJpbmcgPSBhZG9wdENGKGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShj
ZkRhdGEuZ2V0KCkpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjZlN0cmluZy5nZXQoKSk7
CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nKGNmU3RyaW5nLmdldCgpKSk7CiAjZW5k
aWYKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>