<?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>79092</bug_id>
          
          <creation_ts>2012-02-21 01:52:11 -0800</creation_ts>
          <short_desc>Remove stylesheet pointer from StylePropertySet</short_desc>
          <delta_ts>2012-04-11 20:54:43 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77745</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Alexander Færøy">ahf</assigned_to>
          <cc>ahf</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kling</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>560754</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-21 01:52:11 -0800</bug_when>
    <thetext>The context should be passed as parameter for CSS parser invoking setters that actually need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560760</commentid>
    <comment_count>1</comment_count>
      <attachid>127945</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-21 02:12:43 -0800</bug_when>
    <thetext>Created attachment 127945
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560779</commentid>
    <comment_count>2</comment_count>
      <attachid>127945</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-21 03:24:11 -0800</bug_when>
    <thetext>Comment on attachment 127945
patch

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

r=me with some glorious exposition:

&gt; Source/WebCore/css/CSSParser.cpp:349
&gt; +    Document* document = contextStyleSheet-&gt;findDocument();

Are we sure it&apos;s safe to always dereference &apos;contextStyleSheet&apos; here? An assertion might be nice.

&gt; Source/WebCore/css/CSSParser.cpp:473
&gt; +    Document* document = contextStyleSheet-&gt;findDocument();

Same story.

