<?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>161537</bug_id>
          
          <creation_ts>2016-09-02 11:04:14 -0700</creation_ts>
          <short_desc>Add support for media query parsing using new CSS Parser</short_desc>
          <delta_ts>2016-09-22 13:37:45 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>46591</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1225833</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-02 11:04:14 -0700</bug_when>
    <thetext>Add support for media query parsing using new CSS Parser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225835</commentid>
    <comment_count>1</comment_count>
      <attachid>287780</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-02 11:04:55 -0700</bug_when>
    <thetext>Created attachment 287780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225838</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-02 11:06:38 -0700</bug_when>
    <thetext>Attachment 287780 did not pass style-queue:


ERROR: Source/WebCore/css/parser/MediaQueryParser.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/MediaQueryParser.h:93:  &apos;parseImpl&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedCSSParserTokenRange&apos;.  [readability/naming/protected] [4]
ERROR: Source/WebCore/css/parser/MediaQueryParser.cpp:131:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/parser/MediaQueryParser.cpp:156:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/parser/MediaQueryParser.cpp:158:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/parser/MediaQueryParser.cpp:176:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/parser/MediaQueryParser.cpp:193:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/parser/MediaQueryParser.cpp:213:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/MediaQueryExp.cpp:68:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/css/MediaQueryExp.cpp:291:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/css/MediaQueryExp.cpp:311:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/css/MediaQueryExp.cpp:312:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 12 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225844</commentid>
    <comment_count>3</comment_count>
      <attachid>287786</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-02 11:11:48 -0700</bug_when>
    <thetext>Created attachment 287786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225846</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-02 11:14:14 -0700</bug_when>
    <thetext>Attachment 287786 did not pass style-queue:


ERROR: Source/WebCore/css/parser/MediaQueryParser.h:93:  &apos;parseImpl&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedCSSParserTokenRange&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225870</commentid>
    <comment_count>5</comment_count>
      <attachid>287793</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-02 12:06:47 -0700</bug_when>
    <thetext>Created attachment 287793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225871</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-02 12:08:50 -0700</bug_when>
    <thetext>Attachment 287793 did not pass style-queue:


ERROR: Source/WebCore/css/parser/MediaQueryParser.h:93:  &apos;parseInternal&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedCSSParserTokenRange&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225884</commentid>
    <comment_count>7</comment_count>
      <attachid>287793</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-02 12:24:45 -0700</bug_when>
    <thetext>Comment on attachment 287793
Patch

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:3355
&gt; -		946D37401D6CE3C20077084F /* CSSParserToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 946D373D1D6CE31A0077084F /* CSSParserToken.h */; };
&gt; +		946D37401D6CE3C20077084F /* CSSParserToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 946D373D1D6CE31A0077084F /* CSSParserToken.h */; settings = {ATTRIBUTES = (Private, ); }; };

This looks unintentional.

&gt; Source/WebCore/css/MediaQueryExp.cpp:71
&gt; +    
&gt; +    

Nit: extra blank line

&gt; Source/WebCore/css/MediaQueryExp.cpp:321
&gt; +        // TODO(timloh): &lt;ratio&gt; is supposed to allow whitespace around the &apos;/&apos;

Did you want to leave this in?

&gt; Source/WebCore/css/MediaQueryExp.h:37
&gt; -
&gt; +    

oops

&gt; Source/WebCore/css/parser/CSSParserIdioms.cpp:39
&gt; +template&lt;typename CharacterType&gt; ALWAYS_INLINE static void convertToASCIILowercaseInPlace(CharacterType* characters, unsigned length)
&gt; +{
&gt; +    for (unsigned i = 0; i &lt; length; ++i)
&gt; +        characters[i] = toASCIILower(characters[i]);
&gt; +}

You have this code in CSSParserToken.cpp too.

&gt; Source/WebCore/css/parser/MediaQueryBlockWatcher.cpp:39
&gt; +MediaQueryBlockWatcher::MediaQueryBlockWatcher()
&gt; +{
&gt; +}

Can you just put this in the header? Or leave it out?