&gt; Source/WebCore/css/WebKitCSSMatrix.cpp:56
&gt; -    if (CSSParser::parseValue(styleDeclaration.get(), CSSPropertyWebkitTransform, string, true, true)) {
&gt; +    if (CSSParser::parseValue(styleDeclaration.get(), CSSPropertyWebkitTransform, string, true, true, 0)) {

Here&apos;s a call site where parseValue() would have a null contextStyleSheet.
Though it won&apos;t be a problem for CSSPropertyWebkitTransform, it sets a bad precedent.

&gt; Source/WebCore/dom/StyledElement.h:72
&gt; +    void applyPresentationAttributeToStyle(StylePropertySet*, int propertyID, int value);
&gt; +    void applyPresentationAttributeToStyle(StylePropertySet*, int propertyID, double value, CSSPrimitiveValue::UnitTypes);
&gt; +    void applyPresentationAttributeToStyle(StylePropertySet*, int propertyID, const String&amp; value);

This name is not entirely fabulous, as the function is only concerned with a single property at a time. addPropertyToAttributeStyle() perhaps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560795</commentid>
    <comment_count>3</comment_count>
      <attachid>127945</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-21 03:47:40 -0800</bug_when>
    <thetext>Comment on attachment 127945
patch

Attachment 127945 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11561089

New failing tests:
fast/dom/css-delete-doc.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560827</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-21 05:49:57 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/108345

- Renamed to addPropertyToAttributeStyle as suggested
- Fixed handling of null context stylesheet (fixes the test crash too)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560831</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-21 06:10:04 -0800</bug_when>
    <thetext>Reopen, because it broke the Qt build:
cc1plus: warnings being treated as errors
../../../../Source/WebCore/css/CSSParser.cpp: In static member function &apos;static bool WebCore::CSSParser::parseValue(WebCore::StylePropertySet*, int, const WTF::String&amp;, bool, bool, WebCore::CSSStyleSheet*)&apos;:
../../../../Source/WebCore/css/CSSParser.cpp:472: error: &apos;value$m_ptr&apos; may be used uninitialized in this function
../../../../Source/WebCore/css/CSSParser.cpp:472: note: &apos;value$m_ptr&apos; was declared here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560842</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-21 06:41:24 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Reopen, because it broke the Qt build:
&gt; cc1plus: warnings being treated as errors
&gt; ../../../../Source/WebCore/css/CSSParser.cpp: In static member function &apos;static bool WebCore::CSSParser::parseValue(WebCore::StylePropertySet*, int, const WTF::String&amp;, bool, bool, WebCore::CSSStyleSheet*)&apos;:
&gt; ../../../../Source/WebCore/css/CSSParser.cpp:472: error: &apos;value$m_ptr&apos; may be used uninitialized in this function
&gt; ../../../../Source/WebCore/css/CSSParser.cpp:472: note: &apos;value$m_ptr&apos; was declared here

That looks like a problem with the compiler. Not sure how to work around that. Maybe just different warning flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560843</commentid>
    <comment_count>7</comment_count>
      <attachid>127961</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-21 06:49:33 -0800</bug_when>
    <thetext>Created attachment 127961
workaround for this build breakage

I don&apos;t think if we should disable &quot;-Wuninitialized&quot; to fix only this situation.
This warning hits with gcc 4.4.5 (Debian Squeeze)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560863</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-21 07:26:39 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=127961) [details]
&gt; workaround for this build breakage
&gt; 
&gt; I don&apos;t think if we should disable &quot;-Wuninitialized&quot; to fix only this situation.
&gt; This warning hits with gcc 4.4.5 (Debian Squeeze)

Landed in http://trac.webkit.org/changeset/108351/trunk/Source/WebCore/css/CSSParser.cpp

But it seems there are more similar bugs with gcc 4.5.2 (Ubuntu 11.04)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560864</commentid>
    <comment_count>9</comment_count>
      <attachid>127969</attachid>
    <who name="Alexander Færøy">ahf</who>
    <bug_when>2012-02-21 07:26:57 -0800</bug_when>
    <thetext>Created attachment 127969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560865</commentid>
    <comment_count>10</comment_count>
      <attachid>127969</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-21 07:29:25 -0800</bug_when>
    <thetext>Comment on attachment 127969
Patch

r=me, I&apos;ll land it manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560866</commentid>
    <comment_count>11</comment_count>
      <attachid>127969</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-21 07:31:02 -0800</bug_when>
    <thetext>Comment on attachment 127969
Patch

Clearing flags on attachment: 127969

Committed r108352: &lt;http://trac.webkit.org/changeset/108352&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560867</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-21 07:31:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127945</attachid>
            <date>2012-02-21 02:12:43 -0800</date>
            <delta_ts>2012-02-21 07:26:36 -0800</delta_ts>
            <desc>patch</desc>
            <filename>eliminate-stylepropertyset-context-stylesheet-4.patch</filename>
            <type>text/plain</type>
            <size>76858</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODMyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNiBAQAorMjAxMi0wMi0yMSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHN0eWxlc2hlZXQg
cG9pbnRlciBmcm9tIFN0eWxlUHJvcGVydHlTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIGNvbnRleHQgc2hvdWxkIGJlIHBhc3NlZCBhcyBhbiBh
cmd1bWVudCBmb3IgQ1NTIHBhcnNlciBpbnZva2luZyBzZXR0ZXJzIHRoYXQgYWN0dWFsbHkgbmVl
ZCBpdC4KKyAgICAgICAgCisgICAgICAgIC0gUmVtb3ZlIHRoZSBjb250ZXh0IHN0eWxlc2hlZXQg
cG9pbnRlci4KKyAgICAgICAgLSBBZGQgY29udGV4dCBzdHlsZXNoZWV0IGFyZ3VtZW50IHRvIHNl
dHRlcnMuCisgICAgICAgIC0gRHJvcCBhbiB1bm5lY2Vzc2FyeSBTdHlsZVByb3BlcnR5U2V0IGNv
bnN0cnVjdG9yLCBwYXNzIHN0cmljdCBwYXJzaW5nIGZsYWcgZGlyZWN0bHkuCisgICAgICAgIC0g
QWRhcHQgdG8gY2hhbmdlcyBieSBwYXNzaW5nIGluIHRoZSBjb250ZXh0IHN0eWxlc2hlZXQgd2hl
cmUgbmVlZGVkLgorICAgICAgICAtIEFkZCBTdHlsZWRFbGVtZW50OjphcHBseVByZXNlbnRhdGlv
bkF0dHJpYnV0ZVRvU3R5bGUgaGVscGVycyBmb3IgYnVpbGRpbmcgdXAgdGhlIGF0dHJpYnV0ZSBz
dHlsZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZVJ1bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udEZhY2VSdWxlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyk6CisgICAgICAg
ICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VTaW1wbGVMZW5ndGhWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3Jl
YXRlU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlRm9udEZh
Y2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZVJ1bGUpOgorICAgICAg
ICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKENTU1BhcnNlcik6CisgICAgICAgICogY3Nz
L0NTU1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVJ1bGU6OmFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmNvbnRl
eHRTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6c2V0TmVlZHNTdHlsZVJlY2FsYyk6CisgICAgICAgIChSdWxlQ1NTU3R5bGVEZWNs
YXJhdGlvbik6CisgICAgICAgIChJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9w
ZXJ0eVNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpwYXJzZURlY2xhcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmNsZWFyUGFyZW50
UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpjbGVhclBhcmVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
OjpzZXRDc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6c2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cGFyZW50U3R5bGVTaGVldCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0TmVlZHNTdHlsZVJlY2Fs
Yyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y29udGV4dFN0
eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
Y29udGV4dFN0eWxlU2hlZXQpOgorICAgICAgICAoU2FtZVNpemVBc1N0eWxlUHJvcGVydHlTZXQp
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVByb3BlcnR5U2V0OjpjcmVhdGUpOgorICAgICAgICAoU3R5bGVQcm9wZXJ0eVNldCk6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJp
YnV0ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmVu
c3VyZUlubGluZVN0eWxlRGVjbCk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojp1
cGRhdGVBdHRyaWJ1dGVTdHlsZSk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoKKyAg
ICAgICAgKFN0eWxlZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6
YXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEJSRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QlJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRN
TEJvZHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6Y29s
bGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxEaXZFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEaXZFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OmFwcGx5Qm9yZGVyQXR0cmlidXRlVG9TdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRWxlbWVudDo6bWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphcHBseUFsaWdubWVudEF0dHJpYnV0ZVRvU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkZEhUTUxMZW5ndGhUb1N0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGRIVE1MQ29sb3JUb1N0eWxlKToK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgIChIVE1MRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
SFRNTEhSRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xs
ZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTExJRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTElFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
YXJxdWVlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxPTGlzdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9MaXN0RWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQYXJhZ3Jh
cGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhZ3JhcGhFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6
OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29s
bGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVUxpc3RFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAqIG1hdGht
bC9NYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OmNv
bGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZUVsZW1lbnQ6Omluc2VydGVkSW50
b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlRWxlbWVudDo6cmVtb3Zl
ZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZUVsZW1lbnQ6OnJl
bW92ZUZyb21NYXBwZWRFbGVtZW50U2hlZXQpOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6
CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisK
IDIwMTItMDItMjEgIE1hdHQgTGlsZWsgIDxtcmxAYXBwbGUuY29tPgogCiAgICAgICAgIE5vdCBy
ZXZpZXdlZCwgYnVpbGQgZml4IGZvciBub24tY2xpZW50LWJhc2VkIEdlb2xvY2F0aW9uIGJ1aWxk
cyBhZnRlciByMTA3OTgyLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5j
cHAJKHJldmlzaW9uIDEwODMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIFN0cmluZyBDU1NGb250RmFj
ZVJ1bGU6OmNzc1RleHQoKSBjb25zdAogdm9pZCBDU1NGb250RmFjZVJ1bGU6OmFkZFN1YnJlc291
cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKQogewogICAgIGlmIChtX3N0eWxl
KQotICAgICAgICBtX3N0eWxlLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzKTsKKyAgICAg
ICAgbV9zdHlsZS0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscywgcGFyZW50U3R5bGVTaGVl
dCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAJKHJldmlzaW9uIDEwODMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzQ29sb3JQcm9wZXJ0eUlEKGludAogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFyc2VD
b2xvclZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5
bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQgPSAwKQorc3RhdGljIGJvb2wgcGFyc2VDb2xvclZh
bHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVl
dCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NiwxMCArMzQ2LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VD
b2xvclZhbHVlKFN0eWxlUHJvcGVydAogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAg
ICAgfQogCi0gICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IGNvbnRleHRTdHlsZVNoZWV0
ID8gY29udGV4dFN0eWxlU2hlZXQgOiBkZWNsYXJhdGlvbi0+Y29udGV4dFN0eWxlU2hlZXQoKTsK
LSAgICBpZiAoIXN0eWxlU2hlZXQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBzdHlsZVNoZWV0LT5maW5kRG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBjb250ZXh0U3R5bGVTaGVldC0+ZmluZERvY3VtZW50KCk7CiAgICAgaWYgKCFk
b2N1bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh2YWxpZFByaW1pdGl2ZSkg
ewpAQCAtNDA5LDcgKzQwNiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBsZUxlbmd0aFBy
b3BlcnQKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoU3R5
bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcm
IHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIGJvb2wgc3RyaWN0KQorc3RhdGljIGJvb2wgcGFyc2VT
aW1wbGVMZW5ndGhWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3Bl
cnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgYm9vbCBzdHJpY3Qs
IENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIGJvb2wgYWNjZXB0c05l
Z2F0aXZlTnVtYmVyczsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBA
IC00NzMsMTAgKzQ3MCw3IEBAIHN0YXRpYyBib29sIHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoU3R5
bGUKICAgICBpZiAobnVtYmVyIDwgMCAmJiAhYWNjZXB0c05lZ2F0aXZlTnVtYmVycykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IGRlY2xh
cmF0aW9uLT5jb250ZXh0U3R5bGVTaGVldCgpOwotICAgIGlmICghc3R5bGVTaGVldCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0eWxlU2hlZXQtPmZp
bmREb2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHRTdHlsZVNoZWV0
LT5maW5kRG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgQ1NTUHJvcGVydHkgcHJvcGVydHkocHJvcGVydHlJZCwgZG9jdW1lbnQtPmNzc1Zh
bHVlUG9vbCgpLT5jcmVhdGVWYWx1ZShudW1iZXIsIHVuaXQpLCBpbXBvcnRhbnQpOwpAQCAtNDg0
LDIyICs0NzgsMTkgQEAgc3RhdGljIGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVBy
b3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBib29sIGltcG9ydGFudCwgYm9vbCBzdHJpY3QpCitib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgYm9vbCBzdHJpY3QsIENTU1N0eWxlU2hl
ZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewotICAgIGlmIChwYXJzZVNpbXBsZUxlbmd0aFZhbHVl
KGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0KSkKKyAg
ICBpZiAocGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3Ry
aW5nLCBpbXBvcnRhbnQsIHN0cmljdCwgY29udGV4dFN0eWxlU2hlZXQpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlk
LCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0KSkKKyAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRl
Y2xhcmF0aW9uLCBwcm9wZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgc3RyaWN0LCBjb250ZXh0
U3R5bGVTaGVldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIENTU1BhcnNlciBwYXJzZXIo
c3RyaWN0KTsKLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWUoZGVjbGFyYXRpb24sIHByb3Bl
cnR5SWQsIHN0cmluZywgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWUo
ZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVT
aGVldCk7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQq
IGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wg
aW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKLSAgICBpZiAo
Y29udGV4dFN0eWxlU2hlZXQpCi0gICAgICAgIHNldFN0eWxlU2hlZXQoY29udGV4dFN0eWxlU2hl
ZXQpOwotICAgIGVsc2UKLSAgICAgICAgc2V0U3R5bGVTaGVldChkZWNsYXJhdGlvbi0+Y29udGV4
dFN0eWxlU2hlZXQoKSk7CisgICAgc2V0U3R5bGVTaGVldChjb250ZXh0U3R5bGVTaGVldCk7CiAK
ICAgICBzZXR1cFBhcnNlcigiQC13ZWJraXQtdmFsdWV7Iiwgc3RyaW5nLCAifSAiKTsKIApAQCAt
NTk5LDEwICs1OTAsOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihTdHlsZVBy
CiAgICAgLy8gTGVuZ3RoIG9mIHRoZSAiQC13ZWJraXQtZGVjbHN7IiBwcmVmaXguCiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHByZWZpeExlbmd0aCA9IDE1OwogCi0gICAgaWYgKGNvbnRleHRT
dHlsZVNoZWV0KQotICAgICAgICBzZXRTdHlsZVNoZWV0KGNvbnRleHRTdHlsZVNoZWV0KTsKLSAg
ICBlbHNlCi0gICAgICAgIHNldFN0eWxlU2hlZXQoZGVjbGFyYXRpb24tPmNvbnRleHRTdHlsZVNo
ZWV0KCkpOworICAgIHNldFN0eWxlU2hlZXQoY29udGV4dFN0eWxlU2hlZXQpOworCiAgICAgaWYg
KHN0eWxlU291cmNlRGF0YSkgewogICAgICAgICBtX2N1cnJlbnRSdWxlRGF0YSA9IENTU1J1bGVT
b3VyY2VEYXRhOjpjcmVhdGUoKTsKICAgICAgICAgbV9jdXJyZW50UnVsZURhdGEtPnN0eWxlU291
cmNlRGF0YSA9IENTU1N0eWxlU291cmNlRGF0YTo6Y3JlYXRlKCk7CkBAIC04ODIxLDcgKzg4MTAs
NyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0CiAgICAgICAgIHJ1
bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7CiAgICAgICAgIGlmIChtX2hhc0Zv
bnRGYWNlT25seVZhbHVlcykKICAgICAgICAgICAgIGRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygp
OwotICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUo
bV9zdHlsZVNoZWV0LCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcykp
OworICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUo
bV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMsIG1fc3R5bGVTaGVldC0+
dXNlU3RyaWN0UGFyc2luZygpKSk7CiAgICAgICAgIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAg
ICAgIG1fcGFyc2VkUnVsZXMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAgaWYgKG1f
cnVsZVJhbmdlTWFwKSB7CkBAIC04ODYwLDcgKzg4NDksNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6
OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiAgICAgICAgIH0KICAgICB9CiAgICAgUmVmUHRyPENTU0Zv
bnRGYWNlUnVsZT4gcnVsZSA9IENTU0ZvbnRGYWNlUnVsZTo6Y3JlYXRlKG1fc3R5bGVTaGVldCk7
Ci0gICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fc3R5
bGVTaGVldCwgbV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpKTsKKyAg
ICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQ
cm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMsIG1fc3R5bGVTaGVldC0+dXNlU3RyaWN0
UGFyc2luZygpKSk7CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgQ1NTRm9udEZhY2VSdWxl
KiByZXN1bHQgPSBydWxlLmdldCgpOwogICAgIG1fcGFyc2VkUnVsZXMuYXBwZW5kKHJ1bGUucmVs
ZWFzZSgpKTsKQEAgLTg5MzEsNyArODkyMCw3IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRl
UGFnZVJ1bGUoUGFzc08KICAgICAgICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4g
PiBzZWxlY3RvclZlY3RvcjsKICAgICAgICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhZ2VTZWxl
Y3Rvcik7CiAgICAgICAgIHJ1bGUtPmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3Ip
OwotICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUo
bV9zdHlsZVNoZWV0LCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcykp
OworICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUo
bV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMsIG1fc3R5bGVTaGVldC0+
dXNlU3RyaWN0UGFyc2luZygpKSk7CiAgICAgICAgIHBhZ2VSdWxlID0gcnVsZS5nZXQoKTsKICAg
ICAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTkw
MTUsNyArOTAwNCw3IEBAIFdlYktpdENTU0tleWZyYW1lUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGUK
IAogICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IGtleWZyYW1lID0gV2ViS2l0Q1NT
S2V5ZnJhbWVSdWxlOjpjcmVhdGUobV9zdHlsZVNoZWV0KTsKICAgICBrZXlmcmFtZS0+c2V0S2V5
VGV4dChrZXlTdHJpbmcpOwotICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3Bl
cnR5U2V0OjpjcmVhdGUobV9zdHlsZVNoZWV0LCBtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVtUGFy
c2VkUHJvcGVydGllcykpOworICAgIGtleWZyYW1lLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3Bl
cnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMs
IG1fc3R5bGVTaGVldC0+dXNlU3RyaWN0UGFyc2luZygpKSk7CiAKICAgICBjbGVhclByb3BlcnRp
ZXMoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAkocmV2aXNpb24gMTA4MzI1KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMSAr
NjksMTEgQEAgcHVibGljOgogICAgIHZvaWQgcGFyc2VTaGVldChDU1NTdHlsZVNoZWV0KiwgY29u
c3QgU3RyaW5nJiwgaW50IHN0YXJ0TGluZU51bWJlciA9IDAsIFN0eWxlUnVsZVJhbmdlTWFwKiBy
dWxlUmFuZ2VNYXAgPSAwKTsKICAgICBQYXNzUmVmUHRyPENTU1J1bGU+IHBhcnNlUnVsZShDU1NT
dHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NLZXlm
cmFtZVJ1bGU+IHBhcnNlS2V5ZnJhbWVSdWxlKENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcm
KTsKLSAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJv
cElkLCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCwgYm9vbCBzdHJpY3QpOworICAgIHN0
YXRpYyBib29sIHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wSWQsIGNvbnN0
IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29u
dGV4dFN0eWxlU2hlZXQpOwogICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoUkdCQTMyJiBjb2xv
ciwgY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgc3RhdGljIGJvb2wg
cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBEb2N1bWVudCop
OwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlVmFsaWRQcmltaXRpdmUo
aW50IHByb3BJZCwgQ1NTUGFyc2VyVmFsdWUqKTsKLSAgICBib29sIHBhcnNlRGVjbGFyYXRpb24o
U3R5bGVQcm9wZXJ0eVNldCosIGNvbnN0IFN0cmluZyYsIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURh
dGE+KiA9IDAsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0ID0gMCk7CisgICAgYm9v
bCBwYXJzZURlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQqLCBjb25zdCBTdHJpbmcmLCBSZWZQ
dHI8Q1NTU3R5bGVTb3VyY2VEYXRhPiosIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0
KTsKICAgICBib29sIHBhcnNlTWVkaWFRdWVyeShNZWRpYUxpc3QqLCBjb25zdCBTdHJpbmcmKTsK
IAogICAgIERvY3VtZW50KiBmaW5kRG9jdW1lbnQoKSBjb25zdDsKQEAgLTM1NSw3ICszNTUsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNHZW5lcmF0ZWRJbWFnZVZhbHVlKENTU1BhcnNlclZhbHVl
KikgY29uc3Q7CiAgICAgYm9vbCBwYXJzZUdlbmVyYXRlZEltYWdlKENTU1BhcnNlclZhbHVlTGlz
dCosIFJlZlB0cjxDU1NWYWx1ZT4mKTsKIAotICAgIGJvb2wgcGFyc2VWYWx1ZShTdHlsZVByb3Bl
cnR5U2V0KiwgaW50IHByb3BJZCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIENTU1N0
eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0ID0gMCk7CisgICAgYm9vbCBwYXJzZVZhbHVlKFN0
eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJvcElkLCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFu
dCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpOwogCiAgICAgZW51bSBTaXplUGFy
YW1ldGVyVHlwZSB7CiAgICAgICAgIE5vbmUsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVSdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVS
dWxlLmNwcAkocmV2aXNpb24gMTA4MzI1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
UnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBTdHJpbmcgQ1NTU3R5
bGVSdWxlOjpjc3NUZXh0KCkgY29uc3QKIHZvaWQgQ1NTU3R5bGVSdWxlOjphZGRTdWJyZXNvdXJj
ZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykKIHsKICAgICBpZiAobV9zdHlsZSkK
LSAgICAgICAgbV9zdHlsZS0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscyk7CisgICAgICAg
IG1fc3R5bGUtPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIHBhcmVudFN0eWxlU2hlZXQo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnR5U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5jcHAJKHJldmlzaW9uIDEwODMyNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHlsZWRFbGVtZW50KiBwYXJlbnRFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhclBhcmVudFJ1bGUoKSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyUGFyZW50RWxlbWVu
dCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIENTU1N0eWxlU2hlZXQq
IGNvbnRleHRTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCByZWYoKSBPVkVSUklERSB7IG1fcHJvcGVydHlTZXQtPnJlZigpOyB9CkBA
IC04NSw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBDU1NTdHlsZVNoZWV0KiBwYXJl
bnRTdHlsZVNoZWV0KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0
eWxlUHJvcGVydHlTZXQ+IGNvcHkoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbWFrZU11dGFibGUoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNTdHlsZVJlY2FsYygpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNTdHlsZVJlY2FsYygpIHsgfSAgICAKIAogcHJvdGVjdGVkOgogICAgIFN0eWxlUHJvcGVy
dHlTZXQqIG1fcHJvcGVydHlTZXQ7CkBAIC0xMDQsNiArMTA1LDcgQEAgcHJpdmF0ZTogICAgCiAg
ICAgdmlydHVhbCBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRS
dWxlOyB9OwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclBhcmVudFJ1bGUoKSB7IG1fcGFyZW50UnVs
ZSA9IDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIHZp
cnR1YWwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQoKSBjb25zdDsKICAgICAKICAg
ICBDU1NSdWxlKiBtX3BhcmVudFJ1bGU7CiB9OwpAQCAtMTIxLDYgKzEyMyw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBTdHlsZWRFbGVtZW50KiBwYXJlbnRFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9wYXJlbnRFbGVtZW50OyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyUGFyZW50RWxlbWVu
dCgpIHsgbV9wYXJlbnRFbGVtZW50ID0gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1N0
eWxlUmVjYWxjKCk7CisgICAgdmlydHVhbCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVl
dCgpIGNvbnN0OwogCiAgICAgU3R5bGVkRWxlbWVudCogbV9wYXJlbnRFbGVtZW50OwogfTsKQEAg
LTIxMyw3ICsyMTYsNiBAQCBib29sIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZTo6c19zaG91
CiBTdHlsZVByb3BlcnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0KCkKICAgICA6IG1fc3RyaWN0UGFy
c2luZyhmYWxzZSkKICAgICAsIG1faGFzQ1NTT01XcmFwcGVyKGZhbHNlKQotICAgICwgbV9jb250
ZXh0U3R5bGVTaGVldCgwKQogewogfQogCkBAIC0yMjEsMjIgKzIyMywxMyBAQCBTdHlsZVByb3Bl
cnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0KGNvbnN0CiAgICAgOiBtX3Byb3BlcnRpZXMocHJvcGVy
dGllcykKICAgICAsIG1fc3RyaWN0UGFyc2luZyh0cnVlKQogICAgICwgbV9oYXNDU1NPTVdyYXBw
ZXIoZmFsc2UpCi0gICAgLCBtX2NvbnRleHRTdHlsZVNoZWV0KDApCiB7CiAgICAgbV9wcm9wZXJ0
aWVzLnNocmlua1RvRml0KCk7CiB9CiAKLVN0eWxlUHJvcGVydHlTZXQ6OlN0eWxlUHJvcGVydHlT
ZXQoQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCi0gICAgOiBtX3N0cmljdFBhcnNp
bmcoIWNvbnRleHRTdHlsZVNoZWV0IHx8IGNvbnRleHRTdHlsZVNoZWV0LT51c2VTdHJpY3RQYXJz
aW5nKCkpCitTdHlsZVByb3BlcnR5U2V0OjpTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3Bl
cnR5KiBjb25zdCAqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIHVzZVN0cmlj
dFBhcnNpbmcpCisgICAgOiBtX3N0cmljdFBhcnNpbmcodXNlU3RyaWN0UGFyc2luZykKICAgICAs
IG1faGFzQ1NTT01XcmFwcGVyKGZhbHNlKQotICAgICwgbV9jb250ZXh0U3R5bGVTaGVldChjb250
ZXh0U3R5bGVTaGVldCkKLXsKLX0KLQotU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNl
dChDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCwgY29uc3QgQ1NTUHJvcGVydHkqIGNv
bnN0ICogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMpCi0gICAgOiBtX3N0cmljdFBhcnNp
bmcoIWNvbnRleHRTdHlsZVNoZWV0IHx8IGNvbnRleHRTdHlsZVNoZWV0LT51c2VTdHJpY3RQYXJz
aW5nKCkpCi0gICAgLCBtX2hhc0NTU09NV3JhcHBlcihmYWxzZSkKLSAgICAsIG1fY29udGV4dFN0
eWxlU2hlZXQoY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobnVtUHJvcGVydGllcyk7CiAgICAgSGFzaE1hcDxpbnQsIGJvb2w+IGNh
bmRpZGF0ZXM7CkBAIC03NDUsNyArNzM4LDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0Ojppc1By
b3BlcnR5SW1wbGljaQogICAgIHJldHVybiBwcm9wZXJ0eSA/IHByb3BlcnR5LT5pc0ltcGxpY2l0
KCkgOiBmYWxzZTsKIH0KIAotYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQg
cHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCitib29sIFN0
eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBib29sIGltcG9ydGFudCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQp
CiB7CiAgICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgdG8gYW4gZW1wdHkgc3RyaW5nIGp1c3QgcmVt
b3ZlcyB0aGUgcHJvcGVydHkgaW4gYm90aCBJRSBhbmQgR2Vja28uCiAgICAgLy8gU2V0dGluZyBp
dCB0byBudWxsIHNlZW1zIHRvIHByb2R1Y2UgbGVzcyBjb25zaXN0ZW50IHJlc3VsdHMsIGJ1dCB3
ZSB0cmVhdCBpdCBqdXN0IHRoZSBzYW1lLgpAQCAtNzU2LDcgKzc0OSw3IEBAIGJvb2wgU3R5bGVQ
cm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoaW50IHAKIAogICAgIC8vIFdoZW4gcmVwbGFjaW5nIGFu
IGV4aXN0aW5nIHByb3BlcnR5IHZhbHVlLCB0aGlzIG1vdmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUg
ZW5kIG9mIHRoZSBsaXN0LgogICAgIC8vIEZpcmVmb3ggcHJlc2VydmVzIHRoZSBwb3NpdGlvbiwg
YW5kIE1TSUUgbW92ZXMgdGhlIHByb3BlcnR5IHRvIHRoZSBiZWdpbm5pbmcuCi0gICAgcmV0dXJu
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50
LCB1c2VTdHJpY3RQYXJzaW5nKCkpOworICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
dGhpcywgcHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgdXNlU3RyaWN0UGFyc2luZygpLCBj
b250ZXh0U3R5bGVTaGVldCk7CiB9CiAKIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVy
dHkoY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5LCBDU1NQcm9wZXJ0eSogc2xvdCkKQEAgLTc3
MSwxMCArNzY0LDEwIEBAIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoY29uc3QK
ICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKHByb3BlcnR5KTsKIH0KIAotYm9vbCBTdHlsZVByb3Bl
cnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIsIGJvb2wg
aW1wb3J0YW50KQorYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVy
dHlJRCwgaW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0KiBjb250
ZXh0U3R5bGVTaGVldCkKIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlOyAg
ICAKLSAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9jb250ZXh0U3R5bGVTaGVldCA/IG1f
Y29udGV4dFN0eWxlU2hlZXQtPmZpbmREb2N1bWVudCgpIDogMCkKKyAgICBpZiAoRG9jdW1lbnQq
IGRvY3VtZW50ID0gY29udGV4dFN0eWxlU2hlZXQgPyBjb250ZXh0U3R5bGVTaGVldC0+ZmluZERv
Y3VtZW50KCkgOiAwKQogICAgICAgICB2YWx1ZSA9IGRvY3VtZW50LT5jc3NWYWx1ZVBvb2woKS0+
Y3JlYXRlSWRlbnRpZmllclZhbHVlKGlkZW50aWZpZXIpOwogICAgIGVsc2UKICAgICAgICAgdmFs
dWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKQEAg
LTc4MywxOCArNzc2LDIyIEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoaW50
IHAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9w
ZXJ0eShpbnQgcHJvcGVydHlJRCwgZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzIHVuaXQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQ
cm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgZG91YmxlIG51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlcyB1bml0LCBib29sIGltcG9ydGFudCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0
eWxlU2hlZXQpCiB7Ci0gICAgQ1NTUHJvcGVydHkgcHJvcGVydHkocHJvcGVydHlJRCwgQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdW5pdCksIGltcG9ydGFudCk7Ci0gICAgc2V0UHJv
cGVydHkocHJvcGVydHkpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWU7ICAg
IAorICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0U3R5bGVTaGVldCA/IGNvbnRl
eHRTdHlsZVNoZWV0LT5maW5kRG9jdW1lbnQoKSA6IDApCisgICAgICAgIHZhbHVlID0gZG9jdW1l
bnQtPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVWYWx1ZShudW1iZXIsIHVuaXQpOworICAgIGVsc2UK
KyAgICAgICAgdmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgdW5pdCk7
CisgICAgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFu
dCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnBhcnNl
RGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uKQordm9pZCBTdHlsZVBy
b3BlcnR5U2V0OjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlv
biwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgbV9wcm9wZXJ0aWVz
LmNsZWFyKCk7CiAgICAgQ1NTUGFyc2VyIHBhcnNlcih1c2VTdHJpY3RQYXJzaW5nKCkpOwotICAg
IHBhcnNlci5wYXJzZURlY2xhcmF0aW9uKHRoaXMsIHN0eWxlRGVjbGFyYXRpb24pOworICAgIHBh
cnNlci5wYXJzZURlY2xhcmF0aW9uKHRoaXMsIHN0eWxlRGVjbGFyYXRpb24sIDAsIGNvbnRleHRT
dHlsZVNoZWV0KTsKIH0KIAogdm9pZCBTdHlsZVByb3BlcnR5U2V0OjphZGRQYXJzZWRQcm9wZXJ0
aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRp
ZXMpCkBAIC04OTAsMTIgKzg4NywxMSBAQCB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6Om1lcmdlKGNv
bnN0IFN0eWxlCiAgICAgfQogfQogCi12b2lkIFN0eWxlUHJvcGVydHlTZXQ6OmFkZFN1YnJlc291
cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKQordm9pZCBTdHlsZVByb3BlcnR5
U2V0OjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgQ1NT
U3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7Ci0gICAgQ1NTU3R5bGVTaGVldCogc2hl
ZXQgPSBjb250ZXh0U3R5bGVTaGVldCgpOwogICAgIHNpemVfdCBzaXplID0gbV9wcm9wZXJ0aWVz
LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
bV9wcm9wZXJ0aWVzW2ldLnZhbHVlKCktPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIHNo
ZWV0KTsKKyAgICAgICAgbV9wcm9wZXJ0aWVzW2ldLnZhbHVlKCktPmFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKHVybHMsIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KIAogLy8gVGhpcyBpcyB0aGUgbGlz
dCBvZiBwcm9wZXJ0aWVzIHdlIHdhbnQgdG8gY29weSBpbiB0aGUgY29weUJsb2NrUHJvcGVydGll
cygpIGZ1bmN0aW9uLgpAQCAtMTA3Myw3ICsxMDY5LDYgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiog
U3R5bGVQcm9wZXJ0eVNldDo6ZQogCiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OmNsZWFyUGFyZW50
UnVsZShDU1NSdWxlKiBydWxlKQogewotICAgIG1fY29udGV4dFN0eWxlU2hlZXQgPSAwOwogICAg
IGlmICghbV9oYXNDU1NPTVdyYXBwZXIpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlRfVU5V
U0VEKHJ1bGUsIHN0YXRpY19jYXN0PENTU1N0eWxlRGVjbGFyYXRpb24qPihwcm9wZXJ0eVNldENT
U09NV3JhcHBlck1hcCgpLmdldCh0aGlzKSktPnBhcmVudFJ1bGUoKSA9PSBydWxlKTsKQEAgLTEw
ODIsNyArMTA3Nyw2IEBAIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6Y2xlYXJQYXJlbnRSdWxlKEMK
IAogdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpjbGVhclBhcmVudEVsZW1lbnQoU3R5bGVkRWxlbWVu
dCogZWxlbWVudCkKIHsKLSAgICBtX2NvbnRleHRTdHlsZVNoZWV0ID0gMDsKICAgICBpZiAoIW1f
aGFzQ1NTT01XcmFwcGVyKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUX1VOVVNFRChlbGVt
ZW50LCBwcm9wZXJ0eVNldENTU09NV3JhcHBlck1hcCgpLmdldCh0aGlzKS0+cGFyZW50RWxlbWVu
dCgpID09IGVsZW1lbnQpOwpAQCAtMTExMyw3ICsxMTA3LDcgQEAgdm9pZCBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OnNldAogI2VuZGlmCiAgICAgZWMgPSAwOwogICAgIC8vIEZJWE1F
OiBEZXRlY3Qgc3ludGF4IGVycm9ycyBhbmQgc2V0IGVjLgotICAgIG1fcHJvcGVydHlTZXQtPnBh
cnNlRGVjbGFyYXRpb24odGV4dCk7CisgICAgbV9wcm9wZXJ0eVNldC0+cGFyc2VEZWNsYXJhdGlv
bih0ZXh0LCBjb250ZXh0U3R5bGVTaGVldCgpKTsKIAogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMo
KTsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQpAQCAtMTE3NCw3ICsxMTY4LDcgQEAg
dm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldAogICAgICAgICByZXR1cm47
CiAgICAgYm9vbCBpbXBvcnRhbnQgPSBwcmlvcml0eS5maW5kKCJpbXBvcnRhbnQiLCAwLCBmYWxz
ZSkgIT0gbm90Rm91bmQ7CiAgICAgZWMgPSAwOwotICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVy
dHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQpOworICAgIGJv
b2wgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVl
LCBpbXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KCkpOwogICAgIGlmIChjaGFuZ2VkKSB7CiAg
ICAgICAgIC8vIENTUyBET00gcmVxdWlyZXMgcmFpc2luZyBTWU5UQVhfRVJSIG9mIHBhcnNpbmcg
ZmFpbGVkLCBidXQgdGhpcyBpcyB0b28gZGFuZ2Vyb3VzIGZvciBjb21wYXRpYmlsaXR5LAogICAg
ICAgICAvLyBzZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyOTY+
LgpAQCAtMTIyMSw3ICsxMjE1LDcgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b246OnNldAogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRo
aXMpOwogI2VuZGlmCiAgICAgZWMgPSAwOwotICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVydHlT
ZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQpOworICAgIGJvb2wg
Y2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBp
bXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KCkpOwogICAgIGlmIChjaGFuZ2VkKSB7CiAgICAg
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJT
KQpAQCAtMTIzMiw3ICsxMjI2LDcgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b246OnNldAogCiBDU1NTdHlsZVNoZWV0KiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OnBhcmVudFN0eWxlU2hlZXQoKSBjb25zdAogeyAKLSAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+
Y29udGV4dFN0eWxlU2hlZXQoKTsgCisgICAgcmV0dXJuIGNvbnRleHRTdHlsZVNoZWV0KCk7IAog
fQogCiBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6Y29weSgpIGNvbnN0CkBAIC0xMjUyLDExICsxMjQ2LDE2IEBAIGJvb2wgUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjc3MKIAogdm9pZCBSdWxlQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6c2V0TmVlZHNTdHlsZVJlY2FsYygpCiB7Ci0gICAgaWYgKENTU1N0eWxlU2hlZXQqIHN0
eWxlU2hlZXQgPSBtX3Byb3BlcnR5U2V0LT5jb250ZXh0U3R5bGVTaGVldCgpKSB7CisgICAgaWYg
KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBjb250ZXh0U3R5bGVTaGVldCgpKSB7CiAgICAg
ICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBzdHlsZVNoZWV0LT5maW5kRG9jdW1lbnQoKSkK
ICAgICAgICAgICAgIGRvY3VtZW50LT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0
eWxlKTsKICAgICB9CiB9CisgICAgCitDU1NTdHlsZVNoZWV0KiBSdWxlQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6Y29udGV4dFN0eWxlU2hlZXQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhcmVudFJ1
bGUgPyBtX3BhcmVudFJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSA6IDA7Cit9CiAKIHZvaWQgSW5s
aW5lQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0TmVlZHNTdHlsZVJlY2FsYygpCiB7CkBAIC0xMjY4
LDEwICsxMjY3LDE0IEBAIHZvaWQgSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0TmVlZHMK
ICAgICByZXR1cm47CiB9CiAKK0NTU1N0eWxlU2hlZXQqIElubGluZUNTU1N0eWxlRGVjbGFyYXRp
b246OmNvbnRleHRTdHlsZVNoZWV0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXJlbnRFbGVt
ZW50ID8gbV9wYXJlbnRFbGVtZW50LT5kb2N1bWVudCgpLT5lbGVtZW50U2hlZXQoKSA6IDA7Cit9
CisKIGNsYXNzIFNhbWVTaXplQXNTdHlsZVByb3BlcnR5U2V0IDogcHVibGljIFJlZkNvdW50ZWQ8
U2FtZVNpemVBc1N0eWxlUHJvcGVydHlTZXQ+IHsKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDQ+
IHByb3BlcnRpZXM7CiAgICAgdW5zaWduZWQgYml0ZmllbGQ7Ci0gICAgdm9pZCogcGFyZW50Owog
fTsKIENPTVBJTEVfQVNTRVJUKHNpemVvZihTdHlsZVByb3BlcnR5U2V0KSA9PSBzaXplb2YoU2Ft
ZVNpemVBc1N0eWxlUHJvcGVydHlTZXQpLCBzdHlsZV9wcm9wZXJ0eV9zZXRfc2hvdWxkX3N0YXlf
c21hbGwpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgJKHJldmlz
aW9uIDEwODMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDEzICs0Miw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0eVNldCk7CiAgICAgfQotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShDU1NTdHlsZVNoZWV0KiBjb250ZXh0
U3R5bGVTaGVldCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVh
dGUoY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGll
cywgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHlsZVByb3BlcnR5U2V0KGNvbnRleHRTdHlsZVNoZWV0KSk7Ci0gICAgfQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShDU1NTdHlsZVNoZWV0KiBj
b250ZXh0U3R5bGVTaGVldCwgY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0KiBwcm9wZXJ0aWVzLCBp
bnQgbnVtUHJvcGVydGllcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5
bGVQcm9wZXJ0eVNldChjb250ZXh0U3R5bGVTaGVldCwgcHJvcGVydGllcywgbnVtUHJvcGVydGll
cykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUHJvcGVydHlTZXQocHJvcGVy
dGllcywgbnVtUHJvcGVydGllcywgdXNlU3RyaWN0UGFyc2luZykpOwogICAgIH0KICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoY29uc3QgVmVjdG9yPENTU1By
b3BlcnR5PiYgcHJvcGVydGllcykKICAgICB7CkBAIC02NSwxNSArNjEsMTUgQEAgcHVibGljOgog
ICAgIGludCBnZXRQcm9wZXJ0eVNob3J0aGFuZChpbnQgcHJvcGVydHlJRCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1Byb3BlcnR5SW1wbGljaXQoaW50IHByb3BlcnR5SUQpIGNvbnN0OwogCi0gICAgYm9v
bCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgaW50IHZhbHVlLCBib29sIGltcG9ydGFudCA9
IGZhbHNlKTsKLSAgICBib29sIHNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlkLCBkb3VibGUgdmFs
dWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdCwgYm9vbCBpbXBvcnRhbnQgPSBm
YWxzZSk7Ci0gICAgYm9vbCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgYm9vbCBzZXRQcm9wZXJ0eShp
bnQgcHJvcGVydHlJRCwgaW50IHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNlLCBDU1NTdHls
ZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCA9IDApOworICAgIGJvb2wgc2V0UHJvcGVydHkoaW50
IHByb3BlcnR5SWQsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcywg
Ym9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQg
PSAwKTsKKyAgICBib29sIHNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5
bGVTaGVldCA9IDApOwogICAgIHZvaWQgc2V0UHJvcGVydHkoY29uc3QgQ1NTUHJvcGVydHkmLCBD
U1NQcm9wZXJ0eSogc2xvdCA9IDApOwogICAgIAogICAgIGJvb2wgcmVtb3ZlUHJvcGVydHkoaW50
IHByb3BlcnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCA9IDApOwogCiAgICAgLy8gVGhlIGZvbGxv
d2luZyBwYXJzZXMgYW4gZW50aXJlIG5ldyBzdHlsZSBkZWNsYXJhdGlvbi4KLSAgICB2b2lkIHBh
cnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uKTsKKyAgICB2b2lk
IHBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uLCBDU1NTdHls
ZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAKICAgICAvLyBCZXNpZGVzIGFkZGluZyB0aGUg
cHJvcGVydGllcywgdGhpcyBhbHNvIHJlbW92ZXMgYW55IGV4aXN0aW5nIHByb3BlcnRpZXMgd2l0
aCB0aGVzZSBJRHMuCiAgICAgLy8gSXQgZG9lcyBubyBub3RpZmljYXRpb24gc2luY2UgaXQncyBj
YWxsZWQgYnkgdGhlIHBhcnNlci4KQEAgLTkwLDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U3RyaWN0UGFyc2luZyhib29sIGIpIHsgbV9zdHJpY3RQYXJzaW5nID0gYjsgfQogICAgIGJv
b2wgdXNlU3RyaWN0UGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFyc2luZzsgfQog
Ci0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpOwor
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBDU1NT
dHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAKICAgICBQYXNzUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+IGNvcHkoKSBjb25zdDsKICAgICAvLyBVc2VkIGJ5IFN0eWxlZEVsZW1lbnQ6OmNv
cHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKCkuCkBAIC0xMDAsOSArOTYsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhjb25zdCBDU1NTdHlsZURlY2xhcmF0
aW9uKik7CiAKICAgICBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0aWVz
SW5TZXQoY29uc3QgaW50KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7Ci0KLSAgICBDU1NT
dHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dFN0
eWxlU2hlZXQ7IH0KLSAgICB2b2lkIHNldENvbnRleHRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQq
IHN0eWxlU2hlZXQpIHsgbV9jb250ZXh0U3R5bGVTaGVldCA9IHN0eWxlU2hlZXQ7IH0KICAgICAK
ICAgICBTdHJpbmcgYXNUZXh0KCkgY29uc3Q7CiAgICAgCkBAIC0xMTYsOCArMTA5LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBTdHlsZVByb3BlcnR5U2V0KCk7CiAgICAgU3R5bGVQcm9wZXJ0
eVNldChjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+Jik7Ci0gICAgU3R5bGVQcm9wZXJ0eVNldChD
U1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KTsKLSAgICBTdHlsZVByb3BlcnR5U2V0KENT
U1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQsIGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAq
LCBpbnQgbnVtUHJvcGVydGllcyk7CisgICAgU3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9w
ZXJ0eSogY29uc3QgKiwgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgdXNlU3RyaWN0UGFyc2luZyk7
CiAKICAgICB2b2lkIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIApAQCAtMTQzLDggKzEzNSw2IEBA
IHByaXZhdGU6CiAKICAgICBib29sIG1fc3RyaWN0UGFyc2luZyA6IDE7CiAgICAgbXV0YWJsZSBi
b29sIG1faGFzQ1NTT01XcmFwcGVyIDogMTsKLQotICAgIENTU1N0eWxlU2hlZXQqIG1fY29udGV4
dFN0eWxlU2hlZXQ7CiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNw
cAkocmV2aXNpb24gMTA4MzI1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJp
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgV2ViS2l0Q1NTTWF0cml4Ojp+
V2ViS2l0Q1NTTWF0cml4KCkKIHZvaWQgV2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShj
b25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPFN0
eWxlUHJvcGVydHlTZXQ+IHN0eWxlRGVjbGFyYXRpb24gPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVh
dGUoKTsKLSAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24uZ2V0
KCksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBzdHJpbmcsIHRydWUsIHRydWUpKSB7Cisg
ICAgaWYgKENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZURlY2xhcmF0aW9uLmdldCgpLCBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgc3RyaW5nLCB0cnVlLCB0cnVlLCAwKSkgewogICAgICAg
ICAvLyBDb252ZXJ0IHRvIFRyYW5zZm9ybU9wZXJhdGlvbnMuIFRoaXMgY2FuIGZhaWwgaWYgYSBw
cm9wZXJ0eQogICAgICAgICAvLyByZXF1aXJlcyBzdHlsZSAoaS5lLiwgcGFyYW0gdXNlcyAnZW1z
JyBvciAnZXhzJykKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHN0eWxlRGVjbGFy
YXRpb24tPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCShyZXZp
c2lvbiAxMDgzMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIFN0eWxlUHJvcGVydHlTZXQqIEVs
ZW1lbnRBdHRyaWJ1dGVEYXRhOjoKIHsKICAgICBpZiAoIW1faW5saW5lU3R5bGVEZWNsKSB7CiAg
ICAgICAgIEFTU0VSVChlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSk7Ci0gICAgICAgIG1faW5s
aW5lU3R5bGVEZWNsID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKGVsZW1lbnQtPmRvY3VtZW50
KCktPmVsZW1lbnRTaGVldCgpKTsKKyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wgPSBTdHlsZVBy
b3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldFN0cmlj
dFBhcnNpbmcoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgp
LT5pblF1aXJrc01vZGUoKSk7CiAgICAgfQogICAgIHJldHVybiBtX2lubGluZVN0eWxlRGVjbC5n
ZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDEw
ODMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsMjYgKzYxLDYgQEAgU3R5bGVkRWxlbWVudDo6flN0eWxlZEVsZW1lbnQoKQog
ICAgIGRlc3Ryb3lJbmxpbmVTdHlsZURlY2woKTsKIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50Ojpp
bnNlcnRlZEludG9Eb2N1bWVudCgpCi17Ci0gICAgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKTsKLQotICAgIGlmIChTdHlsZVByb3BlcnR5U2V0KiBpbmxpbmVTdHlsZSA9IGlubGluZVN0
eWxlRGVjbCgpKQotICAgICAgICBpbmxpbmVTdHlsZS0+c2V0Q29udGV4dFN0eWxlU2hlZXQoZG9j
dW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwotICAgIGlmIChTdHlsZVByb3BlcnR5U2V0KiBhdHRy
aWJ1dGVTdHlsZSA9IGF0dHJpYnV0ZURhdGEoKSA/IGF0dHJpYnV0ZURhdGEoKS0+YXR0cmlidXRl
U3R5bGUoKSA6IDApCi0gICAgICAgIGF0dHJpYnV0ZVN0eWxlLT5zZXRDb250ZXh0U3R5bGVTaGVl
dChkb2N1bWVudCgpLT5lbGVtZW50U2hlZXQoKSk7Ci19Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6
cmVtb3ZlZEZyb21Eb2N1bWVudCgpCi17Ci0gICAgRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVu
dCgpOwotCi0gICAgaWYgKFN0eWxlUHJvcGVydHlTZXQqIGlubGluZVN0eWxlID0gaW5saW5lU3R5
bGVEZWNsKCkpCi0gICAgICAgIGlubGluZVN0eWxlLT5zZXRDb250ZXh0U3R5bGVTaGVldCgwKTsK
LSAgICBpZiAoU3R5bGVQcm9wZXJ0eVNldCogYXR0cmlidXRlU3R5bGUgPSBhdHRyaWJ1dGVEYXRh
KCkgPyBhdHRyaWJ1dGVEYXRhKCktPmF0dHJpYnV0ZVN0eWxlKCkgOiAwKQotICAgICAgICBhdHRy
aWJ1dGVTdHlsZS0+c2V0Q29udGV4dFN0eWxlU2hlZXQoMCk7Ci19Ci0KIHZvaWQgU3R5bGVkRWxl
bWVudDo6YXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKCEoYXR0
ci0+bmFtZSgpID09IHN0eWxlQXR0ciAmJiBpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgp
KSkKQEAgLTEyMyw3ICsxMDMsNyBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KEF0dHJpCiAgICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKICAgICAgICAgICAgIGRlc3Ryb3lJ
bmxpbmVTdHlsZURlY2woKTsKICAgICAgICAgZWxzZSBpZiAoZG9jdW1lbnQoKS0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmFsbG93SW5saW5lU3R5bGUoKSkKLSAgICAgICAgICAgIGVuc3VyZUlu
bGluZVN0eWxlRGVjbCgpLT5wYXJzZURlY2xhcmF0aW9uKGF0dHItPnZhbHVlKCkpOworICAgICAg
ICAgICAgZW5zdXJlSW5saW5lU3R5bGVEZWNsKCktPnBhcnNlRGVjbGFyYXRpb24oYXR0ci0+dmFs
dWUoKSwgZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwogICAgICAgICBzZXRJc1N0eWxlQXR0
cmlidXRlVmFsaWQoKTsKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoZG9jdW1lbnQo
KSwgdGhpcyk7CkBAIC0xMzksNyArMTE5LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjppbmxpbmVT
dHlsZUNoYW5nZWQoKQogICAgIAogYm9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KGludCBwcm9wZXJ0eUlELCBpbnQgdmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewotICAg
IGJvb2wgY2hhbmdlcyA9IGVuc3VyZUlubGluZVN0eWxlRGVjbCgpLT5zZXRQcm9wZXJ0eShwcm9w
ZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICBib29sIGNoYW5nZXMgPSBlbnN1cmVJbmxp
bmVTdHlsZURlY2woKS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwg
ZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwogICAgIGlmIChjaGFuZ2VzKQogICAgICAgICBp
bmxpbmVTdHlsZUNoYW5nZWQoKTsKICAgICByZXR1cm4gY2hhbmdlczsKQEAgLTE0Nyw3ICsxMjcs
NyBAQCBib29sIFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVyCiAKIGJvb2wgU3R5
bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgZG91Ymxl
IHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQsIGJvb2wgaW1wb3J0YW50
KQogewotICAgIGJvb2wgY2hhbmdlcyA9IGVuc3VyZUlubGluZVN0eWxlRGVjbCgpLT5zZXRQcm9w
ZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgdW5pdCwgaW1wb3J0YW50KTsKKyAgICBib29sIGNoYW5n
ZXMgPSBlbnN1cmVJbmxpbmVTdHlsZURlY2woKS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFs
dWUsIHVuaXQsIGltcG9ydGFudCwgZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwogICAgIGlm
IChjaGFuZ2VzKQogICAgICAgICBpbmxpbmVTdHlsZUNoYW5nZWQoKTsKICAgICByZXR1cm4gY2hh
bmdlczsKQEAgLTE1NSw3ICsxMzUsNyBAQCBib29sIFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0
eWxlUHJvcGVyCiAKIGJvb2wgU3R5bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShp
bnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7Ci0g
ICAgYm9vbCBjaGFuZ2VzID0gZW5zdXJlSW5saW5lU3R5bGVEZWNsKCktPnNldFByb3BlcnR5KHBy
b3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQpOworICAgIGJvb2wgY2hhbmdlcyA9IGVuc3VyZUlu
bGluZVN0eWxlRGVjbCgpLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50
LCBkb2N1bWVudCgpLT5lbGVtZW50U2hlZXQoKSk7CiAgICAgaWYgKGNoYW5nZXMpCiAgICAgICAg
IGlubGluZVN0eWxlQ2hhbmdlZCgpOwogICAgIHJldHVybiBjaGFuZ2VzOwpAQCAtMTcyLDEyICsx
NTIsMTIgQEAgYm9vbCBTdHlsZWRFbGVtZW50OjpyZW1vdmVJbmxpbmVTdHlsZVBybwogdm9pZCBT
dHlsZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mIHVybHMpIGNvbnN0CiB7CiAgICAgaWYgKFN0eWxlUHJvcGVydHlTZXQqIGlubGluZVN0eWxl
ID0gaW5saW5lU3R5bGVEZWNsKCkpCi0gICAgICAgIGlubGluZVN0eWxlLT5hZGRTdWJyZXNvdXJj
ZVN0eWxlVVJMcyh1cmxzKTsKKyAgICAgICAgaW5saW5lU3R5bGUtPmFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKHVybHMsIGRvY3VtZW50KCktPmVsZW1lbnRTaGVldCgpKTsKIH0KIAogdm9pZCBTdHls
ZWRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVTdHlsZSgpCiB7Ci0gICAgUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+IHN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKGRvY3VtZW50KCktPmVs
ZW1lbnRTaGVldCgpKTsKKyAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0
cmlidXRlQ291bnQoKTsgKytpKSB7CiAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0
cmlidXRlSXRlbShpKTsKICAgICAgICAgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHJpYnV0
ZSwgc3R5bGUuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCShyZXZp
c2lvbiAxMDgzMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBVbmxpa2Ug
U3R5bGVQcm9wZXJ0eVNldCBzZXR0ZXJzLCB0aGVzZSBpbXBsZW1lbnQgaW52YWxpZGF0aW9uLgog
ICAgIGJvb2wgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgaW50IHZhbHVl
LCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKLSAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVy
dHkoaW50IHByb3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlcyB1bml0LCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKKyAgICBib29sIHNldElubGluZVN0
eWxlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlcywgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAgICAgYm9vbCBzZXRJbmxp
bmVTdHlsZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29s
IGltcG9ydGFudCA9IGZhbHNlKTsKICAgICBib29sIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHko
aW50IHByb3BlcnR5SUQpOwogICAgIApAQCAtNjcsMTUgKzY3LDE2IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmli
dXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSB7IH0KIAorICAgIHZvaWQgYXBwbHlQ
cmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKFN0eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJvcGVy
dHlJRCwgaW50IHZhbHVlKTsKKyAgICB2b2lkIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9T
dHlsZShTdHlsZVByb3BlcnR5U2V0KiwgaW50IHByb3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyk7CisgICAgdm9pZCBhcHBseVByZXNlbnRhdGlvbkF0
dHJpYnV0ZVRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wZXJ0eUlELCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKKwogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKIAogICAgIC8vIGNsYXNzQXR0cmlidXRl
Q2hhbmdlZCgpIGV4aXN0cyB0byBzaGFyZSBjb2RlIGJldHdlZW4KICAgICAvLyBwYXJzZUF0dHJp
YnV0ZSAoY2FsbGVkIHZpYSBzZXRBdHRyaWJ1dGUoKSkgYW5kCiAgICAgLy8gc3ZnQXR0cmlidXRl
Q2hhbmdlZCAoY2FsbGVkIHdoZW4gZWxlbWVudC5jbGFzc05hbWUuYmFzZVZhbHVlIGlzIHNldCkK
ICAgICB2b2lkIGNsYXNzQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0Ns
YXNzU3RyaW5nKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwpAQCAtMTA5LDYg
KzExMCwyMSBAQCBpbmxpbmUgU3R5bGVQcm9wZXJ0eVNldCogU3R5bGVkRWxlbWVudDo6CiAgICAg
cmV0dXJuIGF0dHJpYnV0ZURhdGEoKSA/IGF0dHJpYnV0ZURhdGEoKS0+YXR0cmlidXRlU3R5bGUo
KSA6IDA7CiB9CiAKK2lubGluZSB2b2lkIFN0eWxlZEVsZW1lbnQ6OmFwcGx5UHJlc2VudGF0aW9u
QXR0cmlidXRlVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgaW50IHByb3BlcnR5SUQs
IGludCB2YWx1ZSkKK3sKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUs
IGZhbHNlLCBkb2N1bWVudCgpLT5lbGVtZW50U2hlZXQoKSk7Cit9CisKK2lubGluZSB2b2lkIFN0
eWxlZEVsZW1lbnQ6OmFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShTdHlsZVByb3Bl
cnR5U2V0KiBzdHlsZSwgaW50IHByb3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlcyB1bml0KQoreworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0
eUlELCB2YWx1ZSwgdW5pdCwgZmFsc2UsIGRvY3VtZW50KCktPmVsZW1lbnRTaGVldCgpKTsKK30K
KworaW5saW5lIHZvaWQgU3R5bGVkRWxlbWVudDo6YXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVU
b1N0eWxlKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3sKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUs
IGZhbHNlLCBkb2N1bWVudCgpLT5lbGVtZW50U2hlZXQoKSk7Cit9CisKIH0gLy9uYW1lc3BhY2UK
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAJKHJldmlz
aW9uIDEwODMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDkgKzYyLDkgQEAgdm9pZCBIVE1MQlJFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JBdHRyaQogICAgICAgICAvLyA8YnIgY2xlYXI+IGFuZCA8YnIgY2xlYXI9IiI+IGFy
ZSBqdXN0IHRyZWF0ZWQgbGlrZSA8YnI+IGJ5IEdlY2tvLCBNYWMgSUUsIGV0Yy4gLWR3aAogICAg
ICAgICBpZiAoIWF0dHItPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGF0dHItPnZhbHVlKCksICJhbGwiKSkKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlDbGVhciwgImJvdGgiKTsKKyAgICAgICAgICAgICAgICBhcHBs
eVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Q2xlYXIsICJi
b3RoIik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5Q2xlYXIsIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFw
cGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlDbGVhciwg
YXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDgzMjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2
LDcgKzg2LDcgQEAgdm9pZCBIVE1MQm9keUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dAogICAg
ICAgICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUNvbG9yLCBhdHRyLT52
YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiZ3Byb3BlcnRpZXNBdHRy
KSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiZml4ZWQi
KSkKLSAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZEF0
dGFjaG1lbnQsIENTU1ZhbHVlRml4ZWQpOworICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0
dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIENT
U1ZhbHVlRml4ZWQpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0
eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERpdkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERpdkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDgzMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEaXZFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTMgKzU5LDEzIEBA
IHZvaWQgSFRNTERpdkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHIKIHsKICAgICBpZiAoYXR0
ci0+bmFtZSgpID09IGFsaWduQXR0cikgewogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
YXR0ci0+dmFsdWUoKSwgIm1pZGRsZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVl
KCksICJjZW50ZXIiKSkKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRDZW50ZXIpOworICAgICAgICAgICAgYXBwbHlQcmVz
ZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NT
VmFsdWVXZWJraXRDZW50ZXIpOwogICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShh
dHRyLT52YWx1ZSgpLCAibGVmdCIpKQotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdExlZnQpOworICAgICAgICAgICAgYXBw
bHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVRleHRBbGln
biwgQ1NTVmFsdWVXZWJraXRMZWZ0KTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYXR0ci0+dmFsdWUoKSwgInJpZ2h0IikpCi0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0UmlnaHQpOworICAgICAgICAg
ICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVRl
eHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRSaWdodCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgYXR0ci0+dmFsdWUoKSk7
CisgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENT
U1Byb3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAg
SFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMTA4MzI1KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
MiwxMSArMTQyLDExIEBAIHN0YXRpYyB1bnNpZ25lZCBwYXJzZUJvcmRlcldpZHRoQXR0cmlidXQK
IAogdm9pZCBIVE1MRWxlbWVudDo6YXBwbHlCb3JkZXJBdHRyaWJ1dGVUb1N0eWxlKEF0dHJpYnV0
ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7Ci0gICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFN0cmluZzo6bnVtYmVyKHBhcnNlQm9yZGVyV2lk
dGhBdHRyaWJ1dGUoYXR0cikpKTsKLSAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJUb3BTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOwot
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFs
dWVTb2xpZCk7CisgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBTdHJpbmc6Om51bWJlcihwYXJzZUJvcmRlcldpZHRoQXR0
cmlidXRlKGF0dHIpKSk7CisgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICBhcHBs
eVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmln
aHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVU
b1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NWYWx1ZVNvbGlk
KTsKKyAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVu
dDo6bWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgU3R5
bGVQcm9wZXJ0eVNldCogc3R5bGUpCkBAIC0xNTQsMTAgKzE1NCwxMCBAQCB2b2lkIEhUTUxFbGVt
ZW50OjptYXBMYW5ndWFnZUF0dHJpYnV0ZVRvCiAgICAgQVNTRVJUKGF0dHJpYnV0ZSAmJiAoYXR0
cmlidXRlLT5uYW1lKCkgPT0gbGFuZ0F0dHIgfHwgYXR0cmlidXRlLT5uYW1lKCkubWF0Y2hlcyhY
TUxOYW1lczo6bGFuZ0F0dHIpKSk7CiAgICAgaWYgKCFhdHRyaWJ1dGUtPmlzRW1wdHkoKSkgewog
ICAgICAgICAvLyBIYXZlIHRvIHF1b3RlIHNvIHRoZSBsb2NhbGUgaWQgaXMgdHJlYXRlZCBhcyBh
IHN0cmluZyBpbnN0ZWFkIG9mIGFzIGEgQ1NTIGtleXdvcmQuCi0gICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSwgcXVvdGVDU1NTdHJpbmcoYXR0cmlidXRl
LT52YWx1ZSgpKSk7CisgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShz
dHlsZSwgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGUsIHF1b3RlQ1NTU3RyaW5nKGF0dHJpYnV0ZS0+
dmFsdWUoKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZSBlbXB0eSBzdHJpbmcgbWVh
bnMgdGhlIGxhbmd1YWdlIGlzIGV4cGxpY2l0bHkgdW5rbm93bi4KLSAgICAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TG9jYWxlLCBDU1NWYWx1ZUF1dG8pOworICAgICAg
ICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Vi
a2l0TG9jYWxlLCBDU1NWYWx1ZUF1dG8pOwogICAgIH0KIH0KIApAQCAtMTcyLDM3ICsxNzIsMzcg
QEAgdm9pZCBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidQogewogICAgIGlmIChh
dHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRyKSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShhdHRyLT52YWx1ZSgpLCAibWlkZGxlIikpCi0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sICJjZW50ZXIiKTsKKyAgICAgICAgICAgIGFwcGx5UHJl
c2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sICJj
ZW50ZXIiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFwcGx5UHJl
c2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0
dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNvbnRlbnRlZGl0
YWJsZUF0dHIpIHsKICAgICAgICAgaWYgKGF0dHItPmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5n
Q2FzZShhdHRyLT52YWx1ZSgpLCAidHJ1ZSIpKSB7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRXcml0ZSk7Ci0g
ICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFs
dWVCcmVha1dvcmQpOwotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
V2Via2l0TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOwotICAgICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFj
ZSk7CisgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgQ1NTVmFsdWVSZWFkV3JpdGUpOworICAgICAg
ICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0
eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7CisgICAgICAgICAgICBhcHBseVByZXNlbnRh
dGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENT
U1ZhbHVlU3BhY2UpOworICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgQ1NTVmFsdWVBZnRlcldoaXRl
U3BhY2UpOwogICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVl
KCksICJwbGFpbnRleHQtb25seSIpKSB7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4dE9u
bHkpOwotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V29yZFdyYXAs
IENTU1ZhbHVlQnJlYWtXb3JkKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBDU1NWYWx1ZVNwYWNlKTsKLSAgICAgICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgQ1NTVmFsdWVBZnRlcldo
aXRlU3BhY2UpOworICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxl
KHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZFdyaXRlUGxh
aW50ZXh0T25seSk7CisgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtXb3JkKTsKKyAgICAg
ICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVy
dHlXZWJraXROYnNwTW9kZSwgQ1NTVmFsdWVTcGFjZSk7CisgICAgICAgICAgICBhcHBseVByZXNl
bnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFr
LCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImZhbHNlIikpCi0gICAgICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRPbmx5KTsK
KyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRPbmx5KTsKICAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBoaWRkZW5BdHRyKSB7Ci0gICAgICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlTm9uZSk7CisgICAgICAgIGFwcGx5UHJl
c2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NW
YWx1ZU5vbmUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRyYWdnYWJsZUF0dHIp
IHsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJ0cnVlIikp
IHsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJE
cmFnLCBDU1NWYWx1ZUVsZW1lbnQpOwotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgICAgIGFw
cGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRV
c2VyRHJhZywgQ1NTVmFsdWVFbGVtZW50KTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9u
QXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBDU1NW
YWx1ZU5vbmUpOwogICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZh
bHVlKCksICJmYWxzZSIpKQotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5V2Via2l0VXNlckRyYWcsIENTU1ZhbHVlTm9uZSk7CisgICAgICAgICAgICBhcHBseVByZXNl
bnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcs
IENTU1ZhbHVlTm9uZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZGlyQXR0cikg
ewogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImF1dG8iKSkK
LSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCB1
bmljb2RlQmlkaUF0dHJpYnV0ZUZvckRpckF1dG8odGhpcykpOworICAgICAgICAgICAgYXBwbHlQ
cmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
LCB1bmljb2RlQmlkaUF0dHJpYnV0ZUZvckRpckF1dG8odGhpcykpOwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgYXR0
ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsKICAgICAgICAg
ICAgIGlmICghaGFzVGFnTmFtZShiZGlUYWcpICYmICFoYXNUYWdOYW1lKGJkb1RhZykgJiYgIWhh
c1RhZ05hbWUob3V0cHV0VGFnKSkKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CisgICAgICAgICAgICAgICAg
YXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpLCBDU1NWYWx1ZUVtYmVkKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OmxhbmdBdHRyKSkgewogICAgICAgICBtYXBMYW5ndWFn
ZUF0dHJpYnV0ZVRvTG9jYWxlKGF0dHIsIHN0eWxlKTsKQEAgLTcxMSwxMCArNzExLDEwIEBAIHZv
aWQgSFRNTEVsZW1lbnQ6OmFwcGx5QWxpZ25tZW50QXR0cmlidXQKICAgICAgICAgdmVydGljYWxB
bGlnblZhbHVlID0gQ1NTVmFsdWVUZXh0VG9wOwogCiAgICAgaWYgKGZsb2F0VmFsdWUgIT0gQ1NT
VmFsdWVJbnZhbGlkKQotICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGbG9h
dCwgZmxvYXRWYWx1ZSk7CisgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlGbG9hdCwgZmxvYXRWYWx1ZSk7CiAKICAgICBpZiAodmVydGlj
YWxBbGlnblZhbHVlICE9IENTU1ZhbHVlSW52YWxpZCkKLSAgICAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgdmVydGljYWxBbGlnblZhbHVlKTsKKyAgICAg
ICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVZl
cnRpY2FsQWxpZ24sIHZlcnRpY2FsQWxpZ25WYWx1ZSk7CiB9CiAKIGJvb2wgSFRNTEVsZW1lbnQ6
OnN1cHBvcnRzRm9jdXMoKSBjb25zdApAQCAtMTA5NSwxMiArMTA5NSwxMiBAQCB2b2lkIEhUTUxF
bGVtZW50OjphZGRIVE1MTGVuZ3RoVG9TdHlsZShTCiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bCAhPSB2LT5sZW5ndGgoKSkgewotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3Bl
cnR5SUQsIHYtPnN1YnN0cmluZygwLCBsKSk7CisgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlv
bkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIHByb3BlcnR5SUQsIHYtPnN1YnN0cmluZygwLCBsKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdHlsZS0+c2V0
UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUpOworICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmli
dXRlVG9TdHlsZShzdHlsZSwgcHJvcGVydHlJRCwgdmFsdWUpOwogfQogCiBzdGF0aWMgU3RyaW5n
IHBhcnNlQ29sb3JTdHJpbmdXaXRoQ3JhenlMZWdhY3lSdWxlcyhjb25zdCBTdHJpbmcmIGNvbG9y
U3RyaW5nKQpAQCAtMTE3MSwxMSArMTE3MSwxMSBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1M
Q29sb3JUb1N0eWxlKFN0CiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG5hbWVkIENTUyBjb2xv
ciBvciBhIDMvNi1kaWdpdCBoZXggY29sb3IsIHVzZSB0aGF0LgogICAgIENvbG9yIHBhcnNlZENv
bG9yKGNvbG9yU3RyaW5nKTsKICAgICBpZiAocGFyc2VkQ29sb3IuaXNWYWxpZCgpKSB7Ci0gICAg
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBjb2xvclN0cmluZyk7CisgICAgICAg
IGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgcHJvcGVydHlJRCwgY29s
b3JTdHJpbmcpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3R5bGUtPnNldFByb3Bl
cnR5KHByb3BlcnR5SUQsIHBhcnNlQ29sb3JTdHJpbmdXaXRoQ3JhenlMZWdhY3lSdWxlcyhjb2xv
clN0cmluZykpOworICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwg
cHJvcGVydHlJRCwgcGFyc2VDb2xvclN0cmluZ1dpdGhDcmF6eUxlZ2FjeVJ1bGVzKGNvbG9yU3Ry
aW5nKSk7CiB9CiAKIHZvaWQgU3R5bGVkRWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRp
ZXMoY29uc3QgRWxlbWVudCogc291cmNlRWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmgJKHJldmlzaW9uIDEwODMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDggKzEwMCw4IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCopOwogCi0gICAgc3RhdGljIHZvaWQgYWRkSFRNTExlbmd0aFRvU3R5bGUoU3R5bGVQcm9w
ZXJ0eVNldCosIGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICBzdGF0
aWMgdm9pZCBhZGRIVE1MQ29sb3JUb1N0eWxlKFN0eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiBjb2xvcik7CisgICAgdm9pZCBhZGRIVE1MTGVuZ3RoVG9TdHls
ZShTdHlsZVByb3BlcnR5U2V0KiwgaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUp
OworICAgIHZvaWQgYWRkSFRNTENvbG9yVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgaW50IHBy
b3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgY29sb3IpOwogCiAgICAgdm9pZCBhcHBseUFsaWdubWVu
dEF0dHJpYnV0ZVRvU3R5bGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopOwogICAgIHZv
aWQgYXBwbHlCb3JkZXJBdHRyaWJ1dGVUb1N0eWxlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlT
ZXQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAJKHJldmlz
aW9uIDEwODMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTcwLDExICsxNzAsMTEgQEAgdm9pZCBIVE1MRm9udEVsZW1lbnQ6
OmNvbGxlY3RTdHlsZUZvckF0dAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gc2l6ZUF0dHIpIHsK
ICAgICAgICAgaW50IHNpemUgPSAwOwogICAgICAgICBpZiAoY3NzVmFsdWVGcm9tRm9udFNpemVO
dW1iZXIoYXR0ci0+dmFsdWUoKSwgc2l6ZSkpCi0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgc2l6ZSk7CisgICAgICAgICAgICBhcHBseVByZXNlbnRh
dGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Rm9udFNpemUsIHNpemUpOwog
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNvbG9yQXR0cikKICAgICAgICAgYWRkSFRN
TENvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZhY2VBdHRyKQotICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAg
YXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRG
YW1pbHksIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OmNv
bGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEhSRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwODMyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDE0ICs1OSwx
NCBAQCB2b2lkIEhUTUxIUkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpCiB7CiAgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGF0dHItPnZhbHVlKCksICJsZWZ0IikpIHsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsICIwIik7IC8vIEZJWE1FOiBQYXNzIGFzIGludGVn
ZXIuCi0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5SaWdo
dCwgQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRl
VG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCAiMCIpOyAvLyBGSVhNRTogUGFz
cyBhcyBpbnRlZ2VyLgorICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NWYWx1ZUF1dG8pOwogICAgICAg
ICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJyaWdodCIpKSB7
Ci0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBD
U1NWYWx1ZUF1dG8pOwotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
TWFyZ2luUmlnaHQsICIwIik7IC8vIEZJWE1FOiBQYXNzIGFzIGludGVnZXIuCisgICAgICAgICAg
ICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFy
Z2luTGVmdCwgQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0
cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgIjAiKTsgLy8gRklY
TUU6IFBhc3MgYXMgaW50ZWdlci4KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1ZhbHVlQXV0byk7Ci0gICAg
ICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgQ1NTVmFs
dWVBdXRvKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShz
dHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NWYWx1ZUF1dG8pOworICAgICAgICAgICAg
YXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdp
blJpZ2h0LCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gd2lkdGhBdHRyKSB7CiAgICAgICAgIGJvb2wgb2s7CkBAIC03NiwyNCArNzYsMjQg
QEAgdm9pZCBIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaQogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0
aCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29sb3JB
dHRyKSB7Ci0gICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0
eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAg
ICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NW
YWx1ZVNvbGlkKTsKKyAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAg
YXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0
dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Zh
bHVlU29saWQpOworICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKICAgICAgICAg
YWRkSFRNTENvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+
dmFsdWUoKSk7CiAgICAgICAgIGFkZEhUTUxDb2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBub3NoYWRlQXR0cikgewotICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NT
VmFsdWVTb2xpZCk7Ci0gICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0
cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTVmFsdWVT
b2xpZCk7CisgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgYXBw
bHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRy
aWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFsdWVT
b2xpZCk7CiAgICAgICAgIGFkZEhUTUxDb2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9y
ZGVyQ29sb3IsIFN0cmluZygiZ3JleSIpKTsgLy8gRklYTUU6IFBhc3MgYXMgcmdiKCkgdmFsdWUu
CiAgICAgICAgIGFkZEhUTUxDb2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yLCBTdHJpbmcoImdyZXkiKSk7IC8vIEZJWE1FOiBQYXNzIGFzIHJnYigpIHZhbHVlLgog
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNpemVBdHRyKSB7CiAgICAgICAgIFN0cmlu
Z0ltcGwqIHNpID0gYXR0ci0+dmFsdWUoKS5pbXBsKCk7CiAgICAgICAgIGludCBzaXplID0gc2kt
PnRvSW50KCk7CiAgICAgICAgIGlmIChzaXplIDw9IDEpCi0gICAgICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgU3RyaW5nKCIwIikpOyAvLyBG
SVhNRTogUGFzcyBhcyBpbnRlZ2VyLgorICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRy
aWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBTdHJpbmco
IjAiKSk7IC8vIEZJWE1FOiBQYXNzIGFzIGludGVnZXIuCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgU3RyaW5n
OjpudW1iZXIoc2l6ZSAtIDIpKTsgLy8gRklYTUU6IFBhc3MgYXMgaW50ZWdlci4KICAgICB9IGVs
c2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNp
b24gMTA4MzI1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yQXQKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0
dHIpCiAgICAgICAgIGFwcGx5QWxpZ25tZW50QXR0cmlidXRlVG9TdHlsZShhdHRyLCBzdHlsZSk7
CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHZhbGlnbkF0dHIpCi0gICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIGF0dHItPnZhbHVlKCkpOwor
ICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3Bl
cnR5VmVydGljYWxBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZQogICAgICAgICBIVE1M
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAkocmV2aXNpb24gMTA4MzI1KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjAsMTcgKzYwLDE3IEBAIHZvaWQgSFRNTExJRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmkK
IHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHR5cGVBdHRyKSB7CiAgICAgICAgIGlmIChhdHRy
LT52YWx1ZSgpID09ICJhIikKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJBbHBoYSk7CisgICAgICAgICAgICBhcHBs
eVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TGlzdFN0eWxl
VHlwZSwgQ1NTVmFsdWVMb3dlckFscGhhKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUo
KSA9PSAiQSIpCi0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0
U3R5bGVUeXBlLCBDU1NWYWx1ZVVwcGVyQWxwaGEpOworICAgICAgICAgICAgYXBwbHlQcmVzZW50
YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENT
U1ZhbHVlVXBwZXJBbHBoYSk7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gImki
KQotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlw
ZSwgQ1NTVmFsdWVMb3dlclJvbWFuKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0
cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxv
d2VyUm9tYW4pOwogICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJJIikKLSAgICAg
ICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1Zh
bHVlVXBwZXJSb21hbik7CisgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRv
U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlclJvbWFu
KTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiMSIpCi0gICAgICAgICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZURlY2lt
YWwpOworICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxl
LCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlRGVjaW1hbCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5
cGUsIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1
dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIGF0dHItPnZhbHVlKCkp
OwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmli
dXRlKGF0dHIsIHN0eWxlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1
ZWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJx
dWVlRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwODMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1hcnF1ZWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTYgKzk1LDE2IEBA
IHZvaWQgSFRNTE1hcnF1ZWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3IKICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBsb29wQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCku
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiLTEiIHx8IGVx
dWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJpbmZpbml0ZSIpKQotICAgICAgICAgICAg
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9u
LCBDU1NWYWx1ZUluZmluaXRlKTsKKyAgICAgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0
dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24s
IENTU1ZhbHVlSW5maW5pdGUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGFk
ZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0
aW9uLCBhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGJlaGF2aW9yQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0
eSgpKQotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZVN0eWxlLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9u
QXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIGF0
dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpcmVjdGlvbkF0
dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIGF0
dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIGF0dHItPnZhbHVl
KCkpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0
cmlidXRlKGF0dHIsIHN0eWxlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9M
aXN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xp
c3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTA4MzI1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT0xpc3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTUgKzY1LDE1IEBAIHZv
aWQgSFRNTE9MaXN0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXQKIHsKICAgICBpZiAoYXR0ci0+
bmFtZSgpID09IHR5cGVBdHRyKSB7CiAgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpID09ICJhIikK
LSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IENTU1ZhbHVlTG93ZXJBbHBoYSk7CisgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJp
YnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVMb3dl
ckFscGhhKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiQSIpCi0gICAgICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1
ZVVwcGVyQWxwaGEpOworICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlVXBwZXJBbHBoYSk7
CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gImkiKQotICAgICAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVMb3dlclJv
bWFuKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHls
ZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2VyUm9tYW4pOwogICAgICAg
ICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJJIikKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlVXBwZXJSb21hbik7Cisg
ICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlclJvbWFuKTsKICAgICAgICAgZWxzZSBp
ZiAoYXR0ci0+dmFsdWUoKSA9PSAiMSIpCi0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZURlY2ltYWwpOworICAgICAgICAgICAg
YXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUxpc3RT
dHlsZVR5cGUsIENTU1ZhbHVlRGVjaW1hbCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDEw
ODMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NSwxMyArNTUsMTMgQEAgdm9pZCBIVE1MUGFyYWdyYXBoRWxlbWVu
dDo6Y29sbGVjdFN0eWxlRgogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRyKSB7
CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAibWlkZGxlIikg
fHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImNlbnRlciIpKQotICAgICAgICAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtp
dENlbnRlcik7CisgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUo
c3R5bGUsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdENlbnRlcik7CiAgICAg
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJsZWZ0IikpCi0g
ICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1Zh
bHVlV2Via2l0TGVmdCk7CisgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRv
U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdExlZnQpOwog
ICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAicmlnaHQi
KSkKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwg
Q1NTVmFsdWVXZWJraXRSaWdodCk7CisgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJp
YnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdFJp
Z2h0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2Vu
dGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHIt
PnZhbHVlKCkpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDgzMjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Ojpjb2xs
ZWN0U3R5CiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKICAgICAgICAg
aWYgKCFhdHRyLT5pc0VtcHR5KCkpCi0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlDYXB0aW9uU2lkZSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBhcHBseVBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Q2FwdGlvblNpZGUs
IGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVj
dFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDgzMjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODUsNyArODUsNyBAQCBib29sIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojppc1ByZXNlbnRh
dGlvCiB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKICAgICBpZiAoYXR0
ci0+bmFtZSgpID09IG5vd3JhcEF0dHIpIHsKLSAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVXZWJraXROb3dyYXApOworICAgICAgICBhcHBs
eVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2hpdGVTcGFj
ZSwgQ1NTVmFsdWVXZWJraXROb3dyYXApOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IHdpZHRoQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBpbnQgd2lkdGhJbnQgPSBhdHRyLT52YWx1ZSgpLnRvSW50KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwODMyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvckF0CiAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kSW1hZ2UsIENTU0ltYWdlVmFsdWU6OmNyZWF0ZShkb2N1bWVudCgpLT5j
b21wbGV0ZVVSTCh1cmwpLnN0cmluZygpKSkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IHZhbGlnbkF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBhdHRyLT52
YWx1ZSgpKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShz
dHlsZSwgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjZWxsc3BhY2luZ0F0dHIpIHsKICAgICAgICAgaWYgKCFh
dHRyLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICBhZGRIVE1MTGVuZ3RoVG9TdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBhdHRyLT52YWx1ZSgpKTsKQEAgLTMyNiwyOSArMzI2
LDI5IEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXQKICAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52
YWx1ZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0
dHItPnZhbHVlKCksICJjZW50ZXIiKSkgewotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0LCBDU1NWYWx1ZUF1dG8pOwotICAgICAg
ICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCwg
Q1NTVmFsdWVBdXRvKTsKKyAgICAgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0
ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQsIENTU1ZhbHVlQXV0
byk7CisgICAgICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCwgQ1NTVmFsdWVBdXRvKTsKICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUZsb2F0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlv
bkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5RmxvYXQsIGF0dHItPnZhbHVlKCkp
OwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcnVsZXNBdHRyKSB7
CiAgICAgICAgIC8vIFRoZSBwcmVzZW5jZSBvZiBhIHZhbGlkIHJ1bGVzIGF0dHJpYnV0ZSBjYXVz
ZXMgYm9yZGVyIGNvbGxhcHNpbmcgdG8gYmUgZW5hYmxlZC4KICAgICAgICAgaWYgKG1fcnVsZXNB
dHRyICE9IFVuc2V0UnVsZXMpCi0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlCb3JkZXJDb2xsYXBzZSwgQ1NTVmFsdWVDb2xsYXBzZSk7CisgICAgICAgICAgICBhcHBs
eVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29s
bGFwc2UsIENTU1ZhbHVlQ29sbGFwc2UpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGZyYW1lQXR0cikgewogICAgICAgICBib29sIGJvcmRlclRvcDsKICAgICAgICAgYm9vbCBib3Jk
ZXJSaWdodDsKICAgICAgICAgYm9vbCBib3JkZXJCb3R0b207CiAgICAgICAgIGJvb2wgYm9yZGVy
TGVmdDsKICAgICAgICAgaWYgKGdldEJvcmRlcnNGcm9tRnJhbWVBdHRyaWJ1dGVWYWx1ZShhdHRy
LT52YWx1ZSgpLCBib3JkZXJUb3AsIGJvcmRlclJpZ2h0LCBib3JkZXJCb3R0b20sIGJvcmRlckxl
ZnQpKSB7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJU
b3BXaWR0aCwgQ1NTVmFsdWVUaGluKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NWYWx1ZVRoaW4pOwotICAgICAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NWYWx1ZVRo
aW4pOwotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmln
aHRXaWR0aCwgQ1NTVmFsdWVUaGluKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBib3JkZXJUb3AgPyBDU1NWYWx1ZVNvbGlkIDogQ1NT
VmFsdWVIaWRkZW4pOwotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tU3R5bGUsIGJvcmRlckJvdHRvbSA/IENTU1ZhbHVlU29saWQgOiBDU1NWYWx1
ZUhpZGRlbik7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0U3R5bGUsIGJvcmRlckxlZnQgPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4p
OwotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRT
dHlsZSwgYm9yZGVyUmlnaHQgPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4pOworICAg
ICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NWYWx1ZVRoaW4pOworICAgICAgICAgICAgYXBwbHlQcmVz
ZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBDU1NWYWx1ZVRoaW4pOworICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1
dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTVmFsdWVUaGlu
KTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NWYWx1ZVRoaW4pOworICAgICAgICAgICAg
YXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRl
clRvcFN0eWxlLCBib3JkZXJUb3AgPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4pOwor
ICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBib3JkZXJCb3R0b20gPyBDU1NWYWx1ZVNvbGlkIDog
Q1NTVmFsdWVIaWRkZW4pOworICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVU
b1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgYm9yZGVyTGVmdCA/IENT
U1ZhbHVlU29saWQgOiBDU1NWYWx1ZUhpZGRlbik7CisgICAgICAgICAgICBhcHBseVByZXNlbnRh
dGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwg
Ym9yZGVyUmlnaHQgPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4pOwogICAgICAgICB9
CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1
dGUoYXR0ciwgc3R5bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQ
YXJ0RWxlbWVudC5jcHAJKHJldmlzaW9uIDEwODMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwyNSArNTYsMjUg
QEAgdm9pZCBIVE1MVGFibGVQYXJ0RWxlbWVudDo6Y29sbGVjdFN0eWxlRgogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlcmNvbG9yQXR0cikgewogICAgICAgICBpZiAoIWF0dHIt
PnZhbHVlKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1ZVNv
bGlkKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NWYWx1
ZVNvbGlkKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShz
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAg
ICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICAgICAgYXBwbHlQcmVz
ZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0
ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xp
ZCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB2YWxpZ25BdHRy
KSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBhdHRyLT52YWx1ZSgp
KTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGF0dHItPnZhbHVlKCksICJtaWRkbGUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52
YWx1ZSgpLCAiY2VudGVyIikpCi0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0Q2VudGVyKTsKKyAgICAgICAgICAgIGFwcGx5
UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlUZXh0QWxpZ24s
IENTU1ZhbHVlV2Via2l0Q2VudGVyKTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYXR0ci0+dmFsdWUoKSwgImFic21pZGRsZSIpKQotICAgICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZUNlbnRlcik7CisgICAgICAgICAg
ICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5VGV4
dEFsaWduLCBDU1NWYWx1ZUNlbnRlcik7CiAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGF0dHItPnZhbHVlKCksICJsZWZ0IikpCi0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0TGVmdCk7CisgICAgICAgICAg
ICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5VGV4
dEFsaWduLCBDU1NWYWx1ZVdlYmtpdExlZnQpOwogICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAicmlnaHQiKSkKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRSaWdodCk7CisgICAg
ICAgICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3Bl
cnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdFJpZ2h0KTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1
ZSgpKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHls
ZSwgQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgp
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGFkZEhUTUxMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwODMyNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
NiwxMSArMTM2LDExIEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6Y29sbGVjdFN0eWxlRm8K
IHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdyYXBBdHRyKSB7CiAgICAgICAgIGlmIChzaG91
bGRXcmFwVGV4dCgpKSB7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVByZVdyYXApOwotICAgICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtXb3JkKTsKKyAgICAgICAg
ICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlX
aGl0ZVNwYWNlLCBDU1NWYWx1ZVByZVdyYXApOworICAgICAgICAgICAgYXBwbHlQcmVzZW50YXRp
b25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJy
ZWFrV29yZCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVByZSk7Ci0gICAgICAgICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVOb3JtYWwpOworICAg
ICAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9w
ZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJlKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0
aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVO
b3JtYWwpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDgzMjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgSFRNTFVMaXN0RWxlbWVudDo6aXNQcmVzZW50YXRp
b25BdHQKIHZvaWQgSFRNTFVMaXN0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7CiAgICAgaWYgKGF0dHIt
Pm5hbWUoKSA9PSB0eXBlQXR0cikKLSAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5TGlzdFN0eWxlVHlwZSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFwcGx5UHJlc2VudGF0
aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBhdHRy
LT52YWx1ZSgpKTsKICAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lv
biAxMDgzMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIwLDcgKzE5MjAsNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChjCiAKICAgICBTdHJpbmcgZGVjbGFyYXRp
b25UZXh0KCJmb250OiAiKTsKICAgICBkZWNsYXJhdGlvblRleHQgKz0gbmV3Rm9udDsKLSAgICBw
YXJzZXIucGFyc2VEZWNsYXJhdGlvbih0ZW1wRGVjbC5nZXQoKSwgZGVjbGFyYXRpb25UZXh0KTsK
KyAgICBwYXJzZXIucGFyc2VEZWNsYXJhdGlvbih0ZW1wRGVjbC5nZXQoKSwgZGVjbGFyYXRpb25U
ZXh0LCAwLCAwKTsKICAgICBpZiAodGVtcERlY2wtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCShyZXZpc2lv
biAxMDgzMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDI2ICs1OCwyNiBAQCBib29sIE1hdGhNTEVsZW1lbnQ6OmlzUHJl
c2VudGF0aW9uQXR0cmliCiB2b2lkIE1hdGhNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gbWF0aGJhY2tncm91bmRBdHRyKQotICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOworICAg
ICAgICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gbWF0aHNpemVBdHRyKSB7CiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgdGhyZWUgdmFs
dWVzIG9mIG1hdGhzaXplIGFyZSBoYW5kbGVkIGluIFdlYkNvcmUvY3NzL21hdGhtbC5jc3MKICAg
ICAgICAgaWYgKGF0dHItPnZhbHVlKCkgIT0gIm5vcm1hbCIgJiYgYXR0ci0+dmFsdWUoKSAhPSAi
c21hbGwiICYmIGF0dHItPnZhbHVlKCkgIT0gImJpZyIpCi0gICAgICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAg
ICBhcHBseVByZXNlbnRhdGlvbkF0dHJpYnV0ZVRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Rm9u
dFNpemUsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1h
dGhjb2xvckF0dHIpCi0gICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9y
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAgICAvLyBGSVhN
RTogZGVwcmVjYXRlZCBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGxvb3NlIGluIGEgY29uZmxpY3Qg
d2l0aCBhIG5vbiBkZXByZWNhdGVkIGF0dHJpYnV0ZQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBmb250c2l6ZUF0dHIpCi0gICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUZvbnRTaXplLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRy
aWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRTaXplLCBhdHRyLT52YWx1ZSgpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmFja2dyb3VuZEF0dHIpCi0gICAgICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBjb2xvckF0dHIpCi0gICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYXBwbHlQcmVzZW50YXRpb25B
dHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUNvbG9yLCBhdHRyLT52YWx1ZSgpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZm9udHN0eWxlQXR0cikKLSAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxlLCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0
eUZvbnRTdHlsZSwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGZvbnR3ZWlnaHRBdHRyKQotICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlG
b250V2VpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRy
aWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGF0dHItPnZhbHVlKCkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBmb250ZmFtaWx5QXR0cikKLSAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgYXR0ci0+dmFsdWUoKSk7
CisgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJv
cGVydHlGb250RmFtaWx5LCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNT
RVJUKCFpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShhdHRyKSk7CiAgICAgICAgIFN0eWxlZEVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTA4MzI1KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyMSw3ICszMjEsNiBAQCB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
RG9jCiAgICAgU1ZHRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBkb2N1bWVu
dCgpLT5tYXBwZWRFbGVtZW50U2hlZXQoKS0+YXBwZW5kKG1fZm9udEZhY2VSdWxlKTsKICAgICBt
X2ZvbnRGYWNlUnVsZS0+c2V0UGFyZW50U3R5bGVTaGVldChkb2N1bWVudCgpLT5tYXBwZWRFbGVt
ZW50U2hlZXQoKSk7Ci0gICAgbV9mb250RmFjZVJ1bGUtPmRlY2xhcmF0aW9uKCktPnNldENvbnRl
eHRTdHlsZVNoZWV0KGRvY3VtZW50KCktPm1hcHBlZEVsZW1lbnRTaGVldCgpKTsKICAgICByZWJ1
aWxkRm9udEZhY2UoKTsKIH0KIApAQCAtMzI5LDcgKzMyOCw3IEBAIHZvaWQgU1ZHRm9udEZhY2VF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3UKIHsKICAgICByZW1vdmVGcm9tTWFwcGVkRWxlbWVudFNo
ZWV0KCk7CiAgICAgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotICAgIG1fZm9u
dEZhY2VSdWxlLT5kZWNsYXJhdGlvbigpLT5wYXJzZURlY2xhcmF0aW9uKGVtcHR5U3RyaW5nKCkp
OworICAgIG1fZm9udEZhY2VSdWxlLT5kZWNsYXJhdGlvbigpLT5wYXJzZURlY2xhcmF0aW9uKGVt
cHR5U3RyaW5nKCksIDApOwogfQogCiB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFm
dGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQpAQCAtMzUwLDcgKzM0OSw2IEBAIHZvaWQg
U1ZHRm9udEZhY2VFbGVtZW50OjpyZW1vdmVGcm9tTWFwcGUKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgfQotICAgIG1fZm9udEZhY2VSdWxlLT5kZWNsYXJhdGlvbigpLT5zZXRD
b250ZXh0U3R5bGVTaGVldCgwKTsKICAgICBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdl
ZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDEwODMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsOSArMTAzLDkgQEAgdm9pZCBT
VkdJbWFnZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dAogICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0ci0+bmFtZSgpKSkKICAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYXBw
bHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCBh
dHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omhl
aWdodEF0dHIpCi0gICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwg
YXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0cmlidXRlVG9TdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOwogfQogCiB2b2lkIFNW
R0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMTA4MzI1KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMDMsNyArMzAzLDcgQEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JB
dAogewogICAgIGludCBwcm9wZXJ0eUlEID0gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJ
ZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKTsKICAgICBpZiAocHJvcGVydHlJRCA+
IDApCi0gICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBhdHRyLT52YWx1ZSgp
KTsKKyAgICAgICAgYXBwbHlQcmVzZW50YXRpb25BdHRyaWJ1dGVUb1N0eWxlKHN0eWxlLCBwcm9w
ZXJ0eUlELCBhdHRyLT52YWx1ZSgpKTsKIH0KIAogdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTA4MzI1KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
Myw5ICsyNDMsOSBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6Y29sbGVjdFN0eWxlCiAg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBwcmVzZXJ2ZVN0
cmluZywgKCJwcmVzZXJ2ZSIpKTsKIAogICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSBwcmVz
ZXJ2ZVN0cmluZykKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdo
aXRlU3BhY2UsIENTU1ZhbHVlUHJlKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0aW9uQXR0
cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVByZSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdoaXRlU3BhY2UsIENTU1ZhbHVlTm93cmFwKTsKKyAgICAgICAgICAgIGFwcGx5UHJlc2VudGF0
aW9uQXR0cmlidXRlVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1
ZU5vd3JhcCk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127961</attachid>
            <date>2012-02-21 06:49:33 -0800</date>
            <delta_ts>2012-02-21 07:26:43 -0800</delta_ts>
            <desc>workaround for this build breakage</desc>
            <filename>1.patch</filename>
            <type>text/plain</type>
            <size>806</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNGUyZWNhNC4uYTdkOGU4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKQEAgLTQ2OSw3ICs0NjksMTEgQEAgc3RhdGljIGJvb2wgcGFyc2VT
aW1wbGVMZW5ndGhWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3Bl
cnR5SWQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
Y29udGV4dFN0eWxlU2hlZXQtPmZpbmREb2N1bWVudCgpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlVmFsdWUo
bnVtYmVyLCB1bml0KSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobnVtYmVyLCB1bml0KTsK
KyAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlOworICAgIGlmIChkb2N1bWVudCkKKyAgICAgIHZh
bHVlID0gZG9jdW1lbnQtPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVWYWx1ZShudW1iZXIsIHVuaXQp
OworICAgIGVsc2UKKyAgICAgIHZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShudW1i
ZXIsIHVuaXQpOwogICAgIGRlY2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0eShDU1NQcm9wZXJ0
eShwcm9wZXJ0eUlkLCB2YWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCkpOwogICAgIHJldHVybiB0
cnVlOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127969</attachid>
            <date>2012-02-21 07:26:57 -0800</date>
            <delta_ts>2012-02-21 07:31:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79092-20120221163433.patch</filename>
            <type>text/plain</type>
            <size>2185</size>
            <attacher name="Alexander Færøy">ahf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYzNGJhZjBkNDZjZTUx
MDRmYTEyOWQ1NWY1ZjgwMDQzMDhkZDJkMC4uNWFmMTNjOWZmMWI4MDgzNTNlZmQwNGViMjEzZjhi
ZjFmMTkwODE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAyLTIxICBBbGV4
YW5kZXIgRsOmcsO4eSAgPGFsZXhhbmRlci5mYWVyb3lAbm9raWEuY29tPgorCisgICAgICAgIFJl
bW92ZSBzdHlsZXNoZWV0IHBvaW50ZXIgZnJvbSBTdHlsZVByb3BlcnR5U2V0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTA5MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFF0IGJ1aWxkZml4IGFmdGVyIHIx
MDgzNDUuCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlQ29sb3JWYWx1ZSk6CisKIDIwMTItMDItMjEgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9z
c3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgc3R5bGVzaGVldCBwb2ludGVyIGZyb20g
U3R5bGVQcm9wZXJ0eVNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA3ZmMwZDJhNGFi
OGVjOTA4YTUxOTljMDg0NDNiZjE0Nzc4OGVhYzBjLi41NGZkY2YzZDk4ODkwM2UwN2M0M2VjZjRh
ZGY4ODAzMzQ3MDFiOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMzQ4LDE0ICsz
NDgsMjIgQEAgc3RhdGljIGJvb2wgcGFyc2VDb2xvclZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRl
Y2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QKIAogICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGNvbnRleHRTdHlsZVNoZWV0LT5maW5kRG9jdW1lbnQoKTsKICAgICBpZiAodmFsaWRQcmlt
aXRpdmUpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGRvY3VtZW50ID8gZG9j
dW1lbnQtPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFsdWVJRCkgOiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZUlEKTsKKyAgICAgICAgUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZTsKKyAgICAgICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAg
dmFsdWUgPSBkb2N1bWVudC0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2
YWx1ZUlEKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsdWUgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZUlEKTsKICAgICAgICAgZGVjbGFyYXRpb24tPmFk
ZFBhcnNlZFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJlbGVhc2UoKSwg
aW1wb3J0YW50KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBSR0JBMzIgY29s
b3I7CiAgICAgaWYgKCFDU1NQYXJzZXI6OmZhc3RQYXJzZUNvbG9yKGNvbG9yLCBzdHJpbmcsIHN0
cmljdCAmJiBzdHJpbmdbMF0gIT0gJyMnKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5jc3NWYWx1ZVBvb2wo
KS0+Y3JlYXRlQ29sb3JWYWx1ZShjb2xvcikgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29s
b3IoY29sb3IpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWU7CisgICAgaWYgKGRvY3VtZW50
KQorICAgICAgICB2YWx1ZSA9IGRvY3VtZW50LT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlQ29sb3JW
YWx1ZShjb2xvcik7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVDb2xvcihjb2xvcik7CiAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnR5
KENTU1Byb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>