&gt; Source/WebCore/css/parser/MediaQueryBlockWatcher.cpp:45
&gt; +    if (token.getBlockType() == CSSParserToken::BlockStart) {
&gt; +        ++m_blockLevel;
&gt; +    } else if (token.getBlockType() == CSSParserToken::BlockEnd) {

Nit: Single line conditional.

&gt; Source/WebCore/css/parser/MediaQueryParser.cpp:85
&gt; +// State machine member functions start here

Remove?

&gt; Source/WebCore/css/parser/MediaQueryParser.cpp:124
&gt; +        } else if (m_state == ReadRestrictor &amp;&amp; equalIgnoringASCIICase(token.value(), &quot;only&quot;)) {
&gt; +            setStateAndRestrict(ReadMediaType, MediaQuery::Only);
&gt; +        } else if (m_mediaQueryData.restrictor() != MediaQuery::None
&gt; +            &amp;&amp; isRestrictorOrLogicalOperator(token)) {
&gt; +            m_state = SkipUntilComma;
&gt; +        } else {
&gt; +            StringView stringView = token.value();

Single line conditions here.

&gt; Source/WebCore/css/parser/MediaQueryParser.cpp:151
&gt; +    if (type == IdentToken &amp;&amp; equalIgnoringASCIICase(token.value(), &quot;and&quot;)) {
&gt; +        m_state = ReadFeatureStart;
&gt; +    } else if (type == CommaToken &amp;&amp; m_parserType != MediaConditionParser) {

ANd here.

&gt; Source/WebCore/css/parser/MediaQueryParser.h:55
&gt; +private:
&gt; +    MediaQuery::Restrictor m_restrictor;
&gt; +    String m_mediaType;
&gt; +    Vector&lt;MediaQueryExpression&gt; m_expressions;
&gt; +    String m_mediaFeature;
&gt; +    Vector&lt;CSSParserToken, 4&gt; m_valueList;
&gt; +    bool m_mediaTypeSet;
&gt; +
&gt; +public:

Why is private before public here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225886</commentid>
    <comment_count>8</comment_count>
      <attachid>287793</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-09-02 12:25:09 -0700</bug_when>
    <thetext>Comment on attachment 287793
Patch

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

&gt; Source/WebCore/css/MediaQueryExp.cpp:71
&gt; +    

Extra newline.

&gt; Source/WebCore/css/parser/MediaQueryBlockWatcher.h:31
&gt; +#ifndef MediaQueryBlockWatcher_h
&gt; +#define MediaQueryBlockWatcher_h

We are doing #pragma once now, so you can replace this and the #endif with it.

&gt; Source/WebCore/css/parser/MediaQueryParser.h:31
&gt; +#ifndef MediaQueryParser_h
&gt; +#define MediaQueryParser_h

We are doing #pragma once now, so you can replace this and the #endif with it.

&gt; Source/WebCore/css/parser/MediaQueryParser.h:136
&gt; +
&gt; +};

Extra newline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225935</commentid>
    <comment_count>9</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-02 13:51:33 -0700</bug_when>
    <thetext>Landed in r205368.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287780</attachid>
            <date>2016-09-02 11:04:55 -0700</date>
            <delta_ts>2016-09-02 11:11:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>47650</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDUzNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQwOSw2ICsxNDA5LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCiAgICAg
Y3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJz
ZXJJZGlvbXMuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
CiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKICAgICBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuUmFuZ2UuY3BwCkBAIC0xNDE3LDYgKzE0MTgsOCBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCiAgICAgY3Nz
L3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1
dFN0cmVhbS5jcHAKKyAgICBjc3MvcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwCisg
ICAgY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAogICAgIGNzcy9wYXJzZXIvU1ZHQ1NT
UGFyc2VyLmNwcAogCiAgICAgY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMDUzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzNjAsNiArMzM2MCwxMCBAQAogCQk5NDZEMzc0
QTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzc0ODFENkQwNjBDMDA3NzA4NEYgLyogQ1NTTWFy
a3VwLmggKi87IH07CiAJCTk0NkQzNzREMUQ2RDA4QTYwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tl
blJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk0NkQzNzRCMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCAqLzsg
fTsKIAkJOTQ2RDM3NEUxRDZEMDhBQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzRDMUQ2
RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmggKi87IH07CisJCTk0OTNCNkJF
MUQ3NEI0MTIwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OTNCNkI2MUQ3NEIzOTUwMDg4
RTc4MCAvKiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcCAqLzsgfTsKKwkJOTQ5M0I2QkYxRDc0
QjQxMjAwODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OTNCNkI3MUQ3NEIzOTUwMDg4RTc4MCAv
KiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmggKi87IH07CisJCTk0OTNCNkMwMUQ3NEI0MTIwMDg4
RTc4MCAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk0OTNCNkI4MUQ3NEIzOTUwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5
UGFyc2VyLmNwcCAqLzsgfTsKKwkJOTQ5M0I2QzExRDc0QjQxMjAwODhFNzgwIC8qIE1lZGlhUXVl
cnlQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk0OTNCNkI5MUQ3NEIzOTUwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmggKi87IH07CiAJ
CTk0OUM3NzAwMUQ2RTFEOTgwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc2RkUxRDZFMUQ4
QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5jcHAgKi87IH07CiAJCTk0OUM3NzAxMUQ2
RTFEOTgwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NkZGMUQ2RTFEOEMwMEMwREU0RiAvKiBD
U1NQYXJzZXJGYXN0UGF0aHMuaCAqLzsgfTsKIAkJOTQ5Qzc3MDQxRDZFMzlFQTAwQzBERTRGIC8q
IENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwMjFENkUzOTM1MDBDMERFNEYgLyogQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmNwcCAqLzsgfTsKQEAgLTMzNjcsNiArMzM3MSw3IEBACiAJCTk0OUM3
NzA4MUQ2RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MDYxRDZFNDhF
RDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgKi87IH07CiAJCTk0OUM3
NzA5MUQ2RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzA3MUQ2RTQ4RUQw
MEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCAqLzsgfTsKIAkJOTQ5Qzc3MEIx
RDZFNDlFRDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwQTFENkU0OUMzMDBDMERFNEYgLyog
Q1NTUGFyc2VyT2JzZXJ2ZXIuaCAqLzsgfTsKKwkJOTRERTVDN0UxRDc4Q0IyRTAwMTY0RjJBIC8q
IENTU1BhcnNlcklkaW9tcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NERFNUM3RDFENzhDQjI1MDAxNjRGMkEgLyogQ1NTUGFyc2VySWRpb21zLmNw
cCAqLzsgfTsKIAkJOTZBQkE0MjMxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAgKi87IH07CiAJCTk3MDNFMUJGMTVEQzRFMzcwMDFGMjRDOCAvKiBKU1ZvaWRD
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0U5RUM4QjE1REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suY3BwICovOyB9Owog
CQk5NzA1OTk3NzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzMxMDdEOTc1MjAw
QTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCAqLzsgfTsKQEAgLTEwNDk5LDYgKzEwNTA0LDEw
IEBACiAJCTk0NkQzNzQ4MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTTWFya3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk0NkQzNzRCMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlclRva2Vu
UmFuZ2UuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzc0QzFENkQwN0Y1MDA3NzA4NEYgLyogQ1NTUGFy
c2VyVG9rZW5SYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJz
ZXJUb2tlblJhbmdlLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDkzQjZCNjFENzRCMzk1MDA4OEU3ODAgLyogTWVk
aWFRdWVyeUJsb2NrV2F0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcDsgcGF0aCA9IHBhcnNlci9NZWRpYVF1ZXJ5
QmxvY2tXYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ5M0I2Qjcx
RDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oOyBwYXRoID0gcGFy
c2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTQ5M0I2QjgxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFRdWVyeVBhcnNlci5jcHA7IHBh
dGggPSBwYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk0OTNCNkI5MUQ3NEIzOTUwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGlhUXVlcnlQYXJzZXIuaDsgcGF0aCA9
IHBhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk0OUM3NkZFMUQ2RTFEOEMwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDsg
cGF0aCA9IHBhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NDlDNzZGRjFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlckZhc3RQYXRocy5o
OyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NDlDNzcwMjFENkUzOTM1MDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTA2LDYgKzEwNTE1LDcg
QEAKIAkJOTQ5Qzc3MDYxRDZFNDhFRDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQYXJzZXJPYnNl
cnZlcldyYXBwZXIuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0
RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0OUM3
NzBBMUQ2RTQ5QzMwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJPYnNlcnZlci5oOyBwYXRoID0gcGFyc2VyL0NT
U1BhcnNlck9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0REU1QzdE
MUQ3OENCMjUwMDE2NEYyQSAvKiBDU1NQYXJzZXJJZGlvbXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VySWRpb21zLmNwcDsgcGF0aCA9IHBhcnNlci9D
U1NQYXJzZXJJZGlvbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTBDNEMw
MkJFRDg5MzZGODE4RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHR3JhcGhpY3NFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODE0Miw2ICsxODE1Miw3IEBACiAJ
CQkJOTQ2RDM3MjkxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlci5oICovLAogCQkJCTk0OUM3
NkZFMUQ2RTFEOEMwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuY3BwICovLAogCQkJCTk0
OUM3NkZGMUQ2RTFEOEMwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuaCAqLywKKwkJCQk5
NERFNUM3RDFENzhDQjI1MDAxNjRGMkEgLyogQ1NTUGFyc2VySWRpb21zLmNwcCAqLywKIAkJCQk5
NDZEMzc0MzFENkNGNzg4MDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggKi8sCiAJCQkJOTQ2
RDM3MkExRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlck1vZGUuaCAqLywKIAkJCQk5NDlDNzcw
QTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCAqLywKQEAgLTE4MTYxLDYg
KzE4MTcyLDEwIEBACiAJCQkJOTQ2RDM3MzcxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXpl
ci5oICovLAogCQkJCTk0NkQzNzM1MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1
dFN0cmVhbS5jcHAgKi8sCiAJCQkJOTQ2RDM3MzgxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2Vu
aXplcklucHV0U3RyZWFtLmggKi8sCisJCQkJOTQ5M0I2QjYxRDc0QjM5NTAwODhFNzgwIC8qIE1l
ZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwICovLAorCQkJCTk0OTNCNkI3MUQ3NEIzOTUwMDg4RTc4
MCAvKiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmggKi8sCisJCQkJOTQ5M0I2QjgxRDc0QjM5NTAw
ODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuY3BwICovLAorCQkJCTk0OTNCNkI5MUQ3NEIzOTUw
MDg4RTc4MCAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmggKi8sCiAJCQkJOTQ2RDM3MzIxRDZDQzM3MjAw
NzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IHBhcnNlcjsK
QEAgLTI2MDA0LDYgKzI2MDE5LDcgQEAKIAkJCQlBQkRERkU3QTBBNUM2RTcwMDBBM0UxMUQgLyog
UmVuZGVyTWVudUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0NTQ0MjRGMTE5QjM2ODcwMDlC
RTkxMiAvKiBSZW5kZXJNZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzNTg2RTAxNTI2NEM0
NTAwMjJBNjU5IC8qIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTQ5M0I2QzExRDc0QjQxMjAwODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRTMyQjlDMTUxN0MwQjIwMEY1NDJFQyAvKiBSZW5kZXJNdWx0aUNv
bHVtblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxQTdEOTgxOEZDQjVCMDAwNDIxODc5IC8q
IFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4QUM4MjJGRDE4MEZDMDMzMDBGQjY0RDUgLyogUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMjY5MTMsNiArMjY5MjksNyBAQAogCQkJCUExNDgzMkNDMTg3RjY3
QzQwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkUnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTQ4
MzJDRDE4N0Y2ODJFMDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFNhZmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExNDgzMkNGMTg3RjY4NDcwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkU3lzdGVtSW50
ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDkzQjZCRjFENzRCNDEyMDA4OEU3ODAgLyog
TWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwOTlEMDkxN0I5
NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzdGODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjBEQjkwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVV
UkxSZXNwb25zZUlPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQ1NSw2ICsyNzQ3Miw3IEBACiAJ
CQkJMUE4QTY0NUIxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2Vs
ZWN0ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThBNjQ1RjFEMTlGQ0ZDMDBEMEUw
MEYgLyogQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE4QTY0NjIxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxlUGF5VmFsaWRhdGVNZXJj
aGFudEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0OTNCNkJFMUQ3NEI0MTIwMDg4RTc4
MCAvKiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2
QkJDMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBOEY2QkJFMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjRGNTRFQUMxMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjgxMzgsNiArMjgxNTYsNyBA
QAogCQkJCTQ5OUIzRUQ2MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZBMjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5
ZXJVcGRhdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQTAxNUFBMEFGNkNENTMwMDZCQ0Uw
RSAvKiBHcmFwaGljc1R5cGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0OTNCNkMwMUQ3NEI0
MTIwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNE
Rjc0ODNFMThGRUJDRUMwMDA2RUNDMCAvKiBHcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjU1QjNEQkYxMjUxRjEyRDAwM0VGMjY5IC8qIEhpZGRlbklucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTVCRTE5QjFENTRGNkMxMDBERDdDNjggLyogSElE
R2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NDU1LDYgKzI5NDc0LDcgQEAKIAkJCQk4
QUY0RTU1NTExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2NTEyRURFMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDNDODVEMTg5RTEwQ0YwMDAx
OUFFMiAvKiBQZXJmb3JtYW5jZVRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NERFNUM3
RTFENzhDQjJFMDAxNjRGMkEgLyogQ1NTUGFyc2VySWRpb21zLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZENTgxRkI0MTUyMEY5M0IwMDNBN0E3NSAvKiBQZXJpb2RpY1dhdmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDlENURDMkQwRjQyM0E3MzAwOEYyMEZEIC8qIFBlcnNwZWN0aXZlVHJhbnNm
b3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQwRkYyQTVEMTFGOEM0NUEwMDdF
NzRFMCAvKiBQaW5nTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5RXhwLmNwcAkocmV2aXNpb24gMjA1MzUxKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBACiAK
ICNpbmNsdWRlICJDU1NBc3BlY3RSYXRpb1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgi
CisjaW5jbHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW4u
aCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlz
dC5oIgogI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCkBAIC0zNywyMSArMzksOTEgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNGZWF0dXJlVmFs
aWRXaXRoSWRlbnRpZmllcihjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3Qg
Q1NTUGFyc2VyVmFsdWUmIHZhbHVlKQorc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoVmFs
aWRJZGVudChjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSkKIHsKLSAgICBpZiAoIXZh
bHVlLmlkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gbWVkaWFGZWF0dXJl
ID09IE1lZGlhRmVhdHVyZU5hbWVzOjpvcmllbnRhdGlvbgogI2lmIEVOQUJMRShWSUVXX01PREVf
Q1NTX01FRElBKQotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6
OnZpZXdNb2RlCisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp2aWV3
TW9kZQogI2VuZGlmCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1l
czo6Y29sb3JHYW11dAotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OmFueUhvdmVyCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1l
czo6YW55UG9pbnRlcgotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OmhvdmVyCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
aW52ZXJ0ZWRDb2xvcnMKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjpwb2ludGVyOworICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
Y29sb3JHYW11dAorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YW55
SG92ZXIKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFueVBvaW50
ZXIKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmhvdmVyCisgICAg
fHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjppbnZlcnRlZENvbG9ycworICAg
IHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cG9pbnRlcjsKK30KKyAgICAK
K3N0YXRpYyBpbmxpbmUgYm9vbCBmZWF0dXJlV2l0aFZhbGlkRGVuc2l0eShjb25zdCBTdHJpbmcm
IG1lZGlhRmVhdHVyZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuKQoreworICAgIGlmICgo
dG9rZW4udW5pdFR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRFBQ
WCAmJiB0b2tlbi51bml0VHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNT
U19EUEkgJiYgdG9rZW4udW5pdFR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfRFBDTSkgfHwgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPD0gMCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OnJlc29sdXRpb24KKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6
Om1pblJlc29sdXRpb24KKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6
Om1heFJlc29sdXRpb247Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBmZWF0dXJlV2l0aFZhbGlk
UG9zaXRpdmVMZW5ndGgoY29uc3QgU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENTU1BhcnNl
clRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAoIShDU1NQcmltaXRpdmVWYWx1ZTo6aXNMZW5ndGgo
dG9rZW4udW5pdFR5cGUoKSkgfHwgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiB0b2tl
bi5udW1lcmljVmFsdWUoKSA9PSAwKSkgfHwgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgCisgICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6aGVpZ2h0CisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlh
RmVhdHVyZU5hbWVzOjptYXhIZWlnaHQKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0
dXJlTmFtZXM6Om1pbkhlaWdodAorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6d2lkdGgKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1h
eFdpZHRoCisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5XaWR0
aAorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGV2aWNlSGVpZ2h0
CisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhEZXZpY2VIZWln
aHQKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkRldmljZUhl
aWdodAorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGV2aWNlV2lk
dGgKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkRldmljZVdp
ZHRoCisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhEZXZpY2VX
aWR0aDsKK30KKworc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoUG9zaXRpdmVJbnRlZ2Vy
KGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4p
Cit7CisgICAgaWYgKHRva2VuLm51bWVyaWNWYWx1ZVR5cGUoKSAhPSBJbnRlZ2VyVmFsdWVUeXBl
IHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmNvbG9yCisg
ICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjogbWF4Q29sb3IKKyAgICB8
fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OiBtaW5Db2xvcgorICAgIHx8IG1l
ZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6Y29sb3JJbmRleAorICAgIHx8IG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4Q29sb3JJbmRleAorICAgIHx8IG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluQ29sb3JJbmRleAorICAgIHx8IG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bW9ub2Nocm9tZQorICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4TW9ub2Nocm9tZQorICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluTW9ub2Nocm9tZTsKK30KKworc3RhdGljIGlu
bGluZSBib29sIGZlYXR1cmVXaXRoUG9zaXRpdmVOdW1iZXIoY29uc3QgU3RyaW5nJiBtZWRpYUZl
YXR1cmUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAodG9rZW4udHlw
ZSgpICE9IE51bWJlclRva2VuIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0
dXJlTmFtZXM6OnRyYW5zZm9ybTNkCisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVy
ZU5hbWVzOjpkZXZpY2VQaXhlbFJhdGlvCisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVh
dHVyZU5hbWVzOjptYXhEZXZpY2VQaXhlbFJhdGlvCisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1l
ZGlhRmVhdHVyZU5hbWVzOjptaW5EZXZpY2VQaXhlbFJhdGlvOworfQorCitzdGF0aWMgaW5saW5l
IGJvb2wgZmVhdHVyZVdpdGhaZXJvT3JPbmUoY29uc3QgU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNv
bnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAodG9rZW4ubnVtZXJpY1ZhbHVl
VHlwZSgpICE9IEludGVnZXJWYWx1ZVR5cGUgfHwgISh0b2tlbi5udW1lcmljVmFsdWUoKSA9PSAx
IHx8ICF0b2tlbi5udW1lcmljVmFsdWUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICByZXR1cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpncmlkOworfQor
CitzdGF0aWMgaW5saW5lIGJvb2wgaXNGZWF0dXJlVmFsaWRXaXRoSWRlbnRpZmllcihjb25zdCBB
dG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSwgQ1NTVmFsdWVJRCBpZCkKK3sKKyAgICBpZiAoIWlk
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZmVhdHVyZVdpdGhWYWxpZElk
ZW50KG1lZGlhRmVhdHVyZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZlYXR1cmVWYWxp
ZFdpdGhOb25OZWdhdGl2ZUxlbmd0aE9yTnVtYmVyKGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFG
ZWF0dXJlLCBjb25zdCBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCkBAIC0xODksNyArMjYxLDcgQEAg
TWVkaWFRdWVyeUV4cHJlc3Npb246Ok1lZGlhUXVlcnlFeHByZXNzaQogICAgICAgICAgICAgbV9p
c1ZhbGlkID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKHZhbHVlTGlzdC0+c2l6ZSgpID09IDEpIHsK
ICAgICAgICAgYXV0byYgdmFsdWUgPSAqdmFsdWVMaXN0LT52YWx1ZUF0KDApOwotICAgICAgICBp
ZiAoaXNGZWF0dXJlVmFsaWRXaXRoSWRlbnRpZmllcihtZWRpYUZlYXR1cmUsIHZhbHVlKSkgewor
ICAgICAgICBpZiAodmFsdWUuaWQgJiYgaXNGZWF0dXJlVmFsaWRXaXRoSWRlbnRpZmllcihtZWRp
YUZlYXR1cmUsIHZhbHVlLmlkKSkgewogICAgICAgICAgICAgbV92YWx1ZSA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHZhbHVlLmlkKTsKICAgICAgICAgICAgIG1faXNWYWxp
ZCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNGZWF0dXJlVmFsaWRXaXRoTnVtYmVyV2l0
aFVuaXQobWVkaWFGZWF0dXJlLCB2YWx1ZSkgfHwgaXNGZWF0dXJlVmFsaWRXaXRoTm9uTmVnYXRp
dmVMZW5ndGhPck51bWJlcihtZWRpYUZlYXR1cmUsIHZhbHVlKSkgewpAQCAtMjExLDYgKzI4Myw1
OSBAQCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6TWVkaWFRdWVyeUV4cHJlc3NpCiAgICAgfQogfQog
CitNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6TWVkaWFRdWVyeUV4cHJlc3Npb24oY29uc3QgU3RyaW5n
JiBmZWF0dXJlLCBjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4sIDQ+JiB0b2tlbkxpc3QpCisg
ICAgOiBtX21lZGlhRmVhdHVyZShmZWF0dXJlKQorICAgICwgbV9pc1ZhbGlkKGZhbHNlKQorewor
ICAgIC8vIENyZWF0ZSB2YWx1ZSBmb3IgbWVkaWEgcXVlcnkgZXhwcmVzc2lvbiB0aGF0IG11c3Qg
aGF2ZSAxIG9yIG1vcmUgdmFsdWVzLgorICAgIGlmICh0b2tlbkxpc3Quc2l6ZSgpID09IDAgJiYg
aXNGZWF0dXJlVmFsaWRXaXRob3V0VmFsdWUobV9tZWRpYUZlYXR1cmUpKSB7CisgICAgICAgIC8v
IFZhbGlkLCBjcmVhdGVzIGEgTWVkaWFRdWVyeUV4cCB3aXRoIGFuICdpbnZhbGlkJyBNZWRpYVF1
ZXJ5RXhwVmFsdWUKKyAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHRv
a2VuTGlzdC5zaXplKCkgPT0gMSkgeworICAgICAgICBDU1NQYXJzZXJUb2tlbiB0b2tlbiA9IHRv
a2VuTGlzdC5maXJzdCgpOworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IElkZW50VG9rZW4p
IHsKKyAgICAgICAgICAgIENTU1ZhbHVlSUQgaWRlbnQgPSB0b2tlbi5pZCgpOworICAgICAgICAg
ICAgaWYgKCFmZWF0dXJlV2l0aFZhbGlkSWRlbnQobV9tZWRpYUZlYXR1cmUpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fdmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihpZGVudCk7CisgICAgICAgICAgICBtX2lzVmFsaWQgPSB0cnVlOwor
ICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50
eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tl
bikgeworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIG51bWVyaWMgdG9rZW4gdHlwZXMgc2luY2Ug
aXQgaXMgb25seSBzYWZlIGZvciB0aGVzZSB0eXBlcyB0byBjYWxsIG51bWVyaWNWYWx1ZS4KKyAg
ICAgICAgICAgIGlmIChmZWF0dXJlV2l0aFZhbGlkRGVuc2l0eShtX21lZGlhRmVhdHVyZSwgdG9r
ZW4pCisgICAgICAgICAgICAgICAgfHwgZmVhdHVyZVdpdGhWYWxpZFBvc2l0aXZlTGVuZ3RoKG1f
bWVkaWFGZWF0dXJlLCB0b2tlbikpIHsKKyAgICAgICAgICAgICAgICAvLyBNZWRpYSBmZWF0dXJl
cyB0aGF0IG11c3QgaGF2ZSBub24tbmVnYXRpdmUgPGRlbnNpdHk+LCBpZS4gZHBweCwgZHBpIG9y
IGRwY20sCisgICAgICAgICAgICAgICAgLy8gb3IgTWVkaWEgZmVhdHVyZXMgdGhhdCBtdXN0IGhh
dmUgbm9uLW5lZ2F0aXZlIDxsZW5ndGg+IG9yIG51bWJlciB2YWx1ZS4KKyAgICAgICAgICAgICAg
ICBtX3ZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0b2tlbi5udW1lcmljVmFsdWUo
KSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpIHRva2VuLnVuaXRUeXBlKCkpOworICAg
ICAgICAgICAgICAgIG1faXNWYWxpZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZl
YXR1cmVXaXRoUG9zaXRpdmVJbnRlZ2VyKG1fbWVkaWFGZWF0dXJlLCB0b2tlbikKKyAgICAgICAg
ICAgICAgICAgICAgICAgfHwgZmVhdHVyZVdpdGhQb3NpdGl2ZU51bWJlcihtX21lZGlhRmVhdHVy
ZSwgdG9rZW4pCisgICAgICAgICAgICAgICAgICAgICAgIHx8IGZlYXR1cmVXaXRoWmVyb09yT25l
KG1fbWVkaWFGZWF0dXJlLCB0b2tlbikpIHsKKyAgICAgICAgICAgICAgICAvLyBNZWRpYSBmZWF0
dXJlcyB0aGF0IG11c3QgaGF2ZSBub24tbmVnYXRpdmUgaW50ZWdlciB2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAvLyBvciBtZWRpYSBmZWF0dXJlcyB0aGF0IG11c3QgaGF2ZSBub24tbmVnYXRpdmUg
bnVtYmVyIHZhbHVlLAorICAgICAgICAgICAgICAgIC8vIG9yIG1lZGlhIGZlYXR1cmVzIHRoYXQg
bXVzdCBoYXZlICgwfDEpIHZhbHVlLgorICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgICAgICBtX2lzVmFsaWQgPSB0
cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmICh0b2tlbkxpc3Qu
c2l6ZSgpID09IDMgJiYgaXNBc3BlY3RSYXRpb0ZlYXR1cmUobV9tZWRpYUZlYXR1cmUpKSB7Cisg
ICAgICAgIC8vIFRPRE8odGltbG9oKTogPHJhdGlvPiBpcyBzdXBwb3NlZCB0byBhbGxvdyB3aGl0
ZXNwYWNlIGFyb3VuZCB0aGUgJy8nCisgICAgICAgIC8vIEFwcGxpY2FibGUgdG8gZGV2aWNlLWFz
cGVjdC1yYXRpbyBhbmQgYXNwZWN0LXJhdGlvLgorICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgbnVtZXJhdG9yID0gdG9rZW5MaXN0WzBdOworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgZGVsaW1pdGVyID0gdG9rZW5MaXN0WzFdOworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgZGVub21pbmF0b3IgPSB0b2tlbkxpc3RbMl07CisgICAgICAgIGlmIChkZWxpbWl0ZXIudHlw
ZSgpICE9IERlbGltaXRlclRva2VuIHx8IGRlbGltaXRlci5kZWxpbWl0ZXIoKSAhPSAnLycpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChudW1lcmF0b3IudHlwZSgpICE9IE51bWJl
clRva2VuIHx8IG51bWVyYXRvci5udW1lcmljVmFsdWUoKSA8PSAwIHx8IG51bWVyYXRvci5udW1l
cmljVmFsdWVUeXBlKCkgIT0gSW50ZWdlclZhbHVlVHlwZSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaWYgKGRlbm9taW5hdG9yLnR5cGUoKSAhPSBOdW1iZXJUb2tlbiB8fCBkZW5vbWlu
YXRvci5udW1lcmljVmFsdWUoKSA8PSAwIHx8IGRlbm9taW5hdG9yLm51bWVyaWNWYWx1ZVR5cGUo
KSAhPSBJbnRlZ2VyVmFsdWVUeXBlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAg
ICAgICAgbV92YWx1ZSA9IENTU0FzcGVjdFJhdGlvVmFsdWU6OmNyZWF0ZShudW1lcmF0b3IubnVt
ZXJpY1ZhbHVlKCksIGRlbm9taW5hdG9yLm51bWVyaWNWYWx1ZSgpKTsKKyAgICAgICAgbV9pc1Zh
bGlkID0gdHJ1ZTsKKworICAgIH0KK30KKwogU3RyaW5nIE1lZGlhUXVlcnlFeHByZXNzaW9uOjpz
ZXJpYWxpemUoKSBjb25zdAogewogICAgIGlmICghbV9zZXJpYWxpemF0aW9uQ2FjaGUuaXNOdWxs
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgJKHJldmlzaW9uIDIwNTM1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDE4ICsyNywyMCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNTU1BhcnNlclRv
a2VuLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUGFyc2VyVmFsdWVMaXN0OwotCisgICAgCiAvLyBG
SVhNRTogUmVuYW1lIHRoZSBmaWxlIHRvIG1hdGNoIHRoaXMgY2xhc3MncyBuYW1lLgogY2xhc3Mg
TWVkaWFRdWVyeUV4cHJlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IE1lZGlhUXVlcnlFeHByZXNzaW9uKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWVkaWFGZWF0dXJlID0gZW1wdHlBdG9tLCBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlcyA9
IG51bGxwdHIpOworICAgIGV4cGxpY2l0IE1lZGlhUXVlcnlFeHByZXNzaW9uKGNvbnN0IFN0cmlu
ZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4sIDQ+JiB0b2tlbkxp
c3QpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUoKSBjb25zdDsKICAg
ICBDU1NWYWx1ZSogdmFsdWUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySWRpb21zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlcklkaW9tcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
Ky8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZ
U19JTkxJTkUgc3RhdGljIHZvaWQgY29udmVydFRvQVNDSUlMb3dlcmNhc2VJblBsYWNlKENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIGNoYXJhY3RlcnNbaV0gPSB0b0FT
Q0lJTG93ZXIoY2hhcmFjdGVyc1tpXSk7Cit9CisKKy8vIEZJWE1FLU5FV1BBUlNFUjogV291bGQg
bGlrZSB0byBnZXQgcmlkIG9mIHRoaXMgb3BlcmF0aW9uLiBCbGluayB1c2VzIEhUTUxQYXJzZXIg
c3RhdGljIGxvd2VyY2FzZQorLy8gc3RyaW5nIGhhc2hpbmcsIGJ1dCB3ZSBkb24ndCBoYXZlIHRo
YXQgY29kZSBpbiBvdXIgSFRNTFBhcnNlci4KK3ZvaWQgY29udmVydFRvQVNDSUlMb3dlcmNhc2VJ
blBsYWNlKFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcpCit7CisgICAgaWYgKHN0cmluZ1ZpZXcuaXM4
Qml0KCkpCisgICAgICAgIFdlYkNvcmU6OmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlSW5QbGFjZShj
b25zdF9jYXN0PExDaGFyKj4oc3RyaW5nVmlldy5jaGFyYWN0ZXJzOCgpKSwgc3RyaW5nVmlldy5s
ZW5ndGgoKSk7CisgICAgZWxzZQorICAgICAgICBXZWJDb3JlOjpjb252ZXJ0VG9BU0NJSUxvd2Vy
Y2FzZUluUGxhY2UoY29uc3RfY2FzdDxVQ2hhcio+KHN0cmluZ1ZpZXcuY2hhcmFjdGVyczE2KCkp
LCBzdHJpbmdWaWV3Lmxlbmd0aCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCShyZXZpc2lv
biAyMDUzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjZGVmaW5lIENTU1BhcnNlcklkaW9t
c19oCiAKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw2ICs1OCw4IEBAIGJv
b2wgaXNOYW1lQ29kZVBvaW50KENoYXJhY3RlclR5cGUgYykKICAgICByZXR1cm4gaXNOYW1lU3Rh
cnRDb2RlUG9pbnQoYykgfHwgaXNBU0NJSURpZ2l0KGMpIHx8IGMgPT0gJy0nOwogfQogCit2b2lk
IGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlSW5QbGFjZShTdHJpbmdWaWV3Jik7CisKIH0KIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNw
cAkocmV2aXNpb24gMjA1MzUxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJUb2tlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw2ICszMzIsMTIgQEAgYm9vbCBDU1NQ
YXJzZXJUb2tlbjo6aGFzU3RyaW5nQmFja2luZygpIAogICAgICAgICB8fCB0b2tlblR5cGUgPT0g
U3RyaW5nVG9rZW47CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZ
U19JTkxJTkUgc3RhdGljIHZvaWQgY29udmVydFRvQVNDSUlMb3dlcmNhc2VJblBsYWNlKENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIGNoYXJhY3RlcnNbaV0gPSB0b0FT
Q0lJTG93ZXIoY2hhcmFjdGVyc1tpXSk7Cit9CisKIENTU1BhcnNlclRva2VuIENTU1BhcnNlclRv
a2VuOjpjb3B5V2l0aFVwZGF0ZWRTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKSBjb25z
dAogewogICAgIENTU1BhcnNlclRva2VuIGNvcHkoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeUJsb2NrV2F0
Y2hlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLy8gQ29weXJpZ2h0IDIw
MTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9r
ZW4uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyOjpN
ZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyKCkKK3sKK30KKwordm9pZCBNZWRpYVF1ZXJ5QmxvY2tXYXRj
aGVyOjpoYW5kbGVUb2tlbihjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgaWYg
KHRva2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0KSB7Cisg
ICAgICAgICsrbV9ibG9ja0xldmVsOworICAgIH0gZWxzZSBpZiAodG9rZW4uZ2V0QmxvY2tUeXBl
KCkgPT0gQ1NTUGFyc2VyVG9rZW46OkJsb2NrRW5kKSB7CisgICAgICAgIEFTU0VSVChtX2Jsb2Nr
TGV2ZWwpOworICAgICAgICAtLW1fYmxvY2tMZXZlbDsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeUJs
b2NrV2F0Y2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVk
aWFRdWVyeUJsb2NrV2F0Y2hlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
Ky8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
I2lmbmRlZiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyX2gKKyNkZWZpbmUgTWVkaWFRdWVyeUJsb2Nr
V2F0Y2hlcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUGFyc2VyVG9rZW47
CisKK2NsYXNzIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIgeworcHVibGljOgorICAgIE1lZGlhUXVl
cnlCbG9ja1dhdGNoZXIoKTsKKyAgICB2b2lkIGhhbmRsZVRva2VuKGNvbnN0IENTU1BhcnNlclRv
a2VuJik7CisgICAgdW5zaWduZWQgYmxvY2tMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tM
ZXZlbDsgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fYmxvY2tMZXZlbCB7IDAgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhUXVlcnlCbG9ja1dh
dGNoZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQ
YXJzZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVk
aWFRdWVyeVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMTUgQEAKKy8vIENv
cHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXIuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNl
cklkaW9tcy5oIgorI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TWVkaWFRdWVyeVNldD4gTWVk
aWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5U2V0KGNvbnN0IFN0cmluZyYgcXVlcnlTdHJp
bmcpCit7CisgICAgcmV0dXJuIHBhcnNlTWVkaWFRdWVyeVNldChDU1NUb2tlbml6ZXI6OlNjb3Bl
KHF1ZXJ5U3RyaW5nKS50b2tlblJhbmdlKCkpOworfQorCitSZWZQdHI8TWVkaWFRdWVyeVNldD4g
TWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5U2V0KENTU1BhcnNlclRva2VuUmFuZ2Ug
cmFuZ2UpCit7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlQYXJzZXIoTWVkaWFRdWVyeVNldFBhcnNl
cikucGFyc2VJbXBsKHJhbmdlKTsKK30KKworUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IE1lZGlhUXVl
cnlQYXJzZXI6OnBhcnNlTWVkaWFDb25kaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSkK
K3sKKyAgICByZXR1cm4gTWVkaWFRdWVyeVBhcnNlcihNZWRpYUNvbmRpdGlvblBhcnNlcikucGFy
c2VJbXBsKHJhbmdlKTsKK30KKworY29uc3QgTWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTWVkaWFR
dWVyeVBhcnNlcjo6UmVhZFJlc3RyaWN0b3IgPSAmTWVkaWFRdWVyeVBhcnNlcjo6cmVhZFJlc3Ry
aWN0b3I7Citjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBNZWRpYVF1ZXJ5UGFyc2VyOjpS
ZWFkTWVkaWFOb3QgPSAmTWVkaWFRdWVyeVBhcnNlcjo6cmVhZE1lZGlhTm90OworY29uc3QgTWVk
aWFRdWVyeVBhcnNlcjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6UmVhZE1lZGlhVHlwZSA9ICZN
ZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkTWVkaWFUeXBlOworY29uc3QgTWVkaWFRdWVyeVBhcnNlcjo6
U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6UmVhZEFuZCA9ICZNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFk
QW5kOworY29uc3QgTWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6UmVh
ZEZlYXR1cmVTdGFydCA9ICZNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZVN0YXJ0OworY29u
c3QgTWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6UmVhZEZlYXR1cmUg
PSAmTWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1cmU7Citjb25zdCBNZWRpYVF1ZXJ5UGFyc2Vy
OjpTdGF0ZSBNZWRpYVF1ZXJ5UGFyc2VyOjpSZWFkRmVhdHVyZUNvbG9uID0gJk1lZGlhUXVlcnlQ
YXJzZXI6OnJlYWRGZWF0dXJlQ29sb247Citjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBN
ZWRpYVF1ZXJ5UGFyc2VyOjpSZWFkRmVhdHVyZVZhbHVlID0gJk1lZGlhUXVlcnlQYXJzZXI6OnJl
YWRGZWF0dXJlVmFsdWU7Citjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBNZWRpYVF1ZXJ5
UGFyc2VyOjpSZWFkRmVhdHVyZUVuZCA9ICZNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZUVu
ZDsKK2NvbnN0IE1lZGlhUXVlcnlQYXJzZXI6OlN0YXRlIE1lZGlhUXVlcnlQYXJzZXI6OlNraXBV
bnRpbENvbW1hID0gJk1lZGlhUXVlcnlQYXJzZXI6OnNraXBVbnRpbENvbW1hOworY29uc3QgTWVk
aWFRdWVyeVBhcnNlcjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6U2tpcFVudGlsQmxvY2tFbmQg
PSAmTWVkaWFRdWVyeVBhcnNlcjo6c2tpcFVudGlsQmxvY2tFbmQ7Citjb25zdCBNZWRpYVF1ZXJ5
UGFyc2VyOjpTdGF0ZSBNZWRpYVF1ZXJ5UGFyc2VyOjpEb25lID0gJk1lZGlhUXVlcnlQYXJzZXI6
OmRvbmU7CisKK01lZGlhUXVlcnlQYXJzZXI6Ok1lZGlhUXVlcnlQYXJzZXIoUGFyc2VyVHlwZSBw
YXJzZXJUeXBlKQorICAgIDogbV9wYXJzZXJUeXBlKHBhcnNlclR5cGUpCisgICAgLCBtX3F1ZXJ5
U2V0KE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZSgpKQoreworICAgIGlmIChwYXJzZXJUeXBlID09IE1l
ZGlhUXVlcnlTZXRQYXJzZXIpCisgICAgICAgIG1fc3RhdGUgPSAmTWVkaWFRdWVyeVBhcnNlcjo6
cmVhZFJlc3RyaWN0b3I7CisgICAgZWxzZSAvLyBNZWRpYUNvbmRpdGlvblBhcnNlcgorICAgICAg
ICBtX3N0YXRlID0gJk1lZGlhUXVlcnlQYXJzZXI6OnJlYWRNZWRpYU5vdDsKK30KKworTWVkaWFR
dWVyeVBhcnNlcjo6fk1lZGlhUXVlcnlQYXJzZXIoKSB7IH0KKwordm9pZCBNZWRpYVF1ZXJ5UGFy
c2VyOjpzZXRTdGF0ZUFuZFJlc3RyaWN0KFN0YXRlIHN0YXRlLCBNZWRpYVF1ZXJ5OjpSZXN0cmlj
dG9yIHJlc3RyaWN0b3IpCit7CisgICAgbV9tZWRpYVF1ZXJ5RGF0YS5zZXRSZXN0cmljdG9yKHJl
c3RyaWN0b3IpOworICAgIG1fc3RhdGUgPSBzdGF0ZTsKK30KKworLy8gU3RhdGUgbWFjaGluZSBt
ZW1iZXIgZnVuY3Rpb25zIHN0YXJ0IGhlcmUKK3ZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6cmVhZFJl
c3RyaWN0b3IoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0
b2tlbikKK3sKKyAgICByZWFkTWVkaWFUeXBlKHR5cGUsIHRva2VuKTsKK30KKwordm9pZCBNZWRp
YVF1ZXJ5UGFyc2VyOjpyZWFkTWVkaWFOb3QoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0
IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAodHlwZSA9PSBJZGVudFRva2VuICYm
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgIm5vdCIpKQorICAgICAgICBz
ZXRTdGF0ZUFuZFJlc3RyaWN0KFJlYWRGZWF0dXJlU3RhcnQsIE1lZGlhUXVlcnk6Ok5vdCk7Cisg
ICAgZWxzZQorICAgICAgICByZWFkRmVhdHVyZVN0YXJ0KHR5cGUsIHRva2VuKTsKK30KKworc3Rh
dGljIGJvb2wgaXNSZXN0cmljdG9yT3JMb2dpY2FsT3BlcmF0b3IoY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mIHRva2VuKQoreworICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCB0
byB1c2UgbG93ZXItY2FzZSBhbHdheXMgZm9yIHRva2VuVmFsdWUuCisgICAgcmV0dXJuIGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgIm5vdCIpCisgICAgICAgIHx8IGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgImFuZCIpCisgICAgICAgIHx8IGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgIm9yIikKKyAgICAgICAgfHwgZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZSh0b2tlbi52YWx1ZSgpLCAib25seSIpOworfQorCit2b2lkIE1lZGlh
UXVlcnlQYXJzZXI6OnJlYWRNZWRpYVR5cGUoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0
IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAodHlwZSA9PSBMZWZ0UGFyZW50aGVz
aXNUb2tlbikgeworICAgICAgICBpZiAobV9tZWRpYVF1ZXJ5RGF0YS5yZXN0cmljdG9yKCkgIT0g
TWVkaWFRdWVyeTo6Tm9uZSkKKyAgICAgICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9zdGF0ZSA9IFJlYWRGZWF0dXJlOworICAgIH0g
ZWxzZSBpZiAodHlwZSA9PSBJZGVudFRva2VuKSB7CisgICAgICAgIGlmIChtX3N0YXRlID09IFJl
YWRSZXN0cmljdG9yICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgIm5v
dCIpKSB7CisgICAgICAgICAgICBzZXRTdGF0ZUFuZFJlc3RyaWN0KFJlYWRNZWRpYVR5cGUsIE1l
ZGlhUXVlcnk6Ok5vdCk7CisgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0ZSA9PSBSZWFkUmVzdHJp
Y3RvciAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCksICJvbmx5IikpIHsK
KyAgICAgICAgICAgIHNldFN0YXRlQW5kUmVzdHJpY3QoUmVhZE1lZGlhVHlwZSwgTWVkaWFRdWVy
eTo6T25seSk7CisgICAgICAgIH0gZWxzZSBpZiAobV9tZWRpYVF1ZXJ5RGF0YS5yZXN0cmljdG9y
KCkgIT0gTWVkaWFRdWVyeTo6Tm9uZQorICAgICAgICAgICAgJiYgaXNSZXN0cmljdG9yT3JMb2dp
Y2FsT3BlcmF0b3IodG9rZW4pKSB7CisgICAgICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQ29t
bWE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcg
PSB0b2tlbi52YWx1ZSgpOworICAgICAgICAgICAgY29udmVydFRvQVNDSUlMb3dlcmNhc2VJblBs
YWNlKHN0cmluZ1ZpZXcpOworICAgICAgICAgICAgbV9tZWRpYVF1ZXJ5RGF0YS5zZXRNZWRpYVR5
cGUoc3RyaW5nVmlldy50b1N0cmluZygpKTsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBSZWFkQW5k
OworICAgICAgICB9CisgICAgfSBlbHNlIGlmICh0eXBlID09IEVPRlRva2VuICYmICghbV9xdWVy
eVNldC0+cXVlcnlWZWN0b3IoKS5zaXplKCkgfHwgbV9zdGF0ZSAhPSBSZWFkUmVzdHJpY3Rvcikp
IHsKKyAgICAgICAgbV9zdGF0ZSA9IERvbmU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zdGF0
ZSA9IFNraXBVbnRpbENvbW1hOworICAgICAgICBpZiAodHlwZSA9PSBDb21tYVRva2VuKQorICAg
ICAgICAgICAgc2tpcFVudGlsQ29tbWEodHlwZSwgdG9rZW4pOworICAgIH0KK30KKwordm9pZCBN
ZWRpYVF1ZXJ5UGFyc2VyOjpjb21taXRNZWRpYVF1ZXJ5KCkKK3sKKyAgICAvLyBGSVhNRS1ORVdQ
QVJTRVI6IENvbnZvbHV0ZWQgYW5kIGF3ZnVsLCBidXQgd2UgY2FuJ3QgY2hhbmdlIHRoZSBNZWRp
YVF1ZXJ5U2V0IHlldCBiZWNhdXNlIG9mIHRoZQorICAgIC8vIG9sZCBwYXJzZXIuCisgICAgTWVk
aWFRdWVyeSBtZWRpYVF1ZXJ5ID0gTWVkaWFRdWVyeShtX21lZGlhUXVlcnlEYXRhLnJlc3RyaWN0
b3IoKSwgbV9tZWRpYVF1ZXJ5RGF0YS5tZWRpYVR5cGUoKSwgV1RGTW92ZShtX21lZGlhUXVlcnlE
YXRhLmV4cHJlc3Npb25zKCkpKTsKKyAgICBtX21lZGlhUXVlcnlEYXRhLmNsZWFyKCk7CisgICAg
bV9xdWVyeVNldC0+YWRkTWVkaWFRdWVyeShXVEZNb3ZlKG1lZGlhUXVlcnkpKTsKK30KKwordm9p
ZCBNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkQW5kKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBjb25z
dCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgaWYgKHR5cGUgPT0gSWRlbnRUb2tlbiAm
JiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCksICJhbmQiKSkgeworICAgICAg
ICBtX3N0YXRlID0gUmVhZEZlYXR1cmVTdGFydDsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ29t
bWFUb2tlbiAmJiBtX3BhcnNlclR5cGUgIT0gTWVkaWFDb25kaXRpb25QYXJzZXIpIHsKKyAgICAg
ICAgY29tbWl0TWVkaWFRdWVyeSgpOworICAgICAgICBtX3N0YXRlID0gUmVhZFJlc3RyaWN0b3I7
CisgICAgfSBlbHNlIGlmICh0eXBlID09IEVPRlRva2VuKSB7CisgICAgICAgIG1fc3RhdGUgPSBE
b25lOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsKKyAg
ICB9Cit9CisKK3ZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1cmVTdGFydChDU1NQYXJz
ZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIC8qdG9rZW4qLykKK3sKKyAg
ICBpZiAodHlwZSA9PSBMZWZ0UGFyZW50aGVzaXNUb2tlbikKKyAgICAgICAgbV9zdGF0ZSA9IFJl
YWRGZWF0dXJlOworICAgIGVsc2UKKyAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOwor
fQorCit2b2lkIE1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlKENTU1BhcnNlclRva2VuVHlw
ZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgaWYgKHR5cGUgPT0g
SWRlbnRUb2tlbikgeworICAgICAgICBtX21lZGlhUXVlcnlEYXRhLnNldE1lZGlhRmVhdHVyZSh0
b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCkpOworICAgICAgICBtX3N0YXRlID0gUmVhZEZlYXR1cmVD
b2xvbjsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQ29tbWE7Cisg
ICAgfQorfQorCit2b2lkIE1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlQ29sb24oQ1NTUGFy
c2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBp
ZiAodHlwZSA9PSBDb2xvblRva2VuKQorICAgICAgICBtX3N0YXRlID0gUmVhZEZlYXR1cmVWYWx1
ZTsKKyAgICBlbHNlIGlmICh0eXBlID09IFJpZ2h0UGFyZW50aGVzaXNUb2tlbiB8fCB0eXBlID09
IEVPRlRva2VuKQorICAgICAgICByZWFkRmVhdHVyZUVuZCh0eXBlLCB0b2tlbik7CisgICAgZWxz
ZQorICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQmxvY2tFbmQ7Cit9CisKK3ZvaWQgTWVkaWFR
dWVyeVBhcnNlcjo6cmVhZEZlYXR1cmVWYWx1ZShDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuKQoreworICAgIGlmICh0eXBlID09IERpbWVuc2lvblRv
a2VuICYmIHRva2VuLnVuaXRUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX1VOS05PV04pIHsKKyAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGlmIChtX21lZGlhUXVlcnlEYXRhLnRyeUFkZFBhcnNlclRva2VuKHR5
cGUsIHRva2VuKSkKKyAgICAgICAgICAgIG1fc3RhdGUgPSBSZWFkRmVhdHVyZUVuZDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbEJsb2NrRW5kOworICAgIH0K
K30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZUVuZChDU1NQYXJzZXJUb2tl
blR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuKQoreworICAgIGlmICh0eXBl
ID09IFJpZ2h0UGFyZW50aGVzaXNUb2tlbiB8fCB0eXBlID09IEVPRlRva2VuKSB7CisgICAgICAg
IGlmIChtX21lZGlhUXVlcnlEYXRhLmFkZEV4cHJlc3Npb24oKSkKKyAgICAgICAgICAgIG1fc3Rh
dGUgPSBSZWFkQW5kOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3N0YXRlID0gU2tpcFVu
dGlsQ29tbWE7CisgICAgfSBlbHNlIGlmICh0eXBlID09IERlbGltaXRlclRva2VuICYmIHRva2Vu
LmRlbGltaXRlcigpID09ICcvJykgeworICAgICAgICBtX21lZGlhUXVlcnlEYXRhLnRyeUFkZFBh
cnNlclRva2VuKHR5cGUsIHRva2VuKTsKKyAgICAgICAgbV9zdGF0ZSA9IFJlYWRGZWF0dXJlVmFs
dWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbEJsb2NrRW5kOwor
ICAgIH0KK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpza2lwVW50aWxDb21tYShDU1NQYXJz
ZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIC8qdG9rZW4qLykKK3sKKyAg
ICBpZiAoKHR5cGUgPT0gQ29tbWFUb2tlbiAmJiAhbV9ibG9ja1dhdGNoZXIuYmxvY2tMZXZlbCgp
KSB8fCB0eXBlID09IEVPRlRva2VuKSB7CisgICAgICAgIG1fc3RhdGUgPSBSZWFkUmVzdHJpY3Rv
cjsKKyAgICAgICAgbV9tZWRpYVF1ZXJ5RGF0YS5jbGVhcigpOworICAgICAgICBNZWRpYVF1ZXJ5
IHF1ZXJ5ID0gTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpOb25lLCAiYWxsIiwgVmVjdG9yPE1lZGlh
UXVlcnlFeHByZXNzaW9uPigpKTsKKyAgICAgICAgbV9xdWVyeVNldC0+YWRkTWVkaWFRdWVyeShX
VEZNb3ZlKHF1ZXJ5KSk7CisgICAgfQorfQorCit2b2lkIE1lZGlhUXVlcnlQYXJzZXI6OnNraXBV
bnRpbEJsb2NrRW5kKENTU1BhcnNlclRva2VuVHlwZSAvKnR5cGUgKi8sIGNvbnN0IENTU1BhcnNl
clRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAodG9rZW4uZ2V0QmxvY2tUeXBlKCkgPT0gQ1NTUGFy
c2VyVG9rZW46OkJsb2NrRW5kICYmICFtX2Jsb2NrV2F0Y2hlci5ibG9ja0xldmVsKCkpCisgICAg
ICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2Vy
Ojpkb25lKENTU1BhcnNlclRva2VuVHlwZSAvKnR5cGUqLywgY29uc3QgQ1NTUGFyc2VyVG9rZW4m
IC8qdG9rZW4qLykgeyB9CisKK3ZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6aGFuZGxlQmxvY2tzKGNv
bnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAodG9rZW4uZ2V0QmxvY2tUeXBl
KCkgPT0gQ1NTUGFyc2VyVG9rZW46OkJsb2NrU3RhcnQKKyAgICAgICAgJiYgKHRva2VuLnR5cGUo
KSAhPSBMZWZ0UGFyZW50aGVzaXNUb2tlbiB8fCBtX2Jsb2NrV2F0Y2hlci5ibG9ja0xldmVsKCkp
KQorICAgICAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbEJsb2NrRW5kOworfQorCit2b2lkIE1l
ZGlhUXVlcnlQYXJzZXI6OnByb2Nlc3NUb2tlbihjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4p
Cit7CisgICAgQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUgPSB0b2tlbi50eXBlKCk7CisKKyAgICBo
YW5kbGVCbG9ja3ModG9rZW4pOworICAgIG1fYmxvY2tXYXRjaGVyLmhhbmRsZVRva2VuKHRva2Vu
KTsKKworICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBjdXJyZW50IHN0YXRl
CisgICAgaWYgKHR5cGUgIT0gV2hpdGVzcGFjZVRva2VuKQorICAgICAgICAoKHRoaXMpLT4qKG1f
c3RhdGUpKSh0eXBlLCB0b2tlbik7Cit9CisKKy8vIFRoZSBzdGF0ZSBtYWNoaW5lIGxvb3AKK1Jl
ZlB0cjxNZWRpYVF1ZXJ5U2V0PiBNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZUltcGwoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSByYW5nZSkKK3sKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpCisgICAgICAg
IHByb2Nlc3NUb2tlbihyYW5nZS5jb25zdW1lKCkpOworCisgICAgLy8gRklYTUU6IENhbiB3ZSBn
ZXQgcmlkIG9mIHRoaXMgc3BlY2lhbCBjYXNlPworICAgIGlmIChtX3BhcnNlclR5cGUgPT0gTWVk
aWFRdWVyeVNldFBhcnNlcikKKyAgICAgICAgcHJvY2Vzc1Rva2VuKENTU1BhcnNlclRva2VuKEVP
RlRva2VuKSk7CisKKyAgICBpZiAobV9zdGF0ZSAhPSBSZWFkQW5kICYmIG1fc3RhdGUgIT0gUmVh
ZFJlc3RyaWN0b3IgJiYgbV9zdGF0ZSAhPSBEb25lICYmIG1fc3RhdGUgIT0gUmVhZE1lZGlhTm90
KSB7CisgICAgICAgIE1lZGlhUXVlcnkgcXVlcnkgPSBNZWRpYVF1ZXJ5KE1lZGlhUXVlcnk6Ok5v
bmUsICJhbGwiLCBWZWN0b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+KCkpOworICAgICAgICBtX3F1
ZXJ5U2V0LT5hZGRNZWRpYVF1ZXJ5KFdURk1vdmUocXVlcnkpKTsKKyAgICB9IGVsc2UgaWYgKG1f
bWVkaWFRdWVyeURhdGEuY3VycmVudE1lZGlhUXVlcnlDaGFuZ2VkKCkpCisgICAgICAgIGNvbW1p
dE1lZGlhUXVlcnkoKTsKKworICAgIHJldHVybiBtX3F1ZXJ5U2V0OworfQorCitNZWRpYVF1ZXJ5
RGF0YTo6TWVkaWFRdWVyeURhdGEoKQorICAgIDogbV9yZXN0cmljdG9yKE1lZGlhUXVlcnk6Ok5v
bmUpCisgICAgLCBtX21lZGlhVHlwZSgiYWxsIikKKyAgICAsIG1fbWVkaWFUeXBlU2V0KGZhbHNl
KQoreworfQorCit2b2lkIE1lZGlhUXVlcnlEYXRhOjpjbGVhcigpCit7CisgICAgbV9yZXN0cmlj
dG9yID0gTWVkaWFRdWVyeTo6Tm9uZTsKKyAgICBtX21lZGlhVHlwZSA9ICJhbGwiOworICAgIG1f
bWVkaWFUeXBlU2V0ID0gZmFsc2U7CisgICAgbV9tZWRpYUZlYXR1cmUgPSBTdHJpbmcoKTsKKyAg
ICBtX3ZhbHVlTGlzdC5jbGVhcigpOworICAgIG1fZXhwcmVzc2lvbnMuY2xlYXIoKTsKK30KKwor
Ym9vbCBNZWRpYVF1ZXJ5RGF0YTo6YWRkRXhwcmVzc2lvbigpCit7CisgICAgTWVkaWFRdWVyeUV4
cHJlc3Npb24gZXhwcmVzc2lvbiA9IE1lZGlhUXVlcnlFeHByZXNzaW9uKG1fbWVkaWFGZWF0dXJl
LCBtX3ZhbHVlTGlzdCk7CisgICAgYm9vbCBpc1ZhbGlkID0gZXhwcmVzc2lvbi5pc1ZhbGlkKCk7
CisgICAgbV9leHByZXNzaW9ucy5hcHBlbmQoV1RGTW92ZShleHByZXNzaW9uKSk7CisgICAgbV92
YWx1ZUxpc3QuY2xlYXIoKTsKKyAgICByZXR1cm4gaXNWYWxpZDsKK30KKworYm9vbCBNZWRpYVF1
ZXJ5RGF0YTo6dHJ5QWRkUGFyc2VyVG9rZW4oQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0
IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAodHlwZSA9PSBOdW1iZXJUb2tlbiB8
fCB0eXBlID09IFBlcmNlbnRhZ2VUb2tlbiB8fCB0eXBlID09IERpbWVuc2lvblRva2VuCisgICAg
ICAgIHx8IHR5cGUgPT0gRGVsaW1pdGVyVG9rZW4gfHwgdHlwZSA9PSBJZGVudFRva2VuKSB7Cisg
ICAgICAgIG1fdmFsdWVMaXN0LmFwcGVuZCh0b2tlbik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5RGF0YTo6c2V0
TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKQoreworICAgIG1fbWVkaWFUeXBlID0g
bWVkaWFUeXBlOworICAgIG1fbWVkaWFUeXBlU2V0ID0gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ3NvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBh
cnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVy
eVBhcnNlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVk
aWFRdWVyeVBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQwIEBACisvLyBDb3B5
cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZm5kZWYgTWVkaWFRdWVy
eVBhcnNlcl9oCisjZGVmaW5lIE1lZGlhUXVlcnlQYXJzZXJfaAorCisjaW5jbHVkZSAiTWVkaWFM
aXN0LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAu
aCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2Vu
UmFuZ2UuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVk
aWFRdWVyeVNldDsKKworY2xhc3MgTWVkaWFRdWVyeURhdGEgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKE1lZGlhUXVlcnlEYXRhKTsKK3ByaXZhdGU6CisgICAgTWVkaWFRdWVyeTo6UmVzdHJp
Y3RvciBtX3Jlc3RyaWN0b3I7CisgICAgU3RyaW5nIG1fbWVkaWFUeXBlOworICAgIFZlY3RvcjxN
ZWRpYVF1ZXJ5RXhwcmVzc2lvbj4gbV9leHByZXNzaW9uczsKKyAgICBTdHJpbmcgbV9tZWRpYUZl
YXR1cmU7CisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuLCA0PiBtX3ZhbHVlTGlzdDsKKyAgICBi
b29sIG1fbWVkaWFUeXBlU2V0OworCitwdWJsaWM6CisgICAgTWVkaWFRdWVyeURhdGEoKTsKKyAg
ICB2b2lkIGNsZWFyKCk7CisgICAgYm9vbCBhZGRFeHByZXNzaW9uKCk7CisgICAgYm9vbCB0cnlB
ZGRQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJik7
CisgICAgdm9pZCBzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgTWVkaWFR
dWVyeTo6UmVzdHJpY3RvciByZXN0cmljdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdG9y
OyB9OworICAgIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwcmVzc2lvbj4mIGV4cHJlc3Npb25zKCkgeyBy
ZXR1cm4gbV9leHByZXNzaW9uczsgfQorICAgIFN0cmluZyBtZWRpYVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhVHlwZTsgfQorICAgIAorICAgIGlubGluZSBib29sIGN1cnJlbnRNZWRpYVF1
ZXJ5Q2hhbmdlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKG1fcmVzdHJpY3RvciAh
PSBNZWRpYVF1ZXJ5OjpOb25lIHx8IG1fbWVkaWFUeXBlU2V0IHx8IG1fZXhwcmVzc2lvbnMuc2l6
ZSgpID4gMCk7CisgICAgfQorICAgIGlubGluZSBNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHJlc3Ry
aWN0b3IoKSB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KKworICAgIGlubGluZSB2b2lkIHNldFJl
c3RyaWN0b3IoTWVkaWFRdWVyeTo6UmVzdHJpY3RvciByZXN0cmljdG9yKSB7IG1fcmVzdHJpY3Rv
ciA9IHJlc3RyaWN0b3I7IH0KKworICAgIGlubGluZSB2b2lkIHNldE1lZGlhRmVhdHVyZShjb25z
dCBTdHJpbmcmIHN0cikgeyBtX21lZGlhRmVhdHVyZSA9IHN0cjsgfQorfTsKKworY2xhc3MgTWVk
aWFRdWVyeVBhcnNlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFRdWVyeVBhcnNl
cik7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBwYXJzZU1lZGlh
UXVlcnlTZXQoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0
PiBwYXJzZU1lZGlhUXVlcnlTZXQoQ1NTUGFyc2VyVG9rZW5SYW5nZSk7CisgICAgc3RhdGljIFJl
ZlB0cjxNZWRpYVF1ZXJ5U2V0PiBwYXJzZU1lZGlhQ29uZGl0aW9uKENTU1BhcnNlclRva2VuUmFu
Z2UpOworCitwcml2YXRlOgorICAgIGVudW0gUGFyc2VyVHlwZSB7CisgICAgICAgIE1lZGlhUXVl
cnlTZXRQYXJzZXIsCisgICAgICAgIE1lZGlhQ29uZGl0aW9uUGFyc2VyLAorICAgIH07CisKKyAg
ICBNZWRpYVF1ZXJ5UGFyc2VyKFBhcnNlclR5cGUpOworICAgIHZpcnR1YWwgfk1lZGlhUXVlcnlQ
YXJzZXIoKTsKKworICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBwYXJzZUltcGwoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSk7CisKKyAgICB2b2lkIHByb2Nlc3NUb2tlbihjb25zdCBDU1NQYXJzZXJUb2tl
biYpOworCisgICAgdm9pZCByZWFkUmVzdHJpY3RvcihDU1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0
IENTU1BhcnNlclRva2VuJik7CisgICAgdm9pZCByZWFkTWVkaWFOb3QoQ1NTUGFyc2VyVG9rZW5U
eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworICAgIHZvaWQgcmVhZE1lZGlhVHlwZShDU1NQ
YXJzZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJik7CisgICAgdm9pZCByZWFkQW5k
KENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAgICB2b2lkIHJl
YWRGZWF0dXJlU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYp
OworICAgIHZvaWQgcmVhZEZlYXR1cmUoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJz
ZXJUb2tlbiYpOworICAgIHZvaWQgcmVhZEZlYXR1cmVDb2xvbihDU1NQYXJzZXJUb2tlblR5cGUs
IGNvbnN0IENTU1BhcnNlclRva2VuJik7CisgICAgdm9pZCByZWFkRmVhdHVyZVZhbHVlKENTU1Bh
cnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAgICB2b2lkIHJlYWRGZWF0
dXJlRW5kKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAgICB2
b2lkIHNraXBVbnRpbENvbW1hKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mKTsKKyAgICB2b2lkIHNraXBVbnRpbEJsb2NrRW5kKENTU1BhcnNlclRva2VuVHlwZSwgY29u
c3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAgICB2b2lkIGRvbmUoQ1NTUGFyc2VyVG9rZW5UeXBlLCBj
b25zdCBDU1NQYXJzZXJUb2tlbiYpOworCisgICAgdXNpbmcgU3RhdGUgPSB2b2lkIChNZWRpYVF1
ZXJ5UGFyc2VyOjoqKShDU1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJik7
CisKKyAgICB2b2lkIHNldFN0YXRlQW5kUmVzdHJpY3QoU3RhdGUsIE1lZGlhUXVlcnk6OlJlc3Ry
aWN0b3IpOworICAgIHZvaWQgaGFuZGxlQmxvY2tzKGNvbnN0IENTU1BhcnNlclRva2VuJik7Cisg
ICAgCisgICAgdm9pZCBjb21taXRNZWRpYVF1ZXJ5KCk7CisKKyAgICBTdGF0ZSBtX3N0YXRlOwor
ICAgIFBhcnNlclR5cGUgbV9wYXJzZXJUeXBlOworICAgIE1lZGlhUXVlcnlEYXRhIG1fbWVkaWFR
dWVyeURhdGE7CisgICAgUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1fcXVlcnlTZXQ7CisgICAgTWVk
aWFRdWVyeUJsb2NrV2F0Y2hlciBtX2Jsb2NrV2F0Y2hlcjsKKworICAgIGNvbnN0IHN0YXRpYyBT
dGF0ZSBSZWFkUmVzdHJpY3RvcjsKKyAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZE1lZGlhTm90
OworICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkTWVkaWFUeXBlOworICAgIGNvbnN0IHN0YXRp
YyBTdGF0ZSBSZWFkQW5kOworICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkRmVhdHVyZVN0YXJ0
OworICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkRmVhdHVyZTsKKyAgICBjb25zdCBzdGF0aWMg
U3RhdGUgUmVhZEZlYXR1cmVDb2xvbjsKKyAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZEZlYXR1
cmVWYWx1ZTsKKyAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZEZlYXR1cmVFbmQ7CisgICAgY29u
c3Qgc3RhdGljIFN0YXRlIFNraXBVbnRpbENvbW1hOworICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBT
a2lwVW50aWxCbG9ja0VuZDsKKyAgICBjb25zdCBzdGF0aWMgU3RhdGUgRG9uZTsKKworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWVkaWFRdWVyeVBhcnNlcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287786</attachid>
            <date>2016-09-02 11:11:48 -0700</date>
            <delta_ts>2016-09-02 12:06:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>48890</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDUzNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQwOSw2ICsxNDA5LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCiAgICAg
Y3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJz
ZXJJZGlvbXMuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
CiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKICAgICBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuUmFuZ2UuY3BwCkBAIC0xNDE3LDYgKzE0MTgsOCBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCiAgICAgY3Nz
L3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1
dFN0cmVhbS5jcHAKKyAgICBjc3MvcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwCisg
ICAgY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAogICAgIGNzcy9wYXJzZXIvU1ZHQ1NT
UGFyc2VyLmNwcAogCiAgICAgY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMDUzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzNTIsNyArMzM1Miw3IEBACiAJCTk0NkQzNzNC
MUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczNTFENkNERjk4MDA3
NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwICovOyB9OwogCQk5NDZEMzczQzFE
NkNERkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzM4MUQ2Q0RGOTgwMDc3MDg0
RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oICovOyB9OwogCQk5NDZEMzczRjFENkNFM0My
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3M0UxRDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNl
clRva2VuLmNwcCAqLzsgfTsKLQkJOTQ2RDM3NDAxRDZDRTNDMjAwNzcwODRGIC8qIENTU1BhcnNl
clRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NDZEMzczRDFENkNFMzFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCAqLzsgfTsKKwkJOTQ2
RDM3NDAxRDZDRTNDMjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczRDFENkNFMzFBMDA3NzA4NEYg
LyogQ1NTUGFyc2VyVG9rZW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5NDZEMzc0NDFENkNGN0IyMDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzc0
MzFENkNGNzg4MDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggKi87IH07CiAJCTk0NkQzNzQ1
MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzc0MTFENkNGNjMyMDA3NzA4NEYg
LyogQ1NTUHJvcGVydHlQYXJzZXIuY3BwICovOyB9OwogCQk5NDZEMzc0NjFENkQwMUQ0MDA3NzA4
NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBh
cnNlci5oICovOyB9OwpAQCAtMzM2MCw2ICszMzYwLDEwIEBACiAJCTk0NkQzNzRBMUQ2RDA2Mjgw
MDc3MDg0RiAvKiBDU1NNYXJrdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk0NkQzNzQ4MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLzsg
fTsKIAkJOTQ2RDM3NEQxRDZEMDhBNjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NEIx
RDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3BwICovOyB9OwogCQk5NDZE
Mzc0RTFENkQwOEFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NEMxRDZEMDdGNTAwNzcw
ODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuaCAqLzsgfTsKKwkJOTQ5M0I2QkUxRDc0QjQxMjAw
ODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5M0I2QjYxRDc0QjM5NTAwODhFNzgwIC8qIE1l
ZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwICovOyB9OworCQk5NDkzQjZCRjFENzRCNDEyMDA4OEU3
ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5M0I2QjcxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVl
cnlCbG9ja1dhdGNoZXIuaCAqLzsgfTsKKwkJOTQ5M0I2QzAxRDc0QjQxMjAwODhFNzgwIC8qIE1l
ZGlhUXVlcnlQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTQ5M0I2QjgxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuY3Bw
ICovOyB9OworCQk5NDkzQjZDMTFENzRCNDEyMDA4OEU3ODAgLyogTWVkaWFRdWVyeVBhcnNlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5M0I2Qjkx
RDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuaCAqLzsgfTsKIAkJOTQ5Qzc3MDAx
RDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYg
LyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAqLzsgfTsKIAkJOTQ5Qzc3MDExRDZFMUQ5ODAwQzBE
RTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZh
c3RQYXRocy5oICovOyB9OwogCQk5NDlDNzcwNDFENkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk0OUM3NzAyMUQ2RTM5MzUwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuY3BwICovOyB9OwpAQCAtMzM2Nyw2ICszMzcxLDcgQEAKIAkJOTQ5Qzc3MDgxRDZFNDk4
NzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwNjFENkU0OEVEMDBDMERFNEYg
LyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcCAqLzsgfTsKIAkJOTQ5Qzc3MDkxRDZFNDk4
NzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MDcxRDZFNDhFRDAwQzBERTRGIC8q
IENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oICovOyB9OwogCQk5NDlDNzcwQjFENkU0OUVEMDBD
MERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzBBMUQ2RTQ5QzMwMEMwREU0RiAvKiBDU1NQYXJzZXJP
YnNlcnZlci5oICovOyB9OworCQk5NERFNUM3RTFENzhDQjJFMDAxNjRGMkEgLyogQ1NTUGFyc2Vy
SWRpb21zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk0REU1QzdEMUQ3OENCMjUwMDE2NEYyQSAvKiBDU1NQYXJzZXJJZGlvbXMuY3BwICovOyB9Owog
CQk5NkFCQTQyMzE0QkNCODBFMDBENTYyMDQgLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21t
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTZB
QkE0MjIxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cCAqLzsgfTsKIAkJOTcwM0UxQkYxNURDNEUzNzAwMUYyNEM4IC8qIEpTVm9pZENhbGxiYWNrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTlFQzhC
MTVEQzQ5MkYwMDRGMkU3MSAvKiBKU1ZvaWRDYWxsYmFjay5jcHAgKi87IH07CiAJCTk3MDU5OTc3
MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzA1OTk3MzEwN0Q5NzUyMDBBNTBBN0MgLyog
UG9saWN5Q2FsbGJhY2suY3BwICovOyB9OwpAQCAtMTA0OTksNiArMTA1MDQsMTAgQEAKIAkJOTQ2
RDM3NDgxRDZEMDYwQzAwNzcwODRGIC8qIENTU01hcmt1cC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDU1NNYXJrdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTQ2RDM3NEIxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHA7
IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk0NkQzNzRDMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJh
bmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlclRva2VuUmFu
Z2UuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk0OTNCNkI2MUQ3NEIzOTUwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5Qmxv
Y2tXYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlh
UXVlcnlCbG9ja1dhdGNoZXIuY3BwOyBwYXRoID0gcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNo
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDkzQjZCNzFENzRCMzk1MDA4
OEU3ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmg7IHBhdGggPSBwYXJzZXIvTWVkaWFR
dWVyeUJsb2NrV2F0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDkzQjZC
ODFENzRCMzk1MDA4OEU3ODAgLyogTWVkaWFRdWVyeVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYVF1ZXJ5UGFyc2VyLmNwcDsgcGF0aCA9IHBhcnNl
ci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ5
M0I2QjkxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFRdWVyeVBhcnNlci5oOyBwYXRoID0gcGFyc2VyL01l
ZGlhUXVlcnlQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ5Qzc2RkUx
RDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQYXJzZXJGYXN0UGF0aHMuY3BwOyBwYXRoID0gcGFy
c2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk0OUM3NkZGMUQ2RTFEOEMwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyRmFzdFBhdGhzLmg7IHBhdGggPSBw
YXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk0OUM3NzAyMUQ2RTM5MzUwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1MDYsNiArMTA1MTUsNyBAQAogCQk5NDlD
NzcwNjFENkU0OEVEMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlck9ic2VydmVyV3JhcHBl
ci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ5Qzc3MDcxRDZFNDhFRDAwQzBERTRGIC8qIENTU1Bh
cnNlck9ic2VydmVyV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBD
U1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJPYnNlcnZl
cldyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ5Qzc3MEExRDZFNDlD
MzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IENTU1BhcnNlck9ic2VydmVyLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyT2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTRERTVDN0QxRDc4Q0IyNTAw
MTY0RjJBIC8qIENTU1BhcnNlcklkaW9tcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDU1NQYXJzZXJJZGlvbXMuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlcklk
aW9tcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEM0QzAyQkVEODkzNkY4
MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTVkdHcmFwaGljc0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTZBQkE0MjIxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTcwNTk5NzMxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTQyLDYgKzE4MTUyLDcgQEAKIAkJCQk5NDZEMzcy
OTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyLmggKi8sCiAJCQkJOTQ5Qzc2RkUxRDZFMUQ4
QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5jcHAgKi8sCiAJCQkJOTQ5Qzc2RkYxRDZF
MUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oICovLAorCQkJCTk0REU1QzdEMUQ3
OENCMjUwMDE2NEYyQSAvKiBDU1NQYXJzZXJJZGlvbXMuY3BwICovLAogCQkJCTk0NkQzNzQzMUQ2
Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlvbXMuaCAqLywKIAkJCQk5NDZEMzcyQTFENkNC
MjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5oICovLAogCQkJCTk0OUM3NzBBMUQ2RTQ5QzMw
MEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlci5oICovLApAQCAtMTgxNjEsNiArMTgxNzIsMTAg
QEAKIAkJCQk5NDZEMzczNzFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggKi8sCiAJ
CQkJOTQ2RDM3MzUxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNw
cCAqLywKIAkJCQk5NDZEMzczODFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0uaCAqLywKKwkJCQk5NDkzQjZCNjFENzRCMzk1MDA4OEU3ODAgLyogTWVkaWFRdWVyeUJs
b2NrV2F0Y2hlci5jcHAgKi8sCisJCQkJOTQ5M0I2QjcxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlh
UXVlcnlCbG9ja1dhdGNoZXIuaCAqLywKKwkJCQk5NDkzQjZCODFENzRCMzk1MDA4OEU3ODAgLyog
TWVkaWFRdWVyeVBhcnNlci5jcHAgKi8sCisJCQkJOTQ5M0I2QjkxRDc0QjM5NTAwODhFNzgwIC8q
IE1lZGlhUXVlcnlQYXJzZXIuaCAqLywKIAkJCQk5NDZEMzczMjFENkNDMzcyMDA3NzA4NEYgLyog
U1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gcGFyc2VyOwpAQCAtMjYwMDQs
NiArMjYwMTksNyBAQAogCQkJCUFCRERGRTdBMEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTQ1NDQyNEYxMTlCMzY4NzAwOUJFOTEyIC8qIFJl
bmRlck1ldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTM1ODZFMDE1MjY0QzQ1MDAyMkE2NTkg
LyogUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDkz
QjZDMTFENzRCNDEyMDA4OEU3ODAgLyogTWVkaWFRdWVyeVBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFMzJCOUMxNTE3QzBCMjAwRjU0MkVDIC8qIFJlbmRlck11bHRpQ29sdW1uU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzFBN0Q5ODE4RkNCNUIwMDA0MjE4NzkgLyogUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCThBQzgyMkZE
MTgwRkMwMzMwMEZCNjRENSAvKiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNjkxMyw2ICsyNjkyOSw3IEBACiAJCQkJQTE0ODMyQ0MxODdGNjdDNDAwREE2M0E2
IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUExNDgzMkNEMTg3RjY4
MkUwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkU2FmZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE0
ODMyQ0YxODdGNjg0NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTk0OTNCNkJGMUQ3NEI0MTIwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5
QmxvY2tXYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA5OUQwOTE3Qjk2OEExMDBGRjg0
QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
N0Y4MThGRDBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NEEyMERCOTBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29yZVVSTFJlc3BvbnNl
SU9TLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDU1LDYgKzI3NDcyLDcgQEAKIAkJCQkxQThBNjQ1
QjFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEE2NDVGMUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QThBNjQ2MjFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ5M0I2QkUxRDc0QjQxMjAwODhFNzgwIC8qIE1lZGlh
UXVlcnlCbG9ja1dhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZCQkMwREI1NUNE
QzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4
RjZCQkUwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyNEY1NEVBQzEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODEzOCw2ICsyODE1Niw3IEBACiAJCQkJNDk5
QjNFRDYxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkEyNEQ3OTE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBMDE1QUEwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBo
aWNzVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ5M0I2QzAxRDc0QjQxMjAwODhFNzgw
IC8qIE1lZGlhUXVlcnlQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGNzQ4M0UxOEZF
QkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGNTVCM0RCRjEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxNUJFMTlCMUQ1NEY2QzEwMEREN0M2OCAvKiBISURHYW1lcGFkLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjk0NTUsNiArMjk0NzQsNyBAQAogCQkJCThBRjRFNTU1MTFE
QzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODY1MTJFREUxNTRBMkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1p
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0M0M4NUQxODlFMTBDRjAwMDE5QUUyIC8qIFBl
cmZvcm1hbmNlVGltaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0REU1QzdFMUQ3OENCMkUw
MDE2NEYyQSAvKiBDU1NQYXJzZXJJZGlvbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFG
QjQxNTIwRjkzQjAwM0E3QTc1IC8qIFBlcmlvZGljV2F2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OUQ1REMyRDBGNDIzQTczMDA4RjIwRkQgLyogUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDBGRjJBNUQxMUY4QzQ1QTAwN0U3NEUwIC8qIFBp
bmdMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVl
cnlFeHAuY3BwCShyZXZpc2lvbiAyMDUzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDggQEAKIAogI2luY2x1ZGUg
IkNTU0FzcGVjdFJhdGlvVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRl
ICJDU1NQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgogI2luY2x1
ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5j
bHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIKQEAgLTM3LDIxICszOSw5MSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZlYXR1cmVWYWxpZFdpdGhJZGVu
dGlmaWVyKGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBDU1NQYXJzZXJW
YWx1ZSYgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgZmVhdHVyZVdpdGhWYWxpZElkZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlKQogewotICAgIGlmICghdmFsdWUuaWQpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6Om9yaWVudGF0aW9uCiAjaWYgRU5BQkxFKFZJRVdfTU9ERV9DU1NfTUVESUEp
Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6dmlld01vZGUK
KyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnZpZXdNb2RlCiAjZW5k
aWYKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpjb2xvckdh
bXV0Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YW55SG92
ZXIKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjphbnlQb2lu
dGVyCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aG92ZXIK
LSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjppbnZlcnRlZENv
bG9ycwotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnBvaW50
ZXI7CisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpjb2xvckdhbXV0
CisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjphbnlIb3ZlcgorICAg
IHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YW55UG9pbnRlcgorICAgIHx8
IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aG92ZXIKKyAgICB8fCBtZWRpYUZl
YXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmludmVydGVkQ29sb3JzCisgICAgfHwgbWVkaWFG
ZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwb2ludGVyOworfQorICAgIAorc3RhdGljIGlu
bGluZSBib29sIGZlYXR1cmVXaXRoVmFsaWREZW5zaXR5KGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0
dXJlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgaWYgKCh0b2tlbi51bml0
VHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19EUFBYICYmIHRva2Vu
LnVuaXRUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RQSSAmJiB0
b2tlbi51bml0VHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19EUENN
KSB8fCB0b2tlbi5udW1lcmljVmFsdWUoKSA8PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cmVzb2x1
dGlvbgorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluUmVzb2x1
dGlvbgorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4UmVzb2x1
dGlvbjsKK30KKworc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoVmFsaWRQb3NpdGl2ZUxl
bmd0aChjb25zdCBTdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRv
a2VuKQoreworICAgIGlmICghKENTU1ByaW1pdGl2ZVZhbHVlOjppc0xlbmd0aCh0b2tlbi51bml0
VHlwZSgpKSB8fCAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuICYmICF0b2tlbi5udW1lcmlj
VmFsdWUoKSkpIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIAorICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJl
TmFtZXM6OmhlaWdodAorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6
bWF4SGVpZ2h0CisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5I
ZWlnaHQKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OndpZHRoCisg
ICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhXaWR0aAorICAgIHx8
IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluV2lkdGgKKyAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZUhlaWdodAorICAgIHx8IG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4RGV2aWNlSGVpZ2h0CisgICAgfHwgbWVk
aWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5EZXZpY2VIZWlnaHQKKyAgICB8fCBt
ZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZVdpZHRoCisgICAgfHwgbWVk
aWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5EZXZpY2VXaWR0aAorICAgIHx8IG1l
ZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4RGV2aWNlV2lkdGg7Cit9CisKK3N0
YXRpYyBpbmxpbmUgYm9vbCBmZWF0dXJlV2l0aFBvc2l0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcm
IG1lZGlhRmVhdHVyZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuKQoreworICAgIGlmICh0
b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgIT0gSW50ZWdlclZhbHVlVHlwZSB8fCB0b2tlbi5udW1l
cmljVmFsdWUoKSA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4g
bWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpjb2xvcgorICAgIHx8IG1lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6IG1heENvbG9yCisgICAgfHwgbWVkaWFGZWF0dXJl
ID09IE1lZGlhRmVhdHVyZU5hbWVzOjogbWluQ29sb3IKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0g
TWVkaWFGZWF0dXJlTmFtZXM6OmNvbG9ySW5kZXgKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6Om1heENvbG9ySW5kZXgKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6Om1pbkNvbG9ySW5kZXgKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6Om1vbm9jaHJvbWUKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6Om1heE1vbm9jaHJvbWUKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6Om1pbk1vbm9jaHJvbWU7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBmZWF0
dXJlV2l0aFBvc2l0aXZlTnVtYmVyKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBD
U1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBOdW1iZXJU
b2tlbiB8fCB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICByZXR1cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjp0cmFu
c2Zvcm0zZAorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6ZGV2aWNl
UGl4ZWxSYXRpbworICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4
RGV2aWNlUGl4ZWxSYXRpbworICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1l
czo6bWluRGV2aWNlUGl4ZWxSYXRpbzsKK30KKworc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVX
aXRoWmVyb09yT25lKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBDU1NQYXJzZXJU
b2tlbiYgdG9rZW4pCit7CisgICAgaWYgKHRva2VuLm51bWVyaWNWYWx1ZVR5cGUoKSAhPSBJbnRl
Z2VyVmFsdWVUeXBlIHx8ICEodG9rZW4ubnVtZXJpY1ZhbHVlKCkgPT0gMSB8fCAhdG9rZW4ubnVt
ZXJpY1ZhbHVlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1l
ZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6Z3JpZDsKK30KKworc3RhdGljIGlubGlu
ZSBib29sIGlzRmVhdHVyZVZhbGlkV2l0aElkZW50aWZpZXIoY29uc3QgQXRvbWljU3RyaW5nJiBt
ZWRpYUZlYXR1cmUsIENTU1ZhbHVlSUQgaWQpCit7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGZlYXR1cmVXaXRoVmFsaWRJZGVudChtZWRpYUZlYXR1
cmUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNGZWF0dXJlVmFsaWRXaXRoTm9uTmVnYXRp
dmVMZW5ndGhPck51bWJlcihjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3Qg
Q1NTUGFyc2VyVmFsdWUmIHZhbHVlKQpAQCAtMTg5LDcgKzI2MSw3IEBAIE1lZGlhUXVlcnlFeHBy
ZXNzaW9uOjpNZWRpYVF1ZXJ5RXhwcmVzc2kKICAgICAgICAgICAgIG1faXNWYWxpZCA9IHRydWU7
CiAgICAgfSBlbHNlIGlmICh2YWx1ZUxpc3QtPnNpemUoKSA9PSAxKSB7CiAgICAgICAgIGF1dG8m
IHZhbHVlID0gKnZhbHVlTGlzdC0+dmFsdWVBdCgwKTsKLSAgICAgICAgaWYgKGlzRmVhdHVyZVZh
bGlkV2l0aElkZW50aWZpZXIobWVkaWFGZWF0dXJlLCB2YWx1ZSkpIHsKKyAgICAgICAgaWYgKHZh
bHVlLmlkICYmIGlzRmVhdHVyZVZhbGlkV2l0aElkZW50aWZpZXIobWVkaWFGZWF0dXJlLCB2YWx1
ZS5pZCkpIHsKICAgICAgICAgICAgIG1fdmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcih2YWx1ZS5pZCk7CiAgICAgICAgICAgICBtX2lzVmFsaWQgPSB0cnVlOwogICAg
ICAgICB9IGVsc2UgaWYgKGlzRmVhdHVyZVZhbGlkV2l0aE51bWJlcldpdGhVbml0KG1lZGlhRmVh
dHVyZSwgdmFsdWUpIHx8IGlzRmVhdHVyZVZhbGlkV2l0aE5vbk5lZ2F0aXZlTGVuZ3RoT3JOdW1i
ZXIobWVkaWFGZWF0dXJlLCB2YWx1ZSkpIHsKQEAgLTIxMSw2ICsyODMsNTkgQEAgTWVkaWFRdWVy
eUV4cHJlc3Npb246Ok1lZGlhUXVlcnlFeHByZXNzaQogICAgIH0KIH0KIAorTWVkaWFRdWVyeUV4
cHJlc3Npb246Ok1lZGlhUXVlcnlFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29u
c3QgVmVjdG9yPENTU1BhcnNlclRva2VuLCA0PiYgdG9rZW5MaXN0KQorICAgIDogbV9tZWRpYUZl
YXR1cmUoZmVhdHVyZSkKKyAgICAsIG1faXNWYWxpZChmYWxzZSkKK3sKKyAgICAvLyBDcmVhdGUg
dmFsdWUgZm9yIG1lZGlhIHF1ZXJ5IGV4cHJlc3Npb24gdGhhdCBtdXN0IGhhdmUgMSBvciBtb3Jl
IHZhbHVlcy4KKyAgICBpZiAoIXRva2VuTGlzdC5zaXplKCkgJiYgaXNGZWF0dXJlVmFsaWRXaXRo
b3V0VmFsdWUobV9tZWRpYUZlYXR1cmUpKSB7CisgICAgICAgIC8vIFZhbGlkLCBjcmVhdGVzIGEg
TWVkaWFRdWVyeUV4cCB3aXRoIGFuICdpbnZhbGlkJyBNZWRpYVF1ZXJ5RXhwVmFsdWUKKyAgICAg
ICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHRva2VuTGlzdC5zaXplKCkgPT0g
MSkgeworICAgICAgICBDU1NQYXJzZXJUb2tlbiB0b2tlbiA9IHRva2VuTGlzdC5maXJzdCgpOwor
ICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgICAgIENT
U1ZhbHVlSUQgaWRlbnQgPSB0b2tlbi5pZCgpOworICAgICAgICAgICAgaWYgKCFmZWF0dXJlV2l0
aFZhbGlkSWRlbnQobV9tZWRpYUZlYXR1cmUpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIG1fdmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihp
ZGVudCk7CisgICAgICAgICAgICBtX2lzVmFsaWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYg
KHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFn
ZVRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikgeworICAgICAgICAgICAg
Ly8gQ2hlY2sgZm9yIG51bWVyaWMgdG9rZW4gdHlwZXMgc2luY2UgaXQgaXMgb25seSBzYWZlIGZv
ciB0aGVzZSB0eXBlcyB0byBjYWxsIG51bWVyaWNWYWx1ZS4KKyAgICAgICAgICAgIGlmIChmZWF0
dXJlV2l0aFZhbGlkRGVuc2l0eShtX21lZGlhRmVhdHVyZSwgdG9rZW4pCisgICAgICAgICAgICAg
ICAgfHwgZmVhdHVyZVdpdGhWYWxpZFBvc2l0aXZlTGVuZ3RoKG1fbWVkaWFGZWF0dXJlLCB0b2tl
bikpIHsKKyAgICAgICAgICAgICAgICAvLyBNZWRpYSBmZWF0dXJlcyB0aGF0IG11c3QgaGF2ZSBu
b24tbmVnYXRpdmUgPGRlbnNpdHk+LCBpZS4gZHBweCwgZHBpIG9yIGRwY20sCisgICAgICAgICAg
ICAgICAgLy8gb3IgTWVkaWEgZmVhdHVyZXMgdGhhdCBtdXN0IGhhdmUgbm9uLW5lZ2F0aXZlIDxs
ZW5ndGg+IG9yIG51bWJlciB2YWx1ZS4KKyAgICAgICAgICAgICAgICBtX3ZhbHVlID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZSh0b2tlbi5udW1lcmljVmFsdWUoKSwgKENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXMpIHRva2VuLnVuaXRUeXBlKCkpOworICAgICAgICAgICAgICAgIG1faXNW
YWxpZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZlYXR1cmVXaXRoUG9zaXRpdmVJ
bnRlZ2VyKG1fbWVkaWFGZWF0dXJlLCB0b2tlbikKKyAgICAgICAgICAgICAgICB8fCBmZWF0dXJl
V2l0aFBvc2l0aXZlTnVtYmVyKG1fbWVkaWFGZWF0dXJlLCB0b2tlbikKKyAgICAgICAgICAgICAg
ICB8fCBmZWF0dXJlV2l0aFplcm9Pck9uZShtX21lZGlhRmVhdHVyZSwgdG9rZW4pKSB7CisgICAg
ICAgICAgICAgICAgLy8gTWVkaWEgZmVhdHVyZXMgdGhhdCBtdXN0IGhhdmUgbm9uLW5lZ2F0aXZl
IGludGVnZXIgdmFsdWUsCisgICAgICAgICAgICAgICAgLy8gb3IgbWVkaWEgZmVhdHVyZXMgdGhh
dCBtdXN0IGhhdmUgbm9uLW5lZ2F0aXZlIG51bWJlciB2YWx1ZSwKKyAgICAgICAgICAgICAgICAv
LyBvciBtZWRpYSBmZWF0dXJlcyB0aGF0IG11c3QgaGF2ZSAoMHwxKSB2YWx1ZS4KKyAgICAgICAg
ICAgICAgICBtX3ZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0b2tlbi5udW1lcmlj
VmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX05VTUJFUik7CisgICAg
ICAgICAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0gZWxzZSBpZiAodG9rZW5MaXN0LnNpemUoKSA9PSAzICYmIGlzQXNwZWN0UmF0aW9GZWF0
dXJlKG1fbWVkaWFGZWF0dXJlKSkgeworICAgICAgICAvLyBUT0RPKHRpbWxvaCk6IDxyYXRpbz4g
aXMgc3VwcG9zZWQgdG8gYWxsb3cgd2hpdGVzcGFjZSBhcm91bmQgdGhlICcvJworICAgICAgICAv
LyBBcHBsaWNhYmxlIHRvIGRldmljZS1hc3BlY3QtcmF0aW8gYW5kIGFzcGVjdC1yYXRpby4KKyAg
ICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIG51bWVyYXRvciA9IHRva2VuTGlzdFswXTsKKyAg
ICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGRlbGltaXRlciA9IHRva2VuTGlzdFsxXTsKKyAg
ICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGRlbm9taW5hdG9yID0gdG9rZW5MaXN0WzJdOwor
ICAgICAgICBpZiAoZGVsaW1pdGVyLnR5cGUoKSAhPSBEZWxpbWl0ZXJUb2tlbiB8fCBkZWxpbWl0
ZXIuZGVsaW1pdGVyKCkgIT0gJy8nKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAo
bnVtZXJhdG9yLnR5cGUoKSAhPSBOdW1iZXJUb2tlbiB8fCBudW1lcmF0b3IubnVtZXJpY1ZhbHVl
KCkgPD0gMCB8fCBudW1lcmF0b3IubnVtZXJpY1ZhbHVlVHlwZSgpICE9IEludGVnZXJWYWx1ZVR5
cGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChkZW5vbWluYXRvci50eXBlKCkg
IT0gTnVtYmVyVG9rZW4gfHwgZGVub21pbmF0b3IubnVtZXJpY1ZhbHVlKCkgPD0gMCB8fCBkZW5v
bWluYXRvci5udW1lcmljVmFsdWVUeXBlKCkgIT0gSW50ZWdlclZhbHVlVHlwZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIG1fdmFsdWUgPSBDU1NBc3BlY3RSYXRpb1Zh
bHVlOjpjcmVhdGUobnVtZXJhdG9yLm51bWVyaWNWYWx1ZSgpLCBkZW5vbWluYXRvci5udW1lcmlj
VmFsdWUoKSk7CisgICAgICAgIG1faXNWYWxpZCA9IHRydWU7CisKKyAgICB9Cit9CisKIFN0cmlu
ZyBNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6c2VyaWFsaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
c2VyaWFsaXphdGlvbkNhY2hlLmlzTnVsbCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhUXVlcnlFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV4cC5oCShyZXZpc2lvbiAyMDUzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxOCArMjcsMjAgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1BhcnNl
clZhbHVlTGlzdDsKLQorICAgIAogLy8gRklYTUU6IFJlbmFtZSB0aGUgZmlsZSB0byBtYXRjaCB0
aGlzIGNsYXNzJ3MgbmFtZS4KIGNsYXNzIE1lZGlhUXVlcnlFeHByZXNzaW9uIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVF1ZXJ5RXhw
cmVzc2lvbihjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSA9IGVtcHR5QXRvbSwgQ1NT
UGFyc2VyVmFsdWVMaXN0KiB2YWx1ZXMgPSBudWxscHRyKTsKKyAgICBleHBsaWNpdCBNZWRpYVF1
ZXJ5RXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3QgVmVjdG9yPENT
U1BhcnNlclRva2VuLCA0PiYgdG9rZW5MaXN0KTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bWVkaWFGZWF0dXJlKCkgY29uc3Q7CiAgICAgQ1NTVmFsdWUqIHZhbHVlKCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUg
Q2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
U1NQYXJzZXJJZGlvbXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlSW5QbGFjZShDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAg
ICAgICBjaGFyYWN0ZXJzW2ldID0gdG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNbaV0pOworfQorCisv
LyBGSVhNRS1ORVdQQVJTRVI6IFdvdWxkIGxpa2UgdG8gZ2V0IHJpZCBvZiB0aGlzIG9wZXJhdGlv
bi4gQmxpbmsgdXNlcyBIVE1MUGFyc2VyIHN0YXRpYyBsb3dlcmNhc2UKKy8vIHN0cmluZyBoYXNo
aW5nLCBidXQgd2UgZG9uJ3QgaGF2ZSB0aGF0IGNvZGUgaW4gb3VyIEhUTUxQYXJzZXIuCit2b2lk
IGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlSW5QbGFjZShTdHJpbmdWaWV3JiBzdHJpbmdWaWV3KQor
eworICAgIGlmIChzdHJpbmdWaWV3LmlzOEJpdCgpKQorICAgICAgICBXZWJDb3JlOjpjb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZUluUGxhY2UoY29uc3RfY2FzdDxMQ2hhcio+KHN0cmluZ1ZpZXcuY2hh
cmFjdGVyczgoKSksIHN0cmluZ1ZpZXcubGVuZ3RoKCkpOworICAgIGVsc2UKKyAgICAgICAgV2Vi
Q29yZTo6Y29udmVydFRvQVNDSUlMb3dlcmNhc2VJblBsYWNlKGNvbnN0X2Nhc3Q8VUNoYXIqPihz
dHJpbmdWaWV3LmNoYXJhY3RlcnMxNigpKSwgc3RyaW5nVmlldy5sZW5ndGgoKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VySWRpb21zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJJZGlvbXMuaAkocmV2aXNpb24gMjA1MzUxKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QAogI2RlZmluZSBDU1NQYXJzZXJJZGlvbXNfaAogCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNTcsNiArNTgsOCBAQCBib29sIGlzTmFtZUNvZGVQb2ludChDaGFyYWN0ZXJUeXBl
IGMpCiAgICAgcmV0dXJuIGlzTmFtZVN0YXJ0Q29kZVBvaW50KGMpIHx8IGlzQVNDSUlEaWdpdChj
KSB8fCBjID09ICctJzsKIH0KIAordm9pZCBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZUluUGxhY2Uo
U3RyaW5nVmlldyYpOworCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJKHJldmlzaW9uIDIwNTM1MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzIsNiArMzMyLDEyIEBAIGJvb2wgQ1NTUGFyc2VyVG9rZW46Omhhc1N0cmluZ0JhY2tpbmcoKSAK
ICAgICAgICAgfHwgdG9rZW5UeXBlID09IFN0cmluZ1Rva2VuOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlSW5QbGFjZShDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAg
ICAgICBjaGFyYWN0ZXJzW2ldID0gdG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNbaV0pOworfQorCiBD
U1NQYXJzZXJUb2tlbiBDU1NQYXJzZXJUb2tlbjo6Y29weVdpdGhVcGRhdGVkU3RyaW5nKGNvbnN0
IFN0cmluZ1ZpZXcmIHN0cmluZykgY29uc3QKIHsKICAgICBDU1NQYXJzZXJUb2tlbiBjb3B5KCp0
aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeUJsb2NrV2F0
Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1
ZXJ5QmxvY2tXYXRjaGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
Ky8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaCIK
KworI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
TWVkaWFRdWVyeUJsb2NrV2F0Y2hlcjo6TWVkaWFRdWVyeUJsb2NrV2F0Y2hlcigpCit7Cit9CisK
K3ZvaWQgTWVkaWFRdWVyeUJsb2NrV2F0Y2hlcjo6aGFuZGxlVG9rZW4oY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuKQoreworICAgIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJz
ZXJUb2tlbjo6QmxvY2tTdGFydCkgeworICAgICAgICArK21fYmxvY2tMZXZlbDsKKyAgICB9IGVs
c2UgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9ja0VuZCkg
eworICAgICAgICBBU1NFUlQobV9ibG9ja0xldmVsKTsKKyAgICAgICAgLS1tX2Jsb2NrTGV2ZWw7
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUg
Q2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZm5kZWYgTWVkaWFRdWVyeUJsb2NrV2F0Y2hlcl9o
CisjZGVmaW5lIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXJfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIENTU1BhcnNlclRva2VuOworCitjbGFzcyBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVy
IHsKK3B1YmxpYzoKKyAgICBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyKCk7CisgICAgdm9pZCBoYW5k
bGVUb2tlbihjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworICAgIHVuc2lnbmVkIGJsb2NrTGV2ZWwo
KSBjb25zdCB7IHJldHVybiBtX2Jsb2NrTGV2ZWw7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25l
ZCBtX2Jsb2NrTGV2ZWwgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzEyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5UGFyc2Vy
LmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJDU1NUb2tlbml6
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UmVmUHRyPE1lZGlhUXVlcnlTZXQ+IE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNl
dChjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQoreworICAgIHJldHVybiBwYXJzZU1lZGlhUXVl
cnlTZXQoQ1NTVG9rZW5pemVyOjpTY29wZShxdWVyeVN0cmluZykudG9rZW5SYW5nZSgpKTsKK30K
KworUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVy
eVNldChDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlKQoreworICAgIHJldHVybiBNZWRpYVF1ZXJ5
UGFyc2VyKE1lZGlhUXVlcnlTZXRQYXJzZXIpLnBhcnNlSW1wbChyYW5nZSk7Cit9CisKK1JlZlB0
cjxNZWRpYVF1ZXJ5U2V0PiBNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhQ29uZGl0aW9uKENT
U1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UpCit7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlQYXJzZXIo
TWVkaWFDb25kaXRpb25QYXJzZXIpLnBhcnNlSW1wbChyYW5nZSk7Cit9CisKK2NvbnN0IE1lZGlh
UXVlcnlQYXJzZXI6OlN0YXRlIE1lZGlhUXVlcnlQYXJzZXI6OlJlYWRSZXN0cmljdG9yID0gJk1l
ZGlhUXVlcnlQYXJzZXI6OnJlYWRSZXN0cmljdG9yOworY29uc3QgTWVkaWFRdWVyeVBhcnNlcjo6
U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6UmVhZE1lZGlhTm90ID0gJk1lZGlhUXVlcnlQYXJzZXI6
OnJlYWRNZWRpYU5vdDsKK2NvbnN0IE1lZGlhUXVlcnlQYXJzZXI6OlN0YXRlIE1lZGlhUXVlcnlQ
YXJzZXI6OlJlYWRNZWRpYVR5cGUgPSAmTWVkaWFRdWVyeVBhcnNlcjo6cmVhZE1lZGlhVHlwZTsK
K2NvbnN0IE1lZGlhUXVlcnlQYXJzZXI6OlN0YXRlIE1lZGlhUXVlcnlQYXJzZXI6OlJlYWRBbmQg
PSAmTWVkaWFRdWVyeVBhcnNlcjo6cmVhZEFuZDsKK2NvbnN0IE1lZGlhUXVlcnlQYXJzZXI6OlN0
YXRlIE1lZGlhUXVlcnlQYXJzZXI6OlJlYWRGZWF0dXJlU3RhcnQgPSAmTWVkaWFRdWVyeVBhcnNl
cjo6cmVhZEZlYXR1cmVTdGFydDsKK2NvbnN0IE1lZGlhUXVlcnlQYXJzZXI6OlN0YXRlIE1lZGlh
UXVlcnlQYXJzZXI6OlJlYWRGZWF0dXJlID0gJk1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJl
OworY29uc3QgTWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6UmVhZEZl
YXR1cmVDb2xvbiA9ICZNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZUNvbG9uOworY29uc3Qg
TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6UmVhZEZlYXR1cmVWYWx1
ZSA9ICZNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZVZhbHVlOworY29uc3QgTWVkaWFRdWVy
eVBhcnNlcjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6UmVhZEZlYXR1cmVFbmQgPSAmTWVkaWFR
dWVyeVBhcnNlcjo6cmVhZEZlYXR1cmVFbmQ7Citjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0
ZSBNZWRpYVF1ZXJ5UGFyc2VyOjpTa2lwVW50aWxDb21tYSA9ICZNZWRpYVF1ZXJ5UGFyc2VyOjpz
a2lwVW50aWxDb21tYTsKK2NvbnN0IE1lZGlhUXVlcnlQYXJzZXI6OlN0YXRlIE1lZGlhUXVlcnlQ
YXJzZXI6OlNraXBVbnRpbEJsb2NrRW5kID0gJk1lZGlhUXVlcnlQYXJzZXI6OnNraXBVbnRpbEJs
b2NrRW5kOworY29uc3QgTWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6
RG9uZSA9ICZNZWRpYVF1ZXJ5UGFyc2VyOjpkb25lOworCitNZWRpYVF1ZXJ5UGFyc2VyOjpNZWRp
YVF1ZXJ5UGFyc2VyKFBhcnNlclR5cGUgcGFyc2VyVHlwZSkKKyAgICA6IG1fcGFyc2VyVHlwZShw
YXJzZXJUeXBlKQorICAgICwgbV9xdWVyeVNldChNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoKSkKK3sK
KyAgICBpZiAocGFyc2VyVHlwZSA9PSBNZWRpYVF1ZXJ5U2V0UGFyc2VyKQorICAgICAgICBtX3N0
YXRlID0gJk1lZGlhUXVlcnlQYXJzZXI6OnJlYWRSZXN0cmljdG9yOworICAgIGVsc2UgLy8gTWVk
aWFDb25kaXRpb25QYXJzZXIKKyAgICAgICAgbV9zdGF0ZSA9ICZNZWRpYVF1ZXJ5UGFyc2VyOjpy
ZWFkTWVkaWFOb3Q7Cit9CisKK01lZGlhUXVlcnlQYXJzZXI6On5NZWRpYVF1ZXJ5UGFyc2VyKCkg
eyB9CisKK3ZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6c2V0U3RhdGVBbmRSZXN0cmljdChTdGF0ZSBz
dGF0ZSwgTWVkaWFRdWVyeTo6UmVzdHJpY3RvciByZXN0cmljdG9yKQoreworICAgIG1fbWVkaWFR
dWVyeURhdGEuc2V0UmVzdHJpY3RvcihyZXN0cmljdG9yKTsKKyAgICBtX3N0YXRlID0gc3RhdGU7
Cit9CisKKy8vIFN0YXRlIG1hY2hpbmUgbWVtYmVyIGZ1bmN0aW9ucyBzdGFydCBoZXJlCit2b2lk
IE1lZGlhUXVlcnlQYXJzZXI6OnJlYWRSZXN0cmljdG9yKENTU1BhcnNlclRva2VuVHlwZSB0eXBl
LCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgcmVhZE1lZGlhVHlwZSh0eXBl
LCB0b2tlbik7Cit9CisKK3ZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6cmVhZE1lZGlhTm90KENTU1Bh
cnNlclRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAg
aWYgKHR5cGUgPT0gSWRlbnRUb2tlbiAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZh
bHVlKCksICJub3QiKSkKKyAgICAgICAgc2V0U3RhdGVBbmRSZXN0cmljdChSZWFkRmVhdHVyZVN0
YXJ0LCBNZWRpYVF1ZXJ5OjpOb3QpOworICAgIGVsc2UKKyAgICAgICAgcmVhZEZlYXR1cmVTdGFy
dCh0eXBlLCB0b2tlbik7Cit9CisKK3N0YXRpYyBib29sIGlzUmVzdHJpY3Rvck9yTG9naWNhbE9w
ZXJhdG9yKGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICAvLyBGSVhNRTogaXQg
d291bGQgYmUgbW9yZSBlZmZpY2llbnQgdG8gdXNlIGxvd2VyLWNhc2UgYWx3YXlzIGZvciB0b2tl
blZhbHVlLgorICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCks
ICJub3QiKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCks
ICJhbmQiKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCks
ICJvciIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwg
Im9ubHkiKTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkTWVkaWFUeXBlKENTU1Bh
cnNlclRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAg
aWYgKHR5cGUgPT0gTGVmdFBhcmVudGhlc2lzVG9rZW4pIHsKKyAgICAgICAgaWYgKG1fbWVkaWFR
dWVyeURhdGEucmVzdHJpY3RvcigpICE9IE1lZGlhUXVlcnk6Ok5vbmUpCisgICAgICAgICAgICBt
X3N0YXRlID0gU2tpcFVudGlsQ29tbWE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fc3Rh
dGUgPSBSZWFkRmVhdHVyZTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gSWRlbnRUb2tlbikgewor
ICAgICAgICBpZiAobV9zdGF0ZSA9PSBSZWFkUmVzdHJpY3RvciAmJiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKHRva2VuLnZhbHVlKCksICJub3QiKSkgeworICAgICAgICAgICAgc2V0U3RhdGVBbmRS
ZXN0cmljdChSZWFkTWVkaWFUeXBlLCBNZWRpYVF1ZXJ5OjpOb3QpOworICAgICAgICB9IGVsc2Ug
aWYgKG1fc3RhdGUgPT0gUmVhZFJlc3RyaWN0b3IgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0
b2tlbi52YWx1ZSgpLCAib25seSIpKSB7CisgICAgICAgICAgICBzZXRTdGF0ZUFuZFJlc3RyaWN0
KFJlYWRNZWRpYVR5cGUsIE1lZGlhUXVlcnk6Ok9ubHkpOworICAgICAgICB9IGVsc2UgaWYgKG1f
bWVkaWFRdWVyeURhdGEucmVzdHJpY3RvcigpICE9IE1lZGlhUXVlcnk6Ok5vbmUKKyAgICAgICAg
ICAgICYmIGlzUmVzdHJpY3Rvck9yTG9naWNhbE9wZXJhdG9yKHRva2VuKSkgeworICAgICAgICAg
ICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgU3RyaW5nVmlldyBzdHJpbmdWaWV3ID0gdG9rZW4udmFsdWUoKTsKKyAgICAgICAgICAgIGNv
bnZlcnRUb0FTQ0lJTG93ZXJjYXNlSW5QbGFjZShzdHJpbmdWaWV3KTsKKyAgICAgICAgICAgIG1f
bWVkaWFRdWVyeURhdGEuc2V0TWVkaWFUeXBlKHN0cmluZ1ZpZXcudG9TdHJpbmcoKSk7CisgICAg
ICAgICAgICBtX3N0YXRlID0gUmVhZEFuZDsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlw
ZSA9PSBFT0ZUb2tlbiAmJiAoIW1fcXVlcnlTZXQtPnF1ZXJ5VmVjdG9yKCkuc2l6ZSgpIHx8IG1f
c3RhdGUgIT0gUmVhZFJlc3RyaWN0b3IpKQorICAgICAgICBtX3N0YXRlID0gRG9uZTsKKyAgICBl
bHNlIHsKKyAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOworICAgICAgICBpZiAodHlw
ZSA9PSBDb21tYVRva2VuKQorICAgICAgICAgICAgc2tpcFVudGlsQ29tbWEodHlwZSwgdG9rZW4p
OworICAgIH0KK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpjb21taXRNZWRpYVF1ZXJ5KCkK
K3sKKyAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IENvbnZvbHV0ZWQgYW5kIGF3ZnVsLCBidXQgd2Ug
Y2FuJ3QgY2hhbmdlIHRoZSBNZWRpYVF1ZXJ5U2V0IHlldCBiZWNhdXNlIG9mIHRoZQorICAgIC8v
IG9sZCBwYXJzZXIuCisgICAgTWVkaWFRdWVyeSBtZWRpYVF1ZXJ5ID0gTWVkaWFRdWVyeShtX21l
ZGlhUXVlcnlEYXRhLnJlc3RyaWN0b3IoKSwgbV9tZWRpYVF1ZXJ5RGF0YS5tZWRpYVR5cGUoKSwg
V1RGTW92ZShtX21lZGlhUXVlcnlEYXRhLmV4cHJlc3Npb25zKCkpKTsKKyAgICBtX21lZGlhUXVl
cnlEYXRhLmNsZWFyKCk7CisgICAgbV9xdWVyeVNldC0+YWRkTWVkaWFRdWVyeShXVEZNb3ZlKG1l
ZGlhUXVlcnkpKTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkQW5kKENTU1BhcnNl
clRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgaWYg
KHR5cGUgPT0gSWRlbnRUb2tlbiAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVl
KCksICJhbmQiKSkgeworICAgICAgICBtX3N0YXRlID0gUmVhZEZlYXR1cmVTdGFydDsKKyAgICB9
IGVsc2UgaWYgKHR5cGUgPT0gQ29tbWFUb2tlbiAmJiBtX3BhcnNlclR5cGUgIT0gTWVkaWFDb25k
aXRpb25QYXJzZXIpIHsKKyAgICAgICAgY29tbWl0TWVkaWFRdWVyeSgpOworICAgICAgICBtX3N0
YXRlID0gUmVhZFJlc3RyaWN0b3I7CisgICAgfSBlbHNlIGlmICh0eXBlID09IEVPRlRva2VuKQor
ICAgICAgICBtX3N0YXRlID0gRG9uZTsKKyAgICBlbHNlCisgICAgICAgIG1fc3RhdGUgPSBTa2lw
VW50aWxDb21tYTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZVN0YXJ0
KENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgLyp0b2tlbiov
KQoreworICAgIGlmICh0eXBlID09IExlZnRQYXJlbnRoZXNpc1Rva2VuKQorICAgICAgICBtX3N0
YXRlID0gUmVhZEZlYXR1cmU7CisgICAgZWxzZQorICAgICAgICBtX3N0YXRlID0gU2tpcFVudGls
Q29tbWE7Cit9CisKK3ZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1cmUoQ1NTUGFyc2Vy
VG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAo
dHlwZSA9PSBJZGVudFRva2VuKSB7CisgICAgICAgIG1fbWVkaWFRdWVyeURhdGEuc2V0TWVkaWFG
ZWF0dXJlKHRva2VuLnZhbHVlKCkudG9TdHJpbmcoKSk7CisgICAgICAgIG1fc3RhdGUgPSBSZWFk
RmVhdHVyZUNvbG9uOworICAgIH0gZWxzZQorICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQ29t
bWE7Cit9CisKK3ZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1cmVDb2xvbihDU1NQYXJz
ZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuKQoreworICAgIGlm
ICh0eXBlID09IENvbG9uVG9rZW4pCisgICAgICAgIG1fc3RhdGUgPSBSZWFkRmVhdHVyZVZhbHVl
OworICAgIGVsc2UgaWYgKHR5cGUgPT0gUmlnaHRQYXJlbnRoZXNpc1Rva2VuIHx8IHR5cGUgPT0g
RU9GVG9rZW4pCisgICAgICAgIHJlYWRGZWF0dXJlRW5kKHR5cGUsIHRva2VuKTsKKyAgICBlbHNl
CisgICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxCbG9ja0VuZDsKK30KKwordm9pZCBNZWRpYVF1
ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZVZhbHVlKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBjb25z
dCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgaWYgKHR5cGUgPT0gRGltZW5zaW9uVG9r
ZW4gJiYgdG9rZW4udW5pdFR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpD
U1NfVU5LTk9XTikKKyAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOworICAgIGVsc2Ug
eworICAgICAgICBpZiAobV9tZWRpYVF1ZXJ5RGF0YS50cnlBZGRQYXJzZXJUb2tlbih0eXBlLCB0
b2tlbikpCisgICAgICAgICAgICBtX3N0YXRlID0gUmVhZEZlYXR1cmVFbmQ7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxCbG9ja0VuZDsKKyAgICB9Cit9CisK
K3ZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1cmVFbmQoQ1NTUGFyc2VyVG9rZW5UeXBl
IHR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAodHlwZSA9PSBS
aWdodFBhcmVudGhlc2lzVG9rZW4gfHwgdHlwZSA9PSBFT0ZUb2tlbikgeworICAgICAgICBpZiAo
bV9tZWRpYVF1ZXJ5RGF0YS5hZGRFeHByZXNzaW9uKCkpCisgICAgICAgICAgICBtX3N0YXRlID0g
UmVhZEFuZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENv
bW1hOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBEZWxpbWl0ZXJUb2tlbiAmJiB0b2tlbi5kZWxp
bWl0ZXIoKSA9PSAnLycpIHsKKyAgICAgICAgbV9tZWRpYVF1ZXJ5RGF0YS50cnlBZGRQYXJzZXJU
b2tlbih0eXBlLCB0b2tlbik7CisgICAgICAgIG1fc3RhdGUgPSBSZWFkRmVhdHVyZVZhbHVlOwor
ICAgIH0gZWxzZQorICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQmxvY2tFbmQ7Cit9CisKK3Zv
aWQgTWVkaWFRdWVyeVBhcnNlcjo6c2tpcFVudGlsQ29tbWEoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5
cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiAvKnRva2VuKi8pCit7CisgICAgaWYgKCh0eXBlID09
IENvbW1hVG9rZW4gJiYgIW1fYmxvY2tXYXRjaGVyLmJsb2NrTGV2ZWwoKSkgfHwgdHlwZSA9PSBF
T0ZUb2tlbikgeworICAgICAgICBtX3N0YXRlID0gUmVhZFJlc3RyaWN0b3I7CisgICAgICAgIG1f
bWVkaWFRdWVyeURhdGEuY2xlYXIoKTsKKyAgICAgICAgTWVkaWFRdWVyeSBxdWVyeSA9IE1lZGlh
UXVlcnkoTWVkaWFRdWVyeTo6Tm9uZSwgImFsbCIsIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwcmVzc2lv
bj4oKSk7CisgICAgICAgIG1fcXVlcnlTZXQtPmFkZE1lZGlhUXVlcnkoV1RGTW92ZShxdWVyeSkp
OworICAgIH0KK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpza2lwVW50aWxCbG9ja0VuZChD
U1NQYXJzZXJUb2tlblR5cGUgLyp0eXBlICovLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4p
Cit7CisgICAgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9j
a0VuZCAmJiAhbV9ibG9ja1dhdGNoZXIuYmxvY2tMZXZlbCgpKQorICAgICAgICBtX3N0YXRlID0g
U2tpcFVudGlsQ29tbWE7Cit9CisKK3ZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6ZG9uZShDU1NQYXJz
ZXJUb2tlblR5cGUgLyp0eXBlKi8sIGNvbnN0IENTU1BhcnNlclRva2VuJiAvKnRva2VuKi8pIHsg
fQorCit2b2lkIE1lZGlhUXVlcnlQYXJzZXI6OmhhbmRsZUJsb2Nrcyhjb25zdCBDU1NQYXJzZXJU
b2tlbiYgdG9rZW4pCit7CisgICAgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNl
clRva2VuOjpCbG9ja1N0YXJ0CisgICAgICAgICYmICh0b2tlbi50eXBlKCkgIT0gTGVmdFBhcmVu
dGhlc2lzVG9rZW4gfHwgbV9ibG9ja1dhdGNoZXIuYmxvY2tMZXZlbCgpKSkKKyAgICAgICAgICAg
IG1fc3RhdGUgPSBTa2lwVW50aWxCbG9ja0VuZDsKK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2Vy
Ojpwcm9jZXNzVG9rZW4oY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuKQoreworICAgIENTU1Bh
cnNlclRva2VuVHlwZSB0eXBlID0gdG9rZW4udHlwZSgpOworCisgICAgaGFuZGxlQmxvY2tzKHRv
a2VuKTsKKyAgICBtX2Jsb2NrV2F0Y2hlci5oYW5kbGVUb2tlbih0b2tlbik7CisKKyAgICAvLyBD
YWxsIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgY3VycmVudCBzdGF0ZQorICAgIGlmICh0eXBl
ICE9IFdoaXRlc3BhY2VUb2tlbikKKyAgICAgICAgKCh0aGlzKS0+KihtX3N0YXRlKSkodHlwZSwg
dG9rZW4pOworfQorCisvLyBUaGUgc3RhdGUgbWFjaGluZSBsb29wCitSZWZQdHI8TWVkaWFRdWVy
eVNldD4gTWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VJbXBsKENTU1BhcnNlclRva2VuUmFuZ2UgcmFu
Z2UpCit7CisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpKQorICAgICAgICBwcm9jZXNzVG9rZW4o
cmFuZ2UuY29uc3VtZSgpKTsKKworICAgIC8vIEZJWE1FOiBDYW4gd2UgZ2V0IHJpZCBvZiB0aGlz
IHNwZWNpYWwgY2FzZT8KKyAgICBpZiAobV9wYXJzZXJUeXBlID09IE1lZGlhUXVlcnlTZXRQYXJz
ZXIpCisgICAgICAgIHByb2Nlc3NUb2tlbihDU1NQYXJzZXJUb2tlbihFT0ZUb2tlbikpOworCisg
ICAgaWYgKG1fc3RhdGUgIT0gUmVhZEFuZCAmJiBtX3N0YXRlICE9IFJlYWRSZXN0cmljdG9yICYm
IG1fc3RhdGUgIT0gRG9uZSAmJiBtX3N0YXRlICE9IFJlYWRNZWRpYU5vdCkgeworICAgICAgICBN
ZWRpYVF1ZXJ5IHF1ZXJ5ID0gTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpOb25lLCAiYWxsIiwgVmVj
dG9yPE1lZGlhUXVlcnlFeHByZXNzaW9uPigpKTsKKyAgICAgICAgbV9xdWVyeVNldC0+YWRkTWVk
aWFRdWVyeShXVEZNb3ZlKHF1ZXJ5KSk7CisgICAgfSBlbHNlIGlmIChtX21lZGlhUXVlcnlEYXRh
LmN1cnJlbnRNZWRpYVF1ZXJ5Q2hhbmdlZCgpKQorICAgICAgICBjb21taXRNZWRpYVF1ZXJ5KCk7
CisKKyAgICByZXR1cm4gbV9xdWVyeVNldDsKK30KKworTWVkaWFRdWVyeURhdGE6Ok1lZGlhUXVl
cnlEYXRhKCkKKyAgICA6IG1fcmVzdHJpY3RvcihNZWRpYVF1ZXJ5OjpOb25lKQorICAgICwgbV9t
ZWRpYVR5cGUoImFsbCIpCisgICAgLCBtX21lZGlhVHlwZVNldChmYWxzZSkKK3sKK30KKwordm9p
ZCBNZWRpYVF1ZXJ5RGF0YTo6Y2xlYXIoKQoreworICAgIG1fcmVzdHJpY3RvciA9IE1lZGlhUXVl
cnk6Ok5vbmU7CisgICAgbV9tZWRpYVR5cGUgPSAiYWxsIjsKKyAgICBtX21lZGlhVHlwZVNldCA9
IGZhbHNlOworICAgIG1fbWVkaWFGZWF0dXJlID0gU3RyaW5nKCk7CisgICAgbV92YWx1ZUxpc3Qu
Y2xlYXIoKTsKKyAgICBtX2V4cHJlc3Npb25zLmNsZWFyKCk7Cit9CisKK2Jvb2wgTWVkaWFRdWVy
eURhdGE6OmFkZEV4cHJlc3Npb24oKQoreworICAgIE1lZGlhUXVlcnlFeHByZXNzaW9uIGV4cHJl
c3Npb24gPSBNZWRpYVF1ZXJ5RXhwcmVzc2lvbihtX21lZGlhRmVhdHVyZSwgbV92YWx1ZUxpc3Qp
OworICAgIGJvb2wgaXNWYWxpZCA9IGV4cHJlc3Npb24uaXNWYWxpZCgpOworICAgIG1fZXhwcmVz
c2lvbnMuYXBwZW5kKFdURk1vdmUoZXhwcmVzc2lvbikpOworICAgIG1fdmFsdWVMaXN0LmNsZWFy
KCk7CisgICAgcmV0dXJuIGlzVmFsaWQ7Cit9CisKK2Jvb2wgTWVkaWFRdWVyeURhdGE6OnRyeUFk
ZFBhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tl
biYgdG9rZW4pCit7CisgICAgaWYgKHR5cGUgPT0gTnVtYmVyVG9rZW4gfHwgdHlwZSA9PSBQZXJj
ZW50YWdlVG9rZW4gfHwgdHlwZSA9PSBEaW1lbnNpb25Ub2tlbgorICAgICAgICB8fCB0eXBlID09
IERlbGltaXRlclRva2VuIHx8IHR5cGUgPT0gSWRlbnRUb2tlbikgeworICAgICAgICBtX3ZhbHVl
TGlzdC5hcHBlbmQodG9rZW4pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFRdWVyeURhdGE6OnNldE1lZGlhVHlwZShjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSkKK3sKKyAgICBtX21lZGlhVHlwZSA9IG1lZGlhVHlwZTsKKyAg
ICBtX21lZGlhVHlwZVNldCA9IHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNzb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhl
IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIE1lZGlhUXVlcnlQYXJzZXJfaAorI2Rl
ZmluZSBNZWRpYVF1ZXJ5UGFyc2VyX2gKKworI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCisj
aW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgor
I2luY2x1ZGUgIk1lZGlhUXVlcnkuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVy
LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhUXVlcnlTZXQ7CisK
K2NsYXNzIE1lZGlhUXVlcnlEYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVF1
ZXJ5RGF0YSk7Citwcml2YXRlOgorICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgbV9yZXN0cmlj
dG9yOworICAgIFN0cmluZyBtX21lZGlhVHlwZTsKKyAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cHJl
c3Npb24+IG1fZXhwcmVzc2lvbnM7CisgICAgU3RyaW5nIG1fbWVkaWFGZWF0dXJlOworICAgIFZl
Y3RvcjxDU1NQYXJzZXJUb2tlbiwgND4gbV92YWx1ZUxpc3Q7CisgICAgYm9vbCBtX21lZGlhVHlw
ZVNldDsKKworcHVibGljOgorICAgIE1lZGlhUXVlcnlEYXRhKCk7CisgICAgdm9pZCBjbGVhcigp
OworICAgIGJvb2wgYWRkRXhwcmVzc2lvbigpOworICAgIGJvb2wgdHJ5QWRkUGFyc2VyVG9rZW4o
Q1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworICAgIHZvaWQgc2V0
TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOworICAgIAorICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0
b3IgcmVzdHJpY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3RvcjsgfTsKKyAgICBWZWN0
b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+JiBleHByZXNzaW9ucygpIHsgcmV0dXJuIG1fZXhwcmVz
c2lvbnM7IH0KKyAgICBTdHJpbmcgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVR5
cGU7IH0KKyAgICAKKyAgICBpbmxpbmUgYm9vbCBjdXJyZW50TWVkaWFRdWVyeUNoYW5nZWQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIChtX3Jlc3RyaWN0b3IgIT0gTWVkaWFRdWVyeTo6
Tm9uZSB8fCBtX21lZGlhVHlwZVNldCB8fCBtX2V4cHJlc3Npb25zLnNpemUoKSA+IDApOworICAg
IH0KKyAgICBpbmxpbmUgTWVkaWFRdWVyeTo6UmVzdHJpY3RvciByZXN0cmljdG9yKCkgeyByZXR1
cm4gbV9yZXN0cmljdG9yOyB9CisKKyAgICBpbmxpbmUgdm9pZCBzZXRSZXN0cmljdG9yKE1lZGlh
UXVlcnk6OlJlc3RyaWN0b3IgcmVzdHJpY3RvcikgeyBtX3Jlc3RyaWN0b3IgPSByZXN0cmljdG9y
OyB9CisKKyAgICBpbmxpbmUgdm9pZCBzZXRNZWRpYUZlYXR1cmUoY29uc3QgU3RyaW5nJiBzdHIp
IHsgbV9tZWRpYUZlYXR1cmUgPSBzdHI7IH0KK307CisKK2NsYXNzIE1lZGlhUXVlcnlQYXJzZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUXVlcnlQYXJzZXIpOworcHVibGljOgor
ICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFRdWVyeVNldD4gcGFyc2VNZWRpYVF1ZXJ5U2V0KGNvbnN0
IFN0cmluZyYpOworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFRdWVyeVNldD4gcGFyc2VNZWRpYVF1
ZXJ5U2V0KENTU1BhcnNlclRva2VuUmFuZ2UpOworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFRdWVy
eVNldD4gcGFyc2VNZWRpYUNvbmRpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlKTsKKworcHJpdmF0
ZToKKyAgICBlbnVtIFBhcnNlclR5cGUgeworICAgICAgICBNZWRpYVF1ZXJ5U2V0UGFyc2VyLAor
ICAgICAgICBNZWRpYUNvbmRpdGlvblBhcnNlciwKKyAgICB9OworCisgICAgTWVkaWFRdWVyeVBh
cnNlcihQYXJzZXJUeXBlKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVF1ZXJ5UGFyc2VyKCk7CisKKyAg
ICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gcGFyc2VJbXBsKENTU1BhcnNlclRva2VuUmFuZ2UpOwor
CisgICAgdm9pZCBwcm9jZXNzVG9rZW4oY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKworICAgIHZv
aWQgcmVhZFJlc3RyaWN0b3IoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tl
biYpOworICAgIHZvaWQgcmVhZE1lZGlhTm90KENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NT
UGFyc2VyVG9rZW4mKTsKKyAgICB2b2lkIHJlYWRNZWRpYVR5cGUoQ1NTUGFyc2VyVG9rZW5UeXBl
LCBjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworICAgIHZvaWQgcmVhZEFuZChDU1NQYXJzZXJUb2tl
blR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJik7CisgICAgdm9pZCByZWFkRmVhdHVyZVN0YXJ0
KENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAgICB2b2lkIHJl
YWRGZWF0dXJlKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAg
ICB2b2lkIHJlYWRGZWF0dXJlQ29sb24oQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJz
ZXJUb2tlbiYpOworICAgIHZvaWQgcmVhZEZlYXR1cmVWYWx1ZShDU1NQYXJzZXJUb2tlblR5cGUs
IGNvbnN0IENTU1BhcnNlclRva2VuJik7CisgICAgdm9pZCByZWFkRmVhdHVyZUVuZChDU1NQYXJz
ZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJik7CisgICAgdm9pZCBza2lwVW50aWxD
b21tYShDU1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJik7CisgICAgdm9p
ZCBza2lwVW50aWxCbG9ja0VuZChDU1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRv
a2VuJik7CisgICAgdm9pZCBkb25lKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mKTsKKworICAgIHVzaW5nIFN0YXRlID0gdm9pZCAoTWVkaWFRdWVyeVBhcnNlcjo6Kiko
Q1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworCisgICAgdm9pZCBz
ZXRTdGF0ZUFuZFJlc3RyaWN0KFN0YXRlLCBNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yKTsKKyAgICB2
b2lkIGhhbmRsZUJsb2Nrcyhjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworICAgIAorICAgIHZvaWQg
Y29tbWl0TWVkaWFRdWVyeSgpOworCisgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICBQYXJzZXJUeXBl
IG1fcGFyc2VyVHlwZTsKKyAgICBNZWRpYVF1ZXJ5RGF0YSBtX21lZGlhUXVlcnlEYXRhOworICAg
IFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtX3F1ZXJ5U2V0OworICAgIE1lZGlhUXVlcnlCbG9ja1dh
dGNoZXIgbV9ibG9ja1dhdGNoZXI7CisKKyAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZFJlc3Ry
aWN0b3I7CisgICAgY29uc3Qgc3RhdGljIFN0YXRlIFJlYWRNZWRpYU5vdDsKKyAgICBjb25zdCBz
dGF0aWMgU3RhdGUgUmVhZE1lZGlhVHlwZTsKKyAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZEFu
ZDsKKyAgICBjb25zdCBzdGF0aWMgU3RhdGUgUmVhZEZlYXR1cmVTdGFydDsKKyAgICBjb25zdCBz
dGF0aWMgU3RhdGUgUmVhZEZlYXR1cmU7CisgICAgY29uc3Qgc3RhdGljIFN0YXRlIFJlYWRGZWF0
dXJlQ29sb247CisgICAgY29uc3Qgc3RhdGljIFN0YXRlIFJlYWRGZWF0dXJlVmFsdWU7CisgICAg
Y29uc3Qgc3RhdGljIFN0YXRlIFJlYWRGZWF0dXJlRW5kOworICAgIGNvbnN0IHN0YXRpYyBTdGF0
ZSBTa2lwVW50aWxDb21tYTsKKyAgICBjb25zdCBzdGF0aWMgU3RhdGUgU2tpcFVudGlsQmxvY2tF
bmQ7CisgICAgY29uc3Qgc3RhdGljIFN0YXRlIERvbmU7CisKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIE1lZGlhUXVlcnlQYXJzZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287793</attachid>
            <date>2016-09-02 12:06:47 -0700</date>
            <delta_ts>2016-09-02 12:24:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>52338</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE2LTA5LTAyICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBtZWRpYSBx
dWVyeSBwYXJzaW5nIHVzaW5nIG5ldyBDU1MgUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVy
eUV4cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmZWF0dXJlV2l0aFZhbGlkSWRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZmVhdHVyZVdpdGhWYWxpZERlbnNpdHkpOgorICAgICAgICAoV2ViQ29y
ZTo6ZmVhdHVyZVdpdGhWYWxpZFBvc2l0aXZlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmZl
YXR1cmVXaXRoUG9zaXRpdmVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OmZlYXR1cmVXaXRo
UG9zaXRpdmVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZmVhdHVyZVdpdGhaZXJvT3JPbmUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNGZWF0dXJlVmFsaWRXaXRoSWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6TWVkaWFRdWVyeUV4cHJlc3Npb24p
OgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXhwLmg6CisgICAgICAgICogY3NzL3BhcnNlci9D
U1NQYXJzZXJJZGlvbXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlSW5QbGFjZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlv
bXMuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlSW5QbGFjZSk6CisgICAgICAgICogY3Nz
L3BhcnNlci9NZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyOjpNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlCbG9ja1dhdGNoZXI6OmhhbmRsZVRva2VuKToKKyAg
ICAgICAgKiBjc3MvcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyOjpibG9ja0xldmVsKToKKyAgICAg
ICAgKiBjc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhQ29uZGl0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUXVlcnlQYXJzZXI6Ok1lZGlhUXVlcnlQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6fk1lZGlhUXVlcnlQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6c2V0U3RhdGVBbmRSZXN0cmljdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkUmVzdHJpY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkTWVkaWFOb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNSZXN0cmljdG9yT3JMb2dpY2FsT3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFRdWVyeVBhcnNlcjo6cmVhZE1lZGlhVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1
ZXJ5UGFyc2VyOjpjb21taXRNZWRpYVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVl
cnlQYXJzZXI6OnJlYWRBbmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6
cmVhZEZlYXR1cmVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5UGFyc2VyOjpy
ZWFkRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVh
dHVyZUNvbG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0
dXJlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6cmVhZEZlYXR1
cmVFbmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6c2tpcFVudGlsQ29t
bWEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6c2tpcFVudGlsQmxvY2tF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6ZG9uZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVF1ZXJ5UGFyc2VyOjpoYW5kbGVCbG9ja3MpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFRdWVyeVBhcnNlcjo6cHJvY2Vzc1Rva2VuKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFRdWVyeURhdGE6Ok1lZGlhUXVlcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVl
cnlEYXRhOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RGF0YTo6YWRkRXhw
cmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RGF0YTo6dHJ5QWRkUGFyc2Vy
VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeURhdGE6OnNldE1lZGlhVHlwZSk6
CisgICAgICAgICogY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFRdWVyeURhdGE6OnJlc3RyaWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFRdWVyeURhdGE6OmV4cHJlc3Npb25zKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UXVlcnlEYXRhOjptZWRpYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeURhdGE6
OmN1cnJlbnRNZWRpYVF1ZXJ5Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5
RGF0YTo6c2V0UmVzdHJpY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RGF0YTo6
c2V0TWVkaWFGZWF0dXJlKToKKwogMjAxNi0wOS0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgpIHNob3VsZCB0aHJvdyBj
cm9zcy1vcmlnaW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDUzNTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQwOSw2
ICsxNDA5LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgY3NzL3BhcnNlci9DU1NQYXJz
ZXIuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCisgICAgY3NzL3Bh
cnNlci9DU1NQYXJzZXJJZGlvbXMuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZl
cldyYXBwZXIuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKICAgICBjc3Mv
cGFyc2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwCkBAIC0xNDE3LDYgKzE0MTgsOCBAQCBzZXQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
Y3BwCiAgICAgY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAKKyAgICBjc3MvcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dh
dGNoZXIuY3BwCisgICAgY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAogICAgIGNzcy9w
YXJzZXIvU1ZHQ1NTUGFyc2VyLmNwcAogCiAgICAgY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMDUzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzNTIsNyArMzM1Miw3IEBA
CiAJCTk0NkQzNzNCMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcz
NTFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwICovOyB9Owog
CQk5NDZEMzczQzFENkNERkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzM4MUQ2
Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oICovOyB9OwogCQk5NDZE
MzczRjFENkNFM0MyMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3M0UxRDZDRTMxQTAwNzcwODRG
IC8qIENTU1BhcnNlclRva2VuLmNwcCAqLzsgfTsKLQkJOTQ2RDM3NDAxRDZDRTNDMjAwNzcwODRG
IC8qIENTU1BhcnNlclRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NDZEMzczRDFENkNFMzFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCAq
LzsgfTsKKwkJOTQ2RDM3NDAxRDZDRTNDMjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczRDFENkNF
MzFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NDZEMzc0NDFENkNGN0IyMDA3NzA4NEYgLyogQ1NT
UGFyc2VySWRpb21zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NDZEMzc0MzFENkNGNzg4MDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggKi87IH07
CiAJCTk0NkQzNzQ1MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzc0MTFENkNG
NjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuY3BwICovOyB9OwogCQk5NDZEMzc0NjFE
NkQwMUQ0MDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlci5oICovOyB9OwpAQCAtMzM2MCw2ICszMzYwLDEwIEBACiAJCTk0NkQz
NzRBMUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQ4MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NN
YXJrdXAuaCAqLzsgfTsKIAkJOTQ2RDM3NEQxRDZEMDhBNjAwNzcwODRGIC8qIENTU1BhcnNlclRv
a2VuUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTQ2RDM3NEIxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3BwICov
OyB9OwogCQk5NDZEMzc0RTFENkQwOEFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NEMx
RDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuaCAqLzsgfTsKKwkJOTQ5M0I2
QkUxRDc0QjQxMjAwODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5M0I2QjYxRDc0QjM5NTAw
ODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwICovOyB9OworCQk5NDkzQjZCRjFE
NzRCNDEyMDA4OEU3ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5M0I2QjcxRDc0QjM5NTAwODhFNzgw
IC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaCAqLzsgfTsKKwkJOTQ5M0I2QzAxRDc0QjQxMjAw
ODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5M0I2QjgxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVl
cnlQYXJzZXIuY3BwICovOyB9OworCQk5NDkzQjZDMTFENzRCNDEyMDA4OEU3ODAgLyogTWVkaWFR
dWVyeVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTQ5M0I2QjkxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuaCAqLzsgfTsK
IAkJOTQ5Qzc3MDAxRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzZGRTFENkUx
RDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAqLzsgfTsKIAkJOTQ5Qzc3MDEx
RDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8q
IENTU1BhcnNlckZhc3RQYXRocy5oICovOyB9OwogCQk5NDlDNzcwNDFENkUzOUVBMDBDMERFNEYg
LyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzAyMUQ2RTM5MzUwMEMwREU0RiAvKiBDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuY3BwICovOyB9OwpAQCAtMzM2Nyw2ICszMzcxLDcgQEAKIAkJOTQ5
Qzc3MDgxRDZFNDk4NzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwNjFENkU0
OEVEMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcCAqLzsgfTsKIAkJOTQ5
Qzc3MDkxRDZFNDk4NzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MDcxRDZFNDhF
RDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oICovOyB9OwogCQk5NDlDNzcw
QjFENkU0OUVEMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzBBMUQ2RTQ5QzMwMEMwREU0RiAv
KiBDU1NQYXJzZXJPYnNlcnZlci5oICovOyB9OworCQk5NERFNUM3RTFENzhDQjJFMDAxNjRGMkEg
LyogQ1NTUGFyc2VySWRpb21zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk0REU1QzdEMUQ3OENCMjUwMDE2NEYyQSAvKiBDU1NQYXJzZXJJZGlvbXMu
Y3BwICovOyB9OwogCQk5NkFCQTQyMzE0QkNCODBFMDBENTYyMDQgLyogR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTZBQkE0MjIxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcCAqLzsgfTsKIAkJOTcwM0UxQkYxNURDNEUzNzAwMUYyNEM4IC8qIEpTVm9p
ZENhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3RTlFQzhCMTVEQzQ5MkYwMDRGMkU3MSAvKiBKU1ZvaWRDYWxsYmFjay5jcHAgKi87IH07
CiAJCTk3MDU5OTc3MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzA1OTk3MzEwN0Q5NzUy
MDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3BwICovOyB9OwpAQCAtMTA0OTksNiArMTA1MDQs
MTAgQEAKIAkJOTQ2RDM3NDgxRDZEMDYwQzAwNzcwODRGIC8qIENTU01hcmt1cC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NNYXJrdXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTQ2RDM3NEIxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFu
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyVG9r
ZW5SYW5nZS5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0NkQzNzRDMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJUb2tlblJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1Bh
cnNlclRva2VuUmFuZ2UuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0OTNCNkI2MUQ3NEIzOTUwMDg4RTc4MCAvKiBN
ZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwOyBwYXRoID0gcGFyc2VyL01lZGlhUXVl
cnlCbG9ja1dhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDkzQjZC
NzFENzRCMzk1MDA4OEU3ODAgLyogTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmg7IHBhdGggPSBw
YXJzZXIvTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5NDkzQjZCODFENzRCMzk1MDA4OEU3ODAgLyogTWVkaWFRdWVyeVBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZWRpYVF1ZXJ5UGFyc2VyLmNwcDsg
cGF0aCA9IHBhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTQ5M0I2QjkxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFRdWVyeVBhcnNlci5oOyBwYXRo
ID0gcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTQ5Qzc2RkUxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQYXJzZXJGYXN0UGF0aHMuY3Bw
OyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk0OUM3NkZGMUQ2RTFEOEMwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0
aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyRmFzdFBhdGhz
Lmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk0OUM3NzAyMUQ2RTM5MzUwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1MDYsNiArMTA1MTUs
NyBAQAogCQk5NDlDNzcwNjFENkU0OEVEMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlck9i
c2VydmVyV3JhcHBlci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ5Qzc3MDcxRDZFNDhFRDAwQzBE
RTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJPYnNlcnZlcldyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ5
Qzc3MEExRDZFNDlDMzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlck9ic2VydmVyLmg7IHBhdGggPSBwYXJzZXIv
Q1NTUGFyc2VyT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTRERTVD
N0QxRDc4Q0IyNTAwMTY0RjJBIC8qIENTU1BhcnNlcklkaW9tcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQYXJzZXJJZGlvbXMuY3BwOyBwYXRoID0gcGFyc2Vy
L0NTU1BhcnNlcklkaW9tcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEM0
QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdHcmFwaGljc0VsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTZBQkE0MjIxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzMxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTQyLDYgKzE4MTUyLDcgQEAK
IAkJCQk5NDZEMzcyOTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyLmggKi8sCiAJCQkJOTQ5
Qzc2RkUxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5jcHAgKi8sCiAJCQkJ
OTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oICovLAorCQkJ
CTk0REU1QzdEMUQ3OENCMjUwMDE2NEYyQSAvKiBDU1NQYXJzZXJJZGlvbXMuY3BwICovLAogCQkJ
CTk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlvbXMuaCAqLywKIAkJCQk5
NDZEMzcyQTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5oICovLAogCQkJCTk0OUM3
NzBBMUQ2RTQ5QzMwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlci5oICovLApAQCAtMTgxNjEs
NiArMTgxNzIsMTAgQEAKIAkJCQk5NDZEMzczNzFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5p
emVyLmggKi8sCiAJCQkJOTQ2RDM3MzUxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplcklu
cHV0U3RyZWFtLmNwcCAqLywKIAkJCQk5NDZEMzczODFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9r
ZW5pemVySW5wdXRTdHJlYW0uaCAqLywKKwkJCQk5NDkzQjZCNjFENzRCMzk1MDA4OEU3ODAgLyog
TWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5jcHAgKi8sCisJCQkJOTQ5M0I2QjcxRDc0QjM5NTAwODhF
NzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaCAqLywKKwkJCQk5NDkzQjZCODFENzRCMzk1
MDA4OEU3ODAgLyogTWVkaWFRdWVyeVBhcnNlci5jcHAgKi8sCisJCQkJOTQ5M0I2QjkxRDc0QjM5
NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuaCAqLywKIAkJCQk5NDZEMzczMjFENkNDMzcy
MDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gcGFyc2Vy
OwpAQCAtMjYwMDQsNiArMjYwMTksNyBAQAogCQkJCUFCRERGRTdBMEE1QzZFNzAwMEEzRTExRCAv
KiBSZW5kZXJNZW51TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTQ1NDQyNEYxMTlCMzY4NzAw
OUJFOTEyIC8qIFJlbmRlck1ldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTM1ODZFMDE1MjY0
QzQ1MDAyMkE2NTkgLyogUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5NDkzQjZDMTFENzRCNDEyMDA4OEU3ODAgLyogTWVkaWFRdWVyeVBhcnNlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFMzJCOUMxNTE3QzBCMjAwRjU0MkVDIC8qIFJlbmRlck11bHRp
Q29sdW1uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBN0Q5ODE4RkNCNUIwMDA0MjE4Nzkg
LyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCThBQzgyMkZEMTgwRkMwMzMwMEZCNjRENSAvKiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjkxMyw2ICsyNjkyOSw3IEBACiAJCQkJQTE0ODMyQ0MxODdG
NjdDNDAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
NDgzMkNEMTg3RjY4MkUwMERBNjNBNiAvKiBXZWJDb3JlVGhyZWFkU2FmZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTE0ODMyQ0YxODdGNjg0NzAwREE2M0E2IC8qIFdlYkNvcmVUaHJlYWRTeXN0ZW1J
bnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0OTNCNkJGMUQ3NEI0MTIwMDg4RTc4MCAv
KiBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA5OUQwOTE3
Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzN0Y4MThGRDBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEEyMERCOTBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDU1LDYgKzI3NDcyLDcgQEAK
IAkJCQkxQThBNjQ1QjFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RT
ZWxlY3RlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEE2NDVGMUQxOUZDRkMwMEQw
RTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQThBNjQ2MjFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlWYWxpZGF0ZU1l
cmNoYW50RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ5M0I2QkUxRDc0QjQxMjAwODhF
NzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4
RjZCQkMwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE4RjZCQkUwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNEY1NEVBQzEwMUZFOTE0MDAwQUU3NDEgLyogQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODEzOCw2ICsyODE1Niw3
IEBACiAJCQkJNDk5QjNFRDYxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkEyNEQ3OTE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NM
YXllclVwZGF0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBMDE1QUEwQUY2Q0Q1MzAwNkJD
RTBFIC8qIEdyYXBoaWNzVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ5M0I2QzAxRDc0
QjQxMjAwODhFNzgwIC8qIE1lZGlhUXVlcnlQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RGNzQ4M0UxOEZFQkNFQzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGNTVCM0RCRjEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRU
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNUJFMTlCMUQ1NEY2QzEwMEREN0M2OCAvKiBI
SURHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk0NTUsNiArMjk0NzQsNyBAQAogCQkJ
CThBRjRFNTU1MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODY1MTJFREUxNTRBMkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNl
UmVzb3VyY2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0M0M4NUQxODlFMTBDRjAw
MDE5QUUyIC8qIFBlcmZvcm1hbmNlVGltaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0REU1
QzdFMUQ3OENCMkUwMDE2NEYyQSAvKiBDU1NQYXJzZXJJZGlvbXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkQ1ODFGQjQxNTIwRjkzQjAwM0E3QTc1IC8qIFBlcmlvZGljV2F2ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0OUQ1REMyRDBGNDIzQTczMDA4RjIwRkQgLyogUGVyc3BlY3RpdmVUcmFu
c2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDBGRjJBNUQxMUY4QzQ1QTAw
N0U3NEUwIC8qIFBpbmdMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFeHAuY3BwCShyZXZpc2lvbiAyMDUzNTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDggQEAK
IAogI2luY2x1ZGUgIkNTU0FzcGVjdFJhdGlvVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIu
aCIKKyNpbmNsdWRlICJDU1NQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tl
bi5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVM
aXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIKQEAgLTM3LDIxICszOSw5MSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZlYXR1cmVW
YWxpZFdpdGhJZGVudGlmaWVyKGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25z
dCBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgZmVhdHVyZVdpdGhW
YWxpZElkZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlKQogewotICAgIGlmICgh
dmFsdWUuaWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiBtZWRpYUZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om9yaWVudGF0aW9uCiAjaWYgRU5BQkxFKFZJRVdfTU9E
RV9DU1NfTUVESUEpCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1l
czo6dmlld01vZGUKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnZp
ZXdNb2RlCiAjZW5kaWYKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjpjb2xvckdhbXV0Ci0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6YW55SG92ZXIKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjphbnlQb2ludGVyCi0gICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6aG92ZXIKLSAgICAgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
OjppbnZlcnRlZENvbG9ycwotICAgICAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJl
TmFtZXM6OnBvaW50ZXI7CisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVz
Ojpjb2xvckdhbXV0CisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjph
bnlIb3ZlcgorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YW55UG9p
bnRlcgorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aG92ZXIKKyAg
ICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmludmVydGVkQ29sb3JzCisg
ICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpwb2ludGVyOworfQorICAg
IAorc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoVmFsaWREZW5zaXR5KGNvbnN0IFN0cmlu
ZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgaWYg
KCh0b2tlbi51bml0VHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19E
UFBYICYmIHRva2VuLnVuaXRUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX0RQSSAmJiB0b2tlbi51bml0VHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXM6OkNTU19EUENNKSB8fCB0b2tlbi5udW1lcmljVmFsdWUoKSA8PSAwKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6cmVzb2x1dGlvbgorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1l
czo6bWluUmVzb2x1dGlvbgorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1l
czo6bWF4UmVzb2x1dGlvbjsKK30KKworc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRoVmFs
aWRQb3NpdGl2ZUxlbmd0aChjb25zdCBTdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIHRva2VuKQoreworICAgIGlmICghKENTU1ByaW1pdGl2ZVZhbHVlOjppc0xlbmd0
aCh0b2tlbi51bml0VHlwZSgpKSB8fCAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuICYmICF0
b2tlbi5udW1lcmljVmFsdWUoKSkpIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIAorICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0g
TWVkaWFGZWF0dXJlTmFtZXM6OmhlaWdodAorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZl
YXR1cmVOYW1lczo6bWF4SGVpZ2h0CisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVy
ZU5hbWVzOjptaW5IZWlnaHQKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OndpZHRoCisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhX
aWR0aAorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluV2lkdGgK
KyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZUhlaWdodAor
ICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4RGV2aWNlSGVpZ2h0
CisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5EZXZpY2VIZWln
aHQKKyAgICB8fCBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmRldmljZVdpZHRo
CisgICAgfHwgbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5EZXZpY2VXaWR0
aAorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4RGV2aWNlV2lk
dGg7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBmZWF0dXJlV2l0aFBvc2l0aXZlSW50ZWdlcihj
b25zdCBTdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuKQor
eworICAgIGlmICh0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgIT0gSW50ZWdlclZhbHVlVHlwZSB8
fCB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICByZXR1cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpjb2xvcgorICAg
IHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6IG1heENvbG9yCisgICAgfHwg
bWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjogbWluQ29sb3IKKyAgICB8fCBtZWRp
YUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmNvbG9ySW5kZXgKKyAgICB8fCBtZWRpYUZl
YXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heENvbG9ySW5kZXgKKyAgICB8fCBtZWRpYUZl
YXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbkNvbG9ySW5kZXgKKyAgICB8fCBtZWRpYUZl
YXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1vbm9jaHJvbWUKKyAgICB8fCBtZWRpYUZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heE1vbm9jaHJvbWUKKyAgICB8fCBtZWRpYUZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbk1vbm9jaHJvbWU7Cit9CisKK3N0YXRpYyBpbmxp
bmUgYm9vbCBmZWF0dXJlV2l0aFBvc2l0aXZlTnVtYmVyKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0
dXJlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgaWYgKHRva2VuLnR5cGUo
KSAhPSBOdW1iZXJUb2tlbiB8fCB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVy
ZU5hbWVzOjp0cmFuc2Zvcm0zZAorICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6ZGV2aWNlUGl4ZWxSYXRpbworICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1
cmVOYW1lczo6bWF4RGV2aWNlUGl4ZWxSYXRpbworICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBNZWRp
YUZlYXR1cmVOYW1lczo6bWluRGV2aWNlUGl4ZWxSYXRpbzsKK30KKworc3RhdGljIGlubGluZSBi
b29sIGZlYXR1cmVXaXRoWmVyb09yT25lKGNvbnN0IFN0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25z
dCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgaWYgKHRva2VuLm51bWVyaWNWYWx1ZVR5
cGUoKSAhPSBJbnRlZ2VyVmFsdWVUeXBlIHx8ICEodG9rZW4ubnVtZXJpY1ZhbHVlKCkgPT0gMSB8
fCAhdG9rZW4ubnVtZXJpY1ZhbHVlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6Z3JpZDsKK30KKwor
c3RhdGljIGlubGluZSBib29sIGlzRmVhdHVyZVZhbGlkV2l0aElkZW50aWZpZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBtZWRpYUZlYXR1cmUsIENTU1ZhbHVlSUQgaWQpCit7CisgICAgaWYgKCFpZCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGZlYXR1cmVXaXRoVmFsaWRJZGVu
dChtZWRpYUZlYXR1cmUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNGZWF0dXJlVmFsaWRX
aXRoTm9uTmVnYXRpdmVMZW5ndGhPck51bWJlcihjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVh
dHVyZSwgY29uc3QgQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQpAQCAtMTg5LDcgKzI2MSw3IEBAIE1l
ZGlhUXVlcnlFeHByZXNzaW9uOjpNZWRpYVF1ZXJ5RXhwcmVzc2kKICAgICAgICAgICAgIG1faXNW
YWxpZCA9IHRydWU7CiAgICAgfSBlbHNlIGlmICh2YWx1ZUxpc3QtPnNpemUoKSA9PSAxKSB7CiAg
ICAgICAgIGF1dG8mIHZhbHVlID0gKnZhbHVlTGlzdC0+dmFsdWVBdCgwKTsKLSAgICAgICAgaWYg
KGlzRmVhdHVyZVZhbGlkV2l0aElkZW50aWZpZXIobWVkaWFGZWF0dXJlLCB2YWx1ZSkpIHsKKyAg
ICAgICAgaWYgKHZhbHVlLmlkICYmIGlzRmVhdHVyZVZhbGlkV2l0aElkZW50aWZpZXIobWVkaWFG
ZWF0dXJlLCB2YWx1ZS5pZCkpIHsKICAgICAgICAgICAgIG1fdmFsdWUgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZS5pZCk7CiAgICAgICAgICAgICBtX2lzVmFsaWQg
PSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGlzRmVhdHVyZVZhbGlkV2l0aE51bWJlcldpdGhV
bml0KG1lZGlhRmVhdHVyZSwgdmFsdWUpIHx8IGlzRmVhdHVyZVZhbGlkV2l0aE5vbk5lZ2F0aXZl
TGVuZ3RoT3JOdW1iZXIobWVkaWFGZWF0dXJlLCB2YWx1ZSkpIHsKQEAgLTIxMSw2ICsyODMsNTkg
QEAgTWVkaWFRdWVyeUV4cHJlc3Npb246Ok1lZGlhUXVlcnlFeHByZXNzaQogICAgIH0KIH0KIAor
TWVkaWFRdWVyeUV4cHJlc3Npb246Ok1lZGlhUXVlcnlFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYg
ZmVhdHVyZSwgY29uc3QgVmVjdG9yPENTU1BhcnNlclRva2VuLCA0PiYgdG9rZW5MaXN0KQorICAg
IDogbV9tZWRpYUZlYXR1cmUoZmVhdHVyZSkKKyAgICAsIG1faXNWYWxpZChmYWxzZSkKK3sKKyAg
ICAvLyBDcmVhdGUgdmFsdWUgZm9yIG1lZGlhIHF1ZXJ5IGV4cHJlc3Npb24gdGhhdCBtdXN0IGhh
dmUgMSBvciBtb3JlIHZhbHVlcy4KKyAgICBpZiAoIXRva2VuTGlzdC5zaXplKCkgJiYgaXNGZWF0
dXJlVmFsaWRXaXRob3V0VmFsdWUobV9tZWRpYUZlYXR1cmUpKSB7CisgICAgICAgIC8vIFZhbGlk
LCBjcmVhdGVzIGEgTWVkaWFRdWVyeUV4cCB3aXRoIGFuICdpbnZhbGlkJyBNZWRpYVF1ZXJ5RXhw
VmFsdWUKKyAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHRva2VuTGlz
dC5zaXplKCkgPT0gMSkgeworICAgICAgICBDU1NQYXJzZXJUb2tlbiB0b2tlbiA9IHRva2VuTGlz
dC5maXJzdCgpOworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAg
ICAgICAgICAgIENTU1ZhbHVlSUQgaWRlbnQgPSB0b2tlbi5pZCgpOworICAgICAgICAgICAgaWYg
KCFmZWF0dXJlV2l0aFZhbGlkSWRlbnQobV9tZWRpYUZlYXR1cmUpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIG1fdmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihpZGVudCk7CisgICAgICAgICAgICBtX2lzVmFsaWQgPSB0cnVlOworICAgICAg
ICB9IGVsc2UgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50eXBlKCkg
PT0gUGVyY2VudGFnZVRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikgewor
ICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIG51bWVyaWMgdG9rZW4gdHlwZXMgc2luY2UgaXQgaXMg
b25seSBzYWZlIGZvciB0aGVzZSB0eXBlcyB0byBjYWxsIG51bWVyaWNWYWx1ZS4KKyAgICAgICAg
ICAgIGlmIChmZWF0dXJlV2l0aFZhbGlkRGVuc2l0eShtX21lZGlhRmVhdHVyZSwgdG9rZW4pCisg
ICAgICAgICAgICAgICAgfHwgZmVhdHVyZVdpdGhWYWxpZFBvc2l0aXZlTGVuZ3RoKG1fbWVkaWFG
ZWF0dXJlLCB0b2tlbikpIHsKKyAgICAgICAgICAgICAgICAvLyBNZWRpYSBmZWF0dXJlcyB0aGF0
IG11c3QgaGF2ZSBub24tbmVnYXRpdmUgPGRlbnNpdHk+LCBpZS4gZHBweCwgZHBpIG9yIGRwY20s
CisgICAgICAgICAgICAgICAgLy8gb3IgTWVkaWEgZmVhdHVyZXMgdGhhdCBtdXN0IGhhdmUgbm9u
LW5lZ2F0aXZlIDxsZW5ndGg+IG9yIG51bWJlciB2YWx1ZS4KKyAgICAgICAgICAgICAgICBtX3Zh
bHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0b2tlbi5udW1lcmljVmFsdWUoKSwgKENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpIHRva2VuLnVuaXRUeXBlKCkpOworICAgICAgICAg
ICAgICAgIG1faXNWYWxpZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGZlYXR1cmVX
aXRoUG9zaXRpdmVJbnRlZ2VyKG1fbWVkaWFGZWF0dXJlLCB0b2tlbikKKyAgICAgICAgICAgICAg
ICB8fCBmZWF0dXJlV2l0aFBvc2l0aXZlTnVtYmVyKG1fbWVkaWFGZWF0dXJlLCB0b2tlbikKKyAg
ICAgICAgICAgICAgICB8fCBmZWF0dXJlV2l0aFplcm9Pck9uZShtX21lZGlhRmVhdHVyZSwgdG9r
ZW4pKSB7CisgICAgICAgICAgICAgICAgLy8gTWVkaWEgZmVhdHVyZXMgdGhhdCBtdXN0IGhhdmUg
bm9uLW5lZ2F0aXZlIGludGVnZXIgdmFsdWUsCisgICAgICAgICAgICAgICAgLy8gb3IgbWVkaWEg
ZmVhdHVyZXMgdGhhdCBtdXN0IGhhdmUgbm9uLW5lZ2F0aXZlIG51bWJlciB2YWx1ZSwKKyAgICAg
ICAgICAgICAgICAvLyBvciBtZWRpYSBmZWF0dXJlcyB0aGF0IG11c3QgaGF2ZSAoMHwxKSB2YWx1
ZS4KKyAgICAgICAgICAgICAgICBtX3ZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0
b2tlbi5udW1lcmljVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX05V
TUJFUik7CisgICAgICAgICAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodG9rZW5MaXN0LnNpemUoKSA9PSAzICYmIGlzQXNw
ZWN0UmF0aW9GZWF0dXJlKG1fbWVkaWFGZWF0dXJlKSkgeworICAgICAgICAvLyBUT0RPKHRpbWxv
aCk6IDxyYXRpbz4gaXMgc3VwcG9zZWQgdG8gYWxsb3cgd2hpdGVzcGFjZSBhcm91bmQgdGhlICcv
JworICAgICAgICAvLyBBcHBsaWNhYmxlIHRvIGRldmljZS1hc3BlY3QtcmF0aW8gYW5kIGFzcGVj
dC1yYXRpby4KKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIG51bWVyYXRvciA9IHRva2Vu
TGlzdFswXTsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGRlbGltaXRlciA9IHRva2Vu
TGlzdFsxXTsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGRlbm9taW5hdG9yID0gdG9r
ZW5MaXN0WzJdOworICAgICAgICBpZiAoZGVsaW1pdGVyLnR5cGUoKSAhPSBEZWxpbWl0ZXJUb2tl
biB8fCBkZWxpbWl0ZXIuZGVsaW1pdGVyKCkgIT0gJy8nKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBpZiAobnVtZXJhdG9yLnR5cGUoKSAhPSBOdW1iZXJUb2tlbiB8fCBudW1lcmF0b3Iu
bnVtZXJpY1ZhbHVlKCkgPD0gMCB8fCBudW1lcmF0b3IubnVtZXJpY1ZhbHVlVHlwZSgpICE9IElu
dGVnZXJWYWx1ZVR5cGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChkZW5vbWlu
YXRvci50eXBlKCkgIT0gTnVtYmVyVG9rZW4gfHwgZGVub21pbmF0b3IubnVtZXJpY1ZhbHVlKCkg
PD0gMCB8fCBkZW5vbWluYXRvci5udW1lcmljVmFsdWVUeXBlKCkgIT0gSW50ZWdlclZhbHVlVHlw
ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIG1fdmFsdWUgPSBDU1NB
c3BlY3RSYXRpb1ZhbHVlOjpjcmVhdGUobnVtZXJhdG9yLm51bWVyaWNWYWx1ZSgpLCBkZW5vbWlu
YXRvci5udW1lcmljVmFsdWUoKSk7CisgICAgICAgIG1faXNWYWxpZCA9IHRydWU7CisKKyAgICB9
Cit9CisKIFN0cmluZyBNZWRpYVF1ZXJ5RXhwcmVzc2lvbjo6c2VyaWFsaXplKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fc2VyaWFsaXphdGlvbkNhY2hlLmlzTnVsbCgpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFRdWVyeUV4cC5oCShyZXZpc2lvbiAyMDUzNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFRdWVyeUV4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxOCArMjcsMjAgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgogI2luY2x1ZGUgIkNT
U1ZhbHVlLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENTU1BhcnNlclZhbHVlTGlzdDsKLQorICAgIAogLy8gRklYTUU6IFJlbmFtZSB0aGUgZmls
ZSB0byBtYXRjaCB0aGlzIGNsYXNzJ3MgbmFtZS4KIGNsYXNzIE1lZGlhUXVlcnlFeHByZXNzaW9u
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBN
ZWRpYVF1ZXJ5RXhwcmVzc2lvbihjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSA9IGVt
cHR5QXRvbSwgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZXMgPSBudWxscHRyKTsKKyAgICBleHBs
aWNpdCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29u
c3QgVmVjdG9yPENTU1BhcnNlclRva2VuLCA0PiYgdG9rZW5MaXN0KTsKIAogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlKCkgY29uc3Q7CiAgICAgQ1NTVmFsdWUqIHZhbHVlKCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlv
bXMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VySWRpb21zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvLyBDb3B5cmln
aHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDU1NQYXJzZXJJZGlvbXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lk
IGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlSW5QbGFjZShDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKQorICAgICAgICBjaGFyYWN0ZXJzW2ldID0gdG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNb
aV0pOworfQorCisvLyBGSVhNRS1ORVdQQVJTRVI6IFdvdWxkIGxpa2UgdG8gZ2V0IHJpZCBvZiB0
aGlzIG9wZXJhdGlvbi4gQmxpbmsgdXNlcyBIVE1MUGFyc2VyIHN0YXRpYyBsb3dlcmNhc2UKKy8v
IHN0cmluZyBoYXNoaW5nLCBidXQgd2UgZG9uJ3QgaGF2ZSB0aGF0IGNvZGUgaW4gb3VyIEhUTUxQ
YXJzZXIuCit2b2lkIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlSW5QbGFjZShTdHJpbmdWaWV3JiBz
dHJpbmdWaWV3KQoreworICAgIGlmIChzdHJpbmdWaWV3LmlzOEJpdCgpKQorICAgICAgICBXZWJD
b3JlOjpjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZUluUGxhY2UoY29uc3RfY2FzdDxMQ2hhcio+KHN0
cmluZ1ZpZXcuY2hhcmFjdGVyczgoKSksIHN0cmluZ1ZpZXcubGVuZ3RoKCkpOworICAgIGVsc2UK
KyAgICAgICAgV2ViQ29yZTo6Y29udmVydFRvQVNDSUlMb3dlcmNhc2VJblBsYWNlKGNvbnN0X2Nh
c3Q8VUNoYXIqPihzdHJpbmdWaWV3LmNoYXJhY3RlcnMxNigpKSwgc3RyaW5nVmlldy5sZW5ndGgo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAkocmV2aXNpb24gMjA1MzUxKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogI2RlZmluZSBDU1NQYXJzZXJJZGlvbXNfaAogCiAjaW5jbHVkZSA8d3Rm
L0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsNiArNTgsOCBAQCBib29sIGlzTmFtZUNvZGVQb2ludChD
aGFyYWN0ZXJUeXBlIGMpCiAgICAgcmV0dXJuIGlzTmFtZVN0YXJ0Q29kZVBvaW50KGMpIHx8IGlz
QVNDSUlEaWdpdChjKSB8fCBjID09ICctJzsKIH0KIAordm9pZCBjb252ZXJ0VG9BU0NJSUxvd2Vy
Y2FzZUluUGxhY2UoU3RyaW5nVmlldyYpOworCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJKHJldmlzaW9uIDIwNTM1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzIsNiArMzMyLDEyIEBAIGJvb2wgQ1NTUGFyc2VyVG9rZW46Omhhc1N0cmlu
Z0JhY2tpbmcoKSAKICAgICAgICAgfHwgdG9rZW5UeXBlID09IFN0cmluZ1Rva2VuOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lk
IGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlSW5QbGFjZShDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKQorICAgICAgICBjaGFyYWN0ZXJzW2ldID0gdG9BU0NJSUxvd2VyKGNoYXJhY3RlcnNb
aV0pOworfQorCiBDU1NQYXJzZXJUb2tlbiBDU1NQYXJzZXJUb2tlbjo6Y29weVdpdGhVcGRhdGVk
U3RyaW5nKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykgY29uc3QKIHsKICAgICBDU1NQYXJzZXJU
b2tlbiBjb3B5KCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFR
dWVyeUJsb2NrV2F0Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9NZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
Ky8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlCbG9j
a1dhdGNoZXIuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTWVkaWFRdWVyeUJsb2NrV2F0Y2hlcjo6TWVkaWFRdWVyeUJsb2NrV2F0Y2hl
cigpCit7Cit9CisKK3ZvaWQgTWVkaWFRdWVyeUJsb2NrV2F0Y2hlcjo6aGFuZGxlVG9rZW4oY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuKQoreworICAgIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUo
KSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCkgeworICAgICAgICArK21fYmxvY2tMZXZl
bDsKKyAgICB9IGVsc2UgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2Vu
OjpCbG9ja0VuZCkgeworICAgICAgICBBU1NFUlQobV9ibG9ja0xldmVsKTsKKyAgICAgICAgLS1t
X2Jsb2NrTGV2ZWw7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlCbG9ja1dhdGNoZXIu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlC
bG9ja1dhdGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvLyBDb3B5cmln
aHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZm5kZWYgTWVkaWFRdWVyeUJs
b2NrV2F0Y2hlcl9oCisjZGVmaW5lIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXJfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1BhcnNlclRva2VuOworCitjbGFzcyBNZWRpYVF1ZXJ5
QmxvY2tXYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyKCk7Cisg
ICAgdm9pZCBoYW5kbGVUb2tlbihjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworICAgIHVuc2lnbmVk
IGJsb2NrTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrTGV2ZWw7IH0KKworcHJpdmF0ZToK
KyAgICB1bnNpZ25lZCBtX2Jsb2NrTGV2ZWwgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hy
b21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRp
YVF1ZXJ5UGFyc2VyLmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRl
ICJDU1NUb2tlbml6ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNl
TWVkaWFRdWVyeVNldChjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQoreworICAgIHJldHVybiBw
YXJzZU1lZGlhUXVlcnlTZXQoQ1NTVG9rZW5pemVyOjpTY29wZShxdWVyeVN0cmluZykudG9rZW5S
YW5nZSgpKTsKK30KKworUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IE1lZGlhUXVlcnlQYXJzZXI6OnBh
cnNlTWVkaWFRdWVyeVNldChDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlKQoreworICAgIHJldHVy
biBNZWRpYVF1ZXJ5UGFyc2VyKE1lZGlhUXVlcnlTZXRQYXJzZXIpLnBhcnNlSW50ZXJuYWwocmFu
Z2UpOworfQorCitSZWZQdHI8TWVkaWFRdWVyeVNldD4gTWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VN
ZWRpYUNvbmRpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlKQoreworICAgIHJldHVybiBN
ZWRpYVF1ZXJ5UGFyc2VyKE1lZGlhQ29uZGl0aW9uUGFyc2VyKS5wYXJzZUludGVybmFsKHJhbmdl
KTsKK30KKworY29uc3QgTWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6
UmVhZFJlc3RyaWN0b3IgPSAmTWVkaWFRdWVyeVBhcnNlcjo6cmVhZFJlc3RyaWN0b3I7Citjb25z
dCBNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBNZWRpYVF1ZXJ5UGFyc2VyOjpSZWFkTWVkaWFOb3Qg
PSAmTWVkaWFRdWVyeVBhcnNlcjo6cmVhZE1lZGlhTm90OworY29uc3QgTWVkaWFRdWVyeVBhcnNl
cjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6UmVhZE1lZGlhVHlwZSA9ICZNZWRpYVF1ZXJ5UGFy
c2VyOjpyZWFkTWVkaWFUeXBlOworY29uc3QgTWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTWVkaWFR
dWVyeVBhcnNlcjo6UmVhZEFuZCA9ICZNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkQW5kOworY29uc3Qg
TWVkaWFRdWVyeVBhcnNlcjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6UmVhZEZlYXR1cmVTdGFy
dCA9ICZNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZVN0YXJ0OworY29uc3QgTWVkaWFRdWVy
eVBhcnNlcjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6UmVhZEZlYXR1cmUgPSAmTWVkaWFRdWVy
eVBhcnNlcjo6cmVhZEZlYXR1cmU7Citjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBNZWRp
YVF1ZXJ5UGFyc2VyOjpSZWFkRmVhdHVyZUNvbG9uID0gJk1lZGlhUXVlcnlQYXJzZXI6OnJlYWRG
ZWF0dXJlQ29sb247Citjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBNZWRpYVF1ZXJ5UGFy
c2VyOjpSZWFkRmVhdHVyZVZhbHVlID0gJk1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlVmFs
dWU7Citjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0ZSBNZWRpYVF1ZXJ5UGFyc2VyOjpSZWFk
RmVhdHVyZUVuZCA9ICZNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZUVuZDsKK2NvbnN0IE1l
ZGlhUXVlcnlQYXJzZXI6OlN0YXRlIE1lZGlhUXVlcnlQYXJzZXI6OlNraXBVbnRpbENvbW1hID0g
Jk1lZGlhUXVlcnlQYXJzZXI6OnNraXBVbnRpbENvbW1hOworY29uc3QgTWVkaWFRdWVyeVBhcnNl
cjo6U3RhdGUgTWVkaWFRdWVyeVBhcnNlcjo6U2tpcFVudGlsQmxvY2tFbmQgPSAmTWVkaWFRdWVy
eVBhcnNlcjo6c2tpcFVudGlsQmxvY2tFbmQ7Citjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyOjpTdGF0
ZSBNZWRpYVF1ZXJ5UGFyc2VyOjpEb25lID0gJk1lZGlhUXVlcnlQYXJzZXI6OmRvbmU7CisKK01l
ZGlhUXVlcnlQYXJzZXI6Ok1lZGlhUXVlcnlQYXJzZXIoUGFyc2VyVHlwZSBwYXJzZXJUeXBlKQor
ICAgIDogbV9wYXJzZXJUeXBlKHBhcnNlclR5cGUpCisgICAgLCBtX3F1ZXJ5U2V0KE1lZGlhUXVl
cnlTZXQ6OmNyZWF0ZSgpKQoreworICAgIGlmIChwYXJzZXJUeXBlID09IE1lZGlhUXVlcnlTZXRQ
YXJzZXIpCisgICAgICAgIG1fc3RhdGUgPSAmTWVkaWFRdWVyeVBhcnNlcjo6cmVhZFJlc3RyaWN0
b3I7CisgICAgZWxzZSAvLyBNZWRpYUNvbmRpdGlvblBhcnNlcgorICAgICAgICBtX3N0YXRlID0g
Jk1lZGlhUXVlcnlQYXJzZXI6OnJlYWRNZWRpYU5vdDsKK30KKworTWVkaWFRdWVyeVBhcnNlcjo6
fk1lZGlhUXVlcnlQYXJzZXIoKSB7IH0KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpzZXRTdGF0
ZUFuZFJlc3RyaWN0KFN0YXRlIHN0YXRlLCBNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHJlc3RyaWN0
b3IpCit7CisgICAgbV9tZWRpYVF1ZXJ5RGF0YS5zZXRSZXN0cmljdG9yKHJlc3RyaWN0b3IpOwor
ICAgIG1fc3RhdGUgPSBzdGF0ZTsKK30KKworLy8gU3RhdGUgbWFjaGluZSBtZW1iZXIgZnVuY3Rp
b25zIHN0YXJ0IGhlcmUKK3ZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6cmVhZFJlc3RyaWN0b3IoQ1NT
UGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAg
ICByZWFkTWVkaWFUeXBlKHR5cGUsIHRva2VuKTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2Vy
OjpyZWFkTWVkaWFOb3QoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRv
a2VuJiB0b2tlbikKK3sKKyAgICBpZiAodHlwZSA9PSBJZGVudFRva2VuICYmIGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgIm5vdCIpKQorICAgICAgICBzZXRTdGF0ZUFuZFJl
c3RyaWN0KFJlYWRGZWF0dXJlU3RhcnQsIE1lZGlhUXVlcnk6Ok5vdCk7CisgICAgZWxzZQorICAg
ICAgICByZWFkRmVhdHVyZVN0YXJ0KHR5cGUsIHRva2VuKTsKK30KKworc3RhdGljIGJvb2wgaXNS
ZXN0cmljdG9yT3JMb2dpY2FsT3BlcmF0b3IoY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuKQor
eworICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCB0byB1c2UgbG93ZXIt
Y2FzZSBhbHdheXMgZm9yIHRva2VuVmFsdWUuCisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UodG9rZW4udmFsdWUoKSwgIm5vdCIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UodG9rZW4udmFsdWUoKSwgImFuZCIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UodG9rZW4udmFsdWUoKSwgIm9yIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZSh0b2tlbi52YWx1ZSgpLCAib25seSIpOworfQorCit2b2lkIE1lZGlhUXVlcnlQYXJzZXI6
OnJlYWRNZWRpYVR5cGUoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRv
a2VuJiB0b2tlbikKK3sKKyAgICBpZiAodHlwZSA9PSBMZWZ0UGFyZW50aGVzaXNUb2tlbikgewor
ICAgICAgICBpZiAobV9tZWRpYVF1ZXJ5RGF0YS5yZXN0cmljdG9yKCkgIT0gTWVkaWFRdWVyeTo6
Tm9uZSkKKyAgICAgICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9zdGF0ZSA9IFJlYWRGZWF0dXJlOworICAgIH0gZWxzZSBpZiAodHlw
ZSA9PSBJZGVudFRva2VuKSB7CisgICAgICAgIGlmIChtX3N0YXRlID09IFJlYWRSZXN0cmljdG9y
ICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgIm5vdCIpKSB7CisgICAg
ICAgICAgICBzZXRTdGF0ZUFuZFJlc3RyaWN0KFJlYWRNZWRpYVR5cGUsIE1lZGlhUXVlcnk6Ok5v
dCk7CisgICAgICAgIH0gZWxzZSBpZiAobV9zdGF0ZSA9PSBSZWFkUmVzdHJpY3RvciAmJiBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCksICJvbmx5IikpIHsKKyAgICAgICAgICAg
IHNldFN0YXRlQW5kUmVzdHJpY3QoUmVhZE1lZGlhVHlwZSwgTWVkaWFRdWVyeTo6T25seSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAobV9tZWRpYVF1ZXJ5RGF0YS5yZXN0cmljdG9yKCkgIT0gTWVkaWFR
dWVyeTo6Tm9uZQorICAgICAgICAgICAgJiYgaXNSZXN0cmljdG9yT3JMb2dpY2FsT3BlcmF0b3Io
dG9rZW4pKSB7CisgICAgICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQ29tbWE7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcgPSB0b2tlbi52YWx1
ZSgpOworICAgICAgICAgICAgY29udmVydFRvQVNDSUlMb3dlcmNhc2VJblBsYWNlKHN0cmluZ1Zp
ZXcpOworICAgICAgICAgICAgbV9tZWRpYVF1ZXJ5RGF0YS5zZXRNZWRpYVR5cGUoc3RyaW5nVmll
dy50b1N0cmluZygpKTsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBSZWFkQW5kOworICAgICAgICB9
CisgICAgfSBlbHNlIGlmICh0eXBlID09IEVPRlRva2VuICYmICghbV9xdWVyeVNldC0+cXVlcnlW
ZWN0b3IoKS5zaXplKCkgfHwgbV9zdGF0ZSAhPSBSZWFkUmVzdHJpY3RvcikpCisgICAgICAgIG1f
c3RhdGUgPSBEb25lOworICAgIGVsc2UgeworICAgICAgICBtX3N0YXRlID0gU2tpcFVudGlsQ29t
bWE7CisgICAgICAgIGlmICh0eXBlID09IENvbW1hVG9rZW4pCisgICAgICAgICAgICBza2lwVW50
aWxDb21tYSh0eXBlLCB0b2tlbik7CisgICAgfQorfQorCit2b2lkIE1lZGlhUXVlcnlQYXJzZXI6
OmNvbW1pdE1lZGlhUXVlcnkoKQoreworICAgIC8vIEZJWE1FLU5FV1BBUlNFUjogQ29udm9sdXRl
ZCBhbmQgYXdmdWwsIGJ1dCB3ZSBjYW4ndCBjaGFuZ2UgdGhlIE1lZGlhUXVlcnlTZXQgeWV0IGJl
Y2F1c2Ugb2YgdGhlCisgICAgLy8gb2xkIHBhcnNlci4KKyAgICBNZWRpYVF1ZXJ5IG1lZGlhUXVl
cnkgPSBNZWRpYVF1ZXJ5KG1fbWVkaWFRdWVyeURhdGEucmVzdHJpY3RvcigpLCBtX21lZGlhUXVl
cnlEYXRhLm1lZGlhVHlwZSgpLCBXVEZNb3ZlKG1fbWVkaWFRdWVyeURhdGEuZXhwcmVzc2lvbnMo
KSkpOworICAgIG1fbWVkaWFRdWVyeURhdGEuY2xlYXIoKTsKKyAgICBtX3F1ZXJ5U2V0LT5hZGRN
ZWRpYVF1ZXJ5KFdURk1vdmUobWVkaWFRdWVyeSkpOworfQorCit2b2lkIE1lZGlhUXVlcnlQYXJz
ZXI6OnJlYWRBbmQoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRva2Vu
JiB0b2tlbikKK3sKKyAgICBpZiAodHlwZSA9PSBJZGVudFRva2VuICYmIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UodG9rZW4udmFsdWUoKSwgImFuZCIpKSB7CisgICAgICAgIG1fc3RhdGUgPSBSZWFk
RmVhdHVyZVN0YXJ0OworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDb21tYVRva2VuICYmIG1fcGFy
c2VyVHlwZSAhPSBNZWRpYUNvbmRpdGlvblBhcnNlcikgeworICAgICAgICBjb21taXRNZWRpYVF1
ZXJ5KCk7CisgICAgICAgIG1fc3RhdGUgPSBSZWFkUmVzdHJpY3RvcjsKKyAgICB9IGVsc2UgaWYg
KHR5cGUgPT0gRU9GVG9rZW4pCisgICAgICAgIG1fc3RhdGUgPSBEb25lOworICAgIGVsc2UKKyAg
ICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbENvbW1hOworfQorCit2b2lkIE1lZGlhUXVlcnlQYXJz
ZXI6OnJlYWRGZWF0dXJlU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1Bh
cnNlclRva2VuJiAvKnRva2VuKi8pCit7CisgICAgaWYgKHR5cGUgPT0gTGVmdFBhcmVudGhlc2lz
VG9rZW4pCisgICAgICAgIG1fc3RhdGUgPSBSZWFkRmVhdHVyZTsKKyAgICBlbHNlCisgICAgICAg
IG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpy
ZWFkRmVhdHVyZShDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4m
IHRva2VuKQoreworICAgIGlmICh0eXBlID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgbV9tZWRp
YVF1ZXJ5RGF0YS5zZXRNZWRpYUZlYXR1cmUodG9rZW4udmFsdWUoKS50b1N0cmluZygpKTsKKyAg
ICAgICAgbV9zdGF0ZSA9IFJlYWRGZWF0dXJlQ29sb247CisgICAgfSBlbHNlCisgICAgICAgIG1f
c3RhdGUgPSBTa2lwVW50aWxDb21tYTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFk
RmVhdHVyZUNvbG9uKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tl
biYgdG9rZW4pCit7CisgICAgaWYgKHR5cGUgPT0gQ29sb25Ub2tlbikKKyAgICAgICAgbV9zdGF0
ZSA9IFJlYWRGZWF0dXJlVmFsdWU7CisgICAgZWxzZSBpZiAodHlwZSA9PSBSaWdodFBhcmVudGhl
c2lzVG9rZW4gfHwgdHlwZSA9PSBFT0ZUb2tlbikKKyAgICAgICAgcmVhZEZlYXR1cmVFbmQodHlw
ZSwgdG9rZW4pOworICAgIGVsc2UKKyAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbEJsb2NrRW5k
OworfQorCit2b2lkIE1lZGlhUXVlcnlQYXJzZXI6OnJlYWRGZWF0dXJlVmFsdWUoQ1NTUGFyc2Vy
VG9rZW5UeXBlIHR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAo
dHlwZSA9PSBEaW1lbnNpb25Ub2tlbiAmJiB0b2tlbi51bml0VHlwZSgpID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19VTktOT1dOKQorICAgICAgICBtX3N0YXRlID0gU2tpcFVu
dGlsQ29tbWE7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtX21lZGlhUXVlcnlEYXRhLnRyeUFk
ZFBhcnNlclRva2VuKHR5cGUsIHRva2VuKSkKKyAgICAgICAgICAgIG1fc3RhdGUgPSBSZWFkRmVh
dHVyZUVuZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbEJs
b2NrRW5kOworICAgIH0KK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpyZWFkRmVhdHVyZUVu
ZChDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuKQor
eworICAgIGlmICh0eXBlID09IFJpZ2h0UGFyZW50aGVzaXNUb2tlbiB8fCB0eXBlID09IEVPRlRv
a2VuKSB7CisgICAgICAgIGlmIChtX21lZGlhUXVlcnlEYXRhLmFkZEV4cHJlc3Npb24oKSkKKyAg
ICAgICAgICAgIG1fc3RhdGUgPSBSZWFkQW5kOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X3N0YXRlID0gU2tpcFVudGlsQ29tbWE7CisgICAgfSBlbHNlIGlmICh0eXBlID09IERlbGltaXRl
clRva2VuICYmIHRva2VuLmRlbGltaXRlcigpID09ICcvJykgeworICAgICAgICBtX21lZGlhUXVl
cnlEYXRhLnRyeUFkZFBhcnNlclRva2VuKHR5cGUsIHRva2VuKTsKKyAgICAgICAgbV9zdGF0ZSA9
IFJlYWRGZWF0dXJlVmFsdWU7CisgICAgfSBlbHNlCisgICAgICAgIG1fc3RhdGUgPSBTa2lwVW50
aWxCbG9ja0VuZDsKK30KKwordm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpza2lwVW50aWxDb21tYShD
U1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIC8qdG9rZW4qLykK
K3sKKyAgICBpZiAoKHR5cGUgPT0gQ29tbWFUb2tlbiAmJiAhbV9ibG9ja1dhdGNoZXIuYmxvY2tM
ZXZlbCgpKSB8fCB0eXBlID09IEVPRlRva2VuKSB7CisgICAgICAgIG1fc3RhdGUgPSBSZWFkUmVz
dHJpY3RvcjsKKyAgICAgICAgbV9tZWRpYVF1ZXJ5RGF0YS5jbGVhcigpOworICAgICAgICBNZWRp
YVF1ZXJ5IHF1ZXJ5ID0gTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpOb25lLCAiYWxsIiwgVmVjdG9y
PE1lZGlhUXVlcnlFeHByZXNzaW9uPigpKTsKKyAgICAgICAgbV9xdWVyeVNldC0+YWRkTWVkaWFR
dWVyeShXVEZNb3ZlKHF1ZXJ5KSk7CisgICAgfQorfQorCit2b2lkIE1lZGlhUXVlcnlQYXJzZXI6
OnNraXBVbnRpbEJsb2NrRW5kKENTU1BhcnNlclRva2VuVHlwZSAvKnR5cGUgKi8sIGNvbnN0IENT
U1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAodG9rZW4uZ2V0QmxvY2tUeXBlKCkgPT0g
Q1NTUGFyc2VyVG9rZW46OkJsb2NrRW5kICYmICFtX2Jsb2NrV2F0Y2hlci5ibG9ja0xldmVsKCkp
CisgICAgICAgIG1fc3RhdGUgPSBTa2lwVW50aWxDb21tYTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5
UGFyc2VyOjpkb25lKENTU1BhcnNlclRva2VuVHlwZSAvKnR5cGUqLywgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIC8qdG9rZW4qLykgeyB9CisKK3ZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6aGFuZGxlQmxv
Y2tzKGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBpZiAodG9rZW4uZ2V0Qmxv
Y2tUeXBlKCkgPT0gQ1NTUGFyc2VyVG9rZW46OkJsb2NrU3RhcnQKKyAgICAgICAgJiYgKHRva2Vu
LnR5cGUoKSAhPSBMZWZ0UGFyZW50aGVzaXNUb2tlbiB8fCBtX2Jsb2NrV2F0Y2hlci5ibG9ja0xl
dmVsKCkpKQorICAgICAgICAgICAgbV9zdGF0ZSA9IFNraXBVbnRpbEJsb2NrRW5kOworfQorCit2
b2lkIE1lZGlhUXVlcnlQYXJzZXI6OnByb2Nlc3NUb2tlbihjb25zdCBDU1NQYXJzZXJUb2tlbiYg
dG9rZW4pCit7CisgICAgQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUgPSB0b2tlbi50eXBlKCk7CisK
KyAgICBoYW5kbGVCbG9ja3ModG9rZW4pOworICAgIG1fYmxvY2tXYXRjaGVyLmhhbmRsZVRva2Vu
KHRva2VuKTsKKworICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBjdXJyZW50
IHN0YXRlCisgICAgaWYgKHR5cGUgIT0gV2hpdGVzcGFjZVRva2VuKQorICAgICAgICAoKHRoaXMp
LT4qKG1fc3RhdGUpKSh0eXBlLCB0b2tlbik7Cit9CisKKy8vIFRoZSBzdGF0ZSBtYWNoaW5lIGxv
b3AKK1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZUludGVybmFs
KENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UpCit7CisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgp
KQorICAgICAgICBwcm9jZXNzVG9rZW4ocmFuZ2UuY29uc3VtZSgpKTsKKworICAgIC8vIEZJWE1F
OiBDYW4gd2UgZ2V0IHJpZCBvZiB0aGlzIHNwZWNpYWwgY2FzZT8KKyAgICBpZiAobV9wYXJzZXJU
eXBlID09IE1lZGlhUXVlcnlTZXRQYXJzZXIpCisgICAgICAgIHByb2Nlc3NUb2tlbihDU1NQYXJz
ZXJUb2tlbihFT0ZUb2tlbikpOworCisgICAgaWYgKG1fc3RhdGUgIT0gUmVhZEFuZCAmJiBtX3N0
YXRlICE9IFJlYWRSZXN0cmljdG9yICYmIG1fc3RhdGUgIT0gRG9uZSAmJiBtX3N0YXRlICE9IFJl
YWRNZWRpYU5vdCkgeworICAgICAgICBNZWRpYVF1ZXJ5IHF1ZXJ5ID0gTWVkaWFRdWVyeShNZWRp
YVF1ZXJ5OjpOb25lLCAiYWxsIiwgVmVjdG9yPE1lZGlhUXVlcnlFeHByZXNzaW9uPigpKTsKKyAg
ICAgICAgbV9xdWVyeVNldC0+YWRkTWVkaWFRdWVyeShXVEZNb3ZlKHF1ZXJ5KSk7CisgICAgfSBl
bHNlIGlmIChtX21lZGlhUXVlcnlEYXRhLmN1cnJlbnRNZWRpYVF1ZXJ5Q2hhbmdlZCgpKQorICAg
ICAgICBjb21taXRNZWRpYVF1ZXJ5KCk7CisKKyAgICByZXR1cm4gbV9xdWVyeVNldDsKK30KKwor
TWVkaWFRdWVyeURhdGE6Ok1lZGlhUXVlcnlEYXRhKCkKKyAgICA6IG1fcmVzdHJpY3RvcihNZWRp
YVF1ZXJ5OjpOb25lKQorICAgICwgbV9tZWRpYVR5cGUoImFsbCIpCisgICAgLCBtX21lZGlhVHlw
ZVNldChmYWxzZSkKK3sKK30KKwordm9pZCBNZWRpYVF1ZXJ5RGF0YTo6Y2xlYXIoKQoreworICAg
IG1fcmVzdHJpY3RvciA9IE1lZGlhUXVlcnk6Ok5vbmU7CisgICAgbV9tZWRpYVR5cGUgPSAiYWxs
IjsKKyAgICBtX21lZGlhVHlwZVNldCA9IGZhbHNlOworICAgIG1fbWVkaWFGZWF0dXJlID0gU3Ry
aW5nKCk7CisgICAgbV92YWx1ZUxpc3QuY2xlYXIoKTsKKyAgICBtX2V4cHJlc3Npb25zLmNsZWFy
KCk7Cit9CisKK2Jvb2wgTWVkaWFRdWVyeURhdGE6OmFkZEV4cHJlc3Npb24oKQoreworICAgIE1l
ZGlhUXVlcnlFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBNZWRpYVF1ZXJ5RXhwcmVzc2lvbihtX21l
ZGlhRmVhdHVyZSwgbV92YWx1ZUxpc3QpOworICAgIGJvb2wgaXNWYWxpZCA9IGV4cHJlc3Npb24u
aXNWYWxpZCgpOworICAgIG1fZXhwcmVzc2lvbnMuYXBwZW5kKFdURk1vdmUoZXhwcmVzc2lvbikp
OworICAgIG1fdmFsdWVMaXN0LmNsZWFyKCk7CisgICAgcmV0dXJuIGlzVmFsaWQ7Cit9CisKK2Jv
b2wgTWVkaWFRdWVyeURhdGE6OnRyeUFkZFBhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0
eXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4pCit7CisgICAgaWYgKHR5cGUgPT0gTnVt
YmVyVG9rZW4gfHwgdHlwZSA9PSBQZXJjZW50YWdlVG9rZW4gfHwgdHlwZSA9PSBEaW1lbnNpb25U
b2tlbgorICAgICAgICB8fCB0eXBlID09IERlbGltaXRlclRva2VuIHx8IHR5cGUgPT0gSWRlbnRU
b2tlbikgeworICAgICAgICBtX3ZhbHVlTGlzdC5hcHBlbmQodG9rZW4pOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFRdWVy
eURhdGE6OnNldE1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKK3sKKyAgICBtX21l
ZGlhVHlwZSA9IG1lZGlhVHlwZTsKKyAgICBtX21lZGlhVHlwZVNldCA9IHRydWU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNzb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01l
ZGlhUXVlcnlQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L01lZGlhUXVlcnlQYXJzZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MCBA
QAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVm
IE1lZGlhUXVlcnlQYXJzZXJfaAorI2RlZmluZSBNZWRpYVF1ZXJ5UGFyc2VyX2gKKworI2luY2x1
ZGUgIkNTU1BhcnNlclRva2VuLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgor
I2luY2x1ZGUgIk1lZGlhTGlzdC5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnkuaCIKKyNpbmNsdWRl
ICJNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhUXVlcnlTZXQ7CisKK2NsYXNzIE1lZGlhUXVlcnlEYXRhIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShNZWRpYVF1ZXJ5RGF0YSk7Citwcml2YXRlOgorICAgIE1lZGlhUXVl
cnk6OlJlc3RyaWN0b3IgbV9yZXN0cmljdG9yOworICAgIFN0cmluZyBtX21lZGlhVHlwZTsKKyAg
ICBWZWN0b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+IG1fZXhwcmVzc2lvbnM7CisgICAgU3RyaW5n
IG1fbWVkaWFGZWF0dXJlOworICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbiwgND4gbV92YWx1ZUxp
c3Q7CisgICAgYm9vbCBtX21lZGlhVHlwZVNldDsKKworcHVibGljOgorICAgIE1lZGlhUXVlcnlE
YXRhKCk7CisgICAgdm9pZCBjbGVhcigpOworICAgIGJvb2wgYWRkRXhwcmVzc2lvbigpOworICAg
IGJvb2wgdHJ5QWRkUGFyc2VyVG9rZW4oQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJz
ZXJUb2tlbiYpOworICAgIHZvaWQgc2V0TWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOworICAgIAor
ICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgcmVzdHJpY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzdHJpY3RvcjsgfTsKKyAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cHJlc3Npb24+JiBleHByZXNz
aW9ucygpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbnM7IH0KKyAgICBTdHJpbmcgbWVkaWFUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9tZWRpYVR5cGU7IH0KKyAgICAKKyAgICBpbmxpbmUgYm9vbCBjdXJy
ZW50TWVkaWFRdWVyeUNoYW5nZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIChtX3Jl
c3RyaWN0b3IgIT0gTWVkaWFRdWVyeTo6Tm9uZSB8fCBtX21lZGlhVHlwZVNldCB8fCBtX2V4cHJl
c3Npb25zLnNpemUoKSA+IDApOworICAgIH0KKyAgICBpbmxpbmUgTWVkaWFRdWVyeTo6UmVzdHJp
Y3RvciByZXN0cmljdG9yKCkgeyByZXR1cm4gbV9yZXN0cmljdG9yOyB9CisKKyAgICBpbmxpbmUg
dm9pZCBzZXRSZXN0cmljdG9yKE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgcmVzdHJpY3RvcikgeyBt
X3Jlc3RyaWN0b3IgPSByZXN0cmljdG9yOyB9CisKKyAgICBpbmxpbmUgdm9pZCBzZXRNZWRpYUZl
YXR1cmUoY29uc3QgU3RyaW5nJiBzdHIpIHsgbV9tZWRpYUZlYXR1cmUgPSBzdHI7IH0KK307CisK
K2NsYXNzIE1lZGlhUXVlcnlQYXJzZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlh
UXVlcnlQYXJzZXIpOworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFRdWVyeVNldD4g
cGFyc2VNZWRpYVF1ZXJ5U2V0KGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBSZWZQdHI8TWVk
aWFRdWVyeVNldD4gcGFyc2VNZWRpYVF1ZXJ5U2V0KENTU1BhcnNlclRva2VuUmFuZ2UpOworICAg
IHN0YXRpYyBSZWZQdHI8TWVkaWFRdWVyeVNldD4gcGFyc2VNZWRpYUNvbmRpdGlvbihDU1NQYXJz
ZXJUb2tlblJhbmdlKTsKKworcHJpdmF0ZToKKyAgICBlbnVtIFBhcnNlclR5cGUgeworICAgICAg
ICBNZWRpYVF1ZXJ5U2V0UGFyc2VyLAorICAgICAgICBNZWRpYUNvbmRpdGlvblBhcnNlciwKKyAg
ICB9OworCisgICAgTWVkaWFRdWVyeVBhcnNlcihQYXJzZXJUeXBlKTsKKyAgICB2aXJ0dWFsIH5N
ZWRpYVF1ZXJ5UGFyc2VyKCk7CisKKyAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gcGFyc2VJbnRl
cm5hbChDU1NQYXJzZXJUb2tlblJhbmdlKTsKKworICAgIHZvaWQgcHJvY2Vzc1Rva2VuKGNvbnN0
IENTU1BhcnNlclRva2VuJik7CisKKyAgICB2b2lkIHJlYWRSZXN0cmljdG9yKENTU1BhcnNlclRv
a2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAgICB2b2lkIHJlYWRNZWRpYU5vdChD
U1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJik7CisgICAgdm9pZCByZWFk
TWVkaWFUeXBlKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAg
ICB2b2lkIHJlYWRBbmQoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYp
OworICAgIHZvaWQgcmVhZEZlYXR1cmVTdGFydChDU1NQYXJzZXJUb2tlblR5cGUsIGNvbnN0IENT
U1BhcnNlclRva2VuJik7CisgICAgdm9pZCByZWFkRmVhdHVyZShDU1NQYXJzZXJUb2tlblR5cGUs
IGNvbnN0IENTU1BhcnNlclRva2VuJik7CisgICAgdm9pZCByZWFkRmVhdHVyZUNvbG9uKENTU1Bh
cnNlclRva2VuVHlwZSwgY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAgICB2b2lkIHJlYWRGZWF0
dXJlVmFsdWUoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworICAg
IHZvaWQgcmVhZEZlYXR1cmVFbmQoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJU
b2tlbiYpOworICAgIHZvaWQgc2tpcFVudGlsQ29tbWEoQ1NTUGFyc2VyVG9rZW5UeXBlLCBjb25z
dCBDU1NQYXJzZXJUb2tlbiYpOworICAgIHZvaWQgc2tpcFVudGlsQmxvY2tFbmQoQ1NTUGFyc2Vy
VG9rZW5UeXBlLCBjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworICAgIHZvaWQgZG9uZShDU1NQYXJz
ZXJUb2tlblR5cGUsIGNvbnN0IENTU1BhcnNlclRva2VuJik7CisKKyAgICB1c2luZyBTdGF0ZSA9
IHZvaWQgKE1lZGlhUXVlcnlQYXJzZXI6OiopKENTU1BhcnNlclRva2VuVHlwZSwgY29uc3QgQ1NT
UGFyc2VyVG9rZW4mKTsKKworICAgIHZvaWQgc2V0U3RhdGVBbmRSZXN0cmljdChTdGF0ZSwgTWVk
aWFRdWVyeTo6UmVzdHJpY3Rvcik7CisgICAgdm9pZCBoYW5kbGVCbG9ja3MoY29uc3QgQ1NTUGFy
c2VyVG9rZW4mKTsKKyAgICAKKyAgICB2b2lkIGNvbW1pdE1lZGlhUXVlcnkoKTsKKworICAgIFN0
YXRlIG1fc3RhdGU7CisgICAgUGFyc2VyVHlwZSBtX3BhcnNlclR5cGU7CisgICAgTWVkaWFRdWVy
eURhdGEgbV9tZWRpYVF1ZXJ5RGF0YTsKKyAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9xdWVy
eVNldDsKKyAgICBNZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyIG1fYmxvY2tXYXRjaGVyOworCisgICAg
Y29uc3Qgc3RhdGljIFN0YXRlIFJlYWRSZXN0cmljdG9yOworICAgIGNvbnN0IHN0YXRpYyBTdGF0
ZSBSZWFkTWVkaWFOb3Q7CisgICAgY29uc3Qgc3RhdGljIFN0YXRlIFJlYWRNZWRpYVR5cGU7Cisg
ICAgY29uc3Qgc3RhdGljIFN0YXRlIFJlYWRBbmQ7CisgICAgY29uc3Qgc3RhdGljIFN0YXRlIFJl
YWRGZWF0dXJlU3RhcnQ7CisgICAgY29uc3Qgc3RhdGljIFN0YXRlIFJlYWRGZWF0dXJlOworICAg
IGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkRmVhdHVyZUNvbG9uOworICAgIGNvbnN0IHN0YXRpYyBT
dGF0ZSBSZWFkRmVhdHVyZVZhbHVlOworICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBSZWFkRmVhdHVy
ZUVuZDsKKyAgICBjb25zdCBzdGF0aWMgU3RhdGUgU2tpcFVudGlsQ29tbWE7CisgICAgY29uc3Qg
c3RhdGljIFN0YXRlIFNraXBVbnRpbEJsb2NrRW5kOworICAgIGNvbnN0IHN0YXRpYyBTdGF0ZSBE
b25lOworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNZWRpYVF1
ZXJ5UGFyc2VyX2gK
</data>
<flag name="review"
          id="311207"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>