<?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>137068</bug_id>
          
          <creation_ts>2014-09-24 09:25:11 -0700</creation_ts>
          <short_desc>Use is&lt;HTML*Element&gt;() instead of isHTML*Element() - Part 1</short_desc>
          <delta_ts>2014-09-24 16:30:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137015</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>alex.christensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1036975</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-24 09:25:11 -0700</bug_when>
    <thetext>Start using is&lt;HTML*Element&gt;() instead of isHTML*Element().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036976</commentid>
    <comment_count>1</comment_count>
      <attachid>238600</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-24 09:30:49 -0700</bug_when>
    <thetext>Created attachment 238600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037003</commentid>
    <comment_count>2</comment_count>
      <attachid>238600</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-09-24 12:24:37 -0700</bug_when>
    <thetext>Comment on attachment 238600
Patch

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

&gt; Source/WebCore/html/HTMLFormElement.cpp:595
&gt; -        if (!isHTMLFormControlElement(element) &amp;&amp; !isHTMLObjectElement(element))
&gt; +        if (!isHTMLFormControlElement(element) &amp;&amp; !is&lt;HTMLObjectElement&gt;(element))

Why don&apos;t we use is&lt;HTMLFormControlElement&gt; since we&apos;re modifying this line anyway?

&gt; Source/WebCore/html/HTMLNameCollection.cpp:70
&gt; +    return element.hasTagName(appletTag) || (is&lt;HTMLObjectElement&gt;(element) &amp;&amp; downcast&lt;HTMLObjectElement&gt;(element).isDocNamedItem())
&gt;          || (isHTMLImageElement(element) &amp;&amp; element.hasName());

Why don&apos;t we also use is&lt;HTMLImageElement&gt; while we&apos;re at it?

&gt; Source/WebCore/html/HTMLNameCollection.cpp:77
&gt; +        || element.hasTagName(appletTag) || (is&lt;HTMLObjectElement&gt;(element) &amp;&amp; downcast&lt;HTMLObjectElement&gt;(element).isDocNamedItem())
&gt;          || isHTMLImageElement(element);

Ditto.

&gt; Source/WebCore/html/HTMLSelectElement.cpp:366
&gt; -        return isHTMLOptionElement(child) || isHTMLOptGroupElement(child) || validationMessageShadowTreeContains(child);
&gt; +        return is&lt;HTMLOptionElement&gt;(child) || isHTMLOptGroupElement(child) || validationMessageShadowTreeContains(child);

Ditto about using is&lt;HTMLOptGroupElement&gt;.

&gt; Source/WebCore/html/parser/HTMLElementStack.cpp:123
&gt;      return !isHTMLOptGroupElement(item-&gt;node()) &amp;&amp; !isHTMLOptionElement(item-&gt;node());
&gt; +    return !isHTMLOptGroupElement(item-&gt;node()) &amp;&amp; !is&lt;HTMLOptionElement&gt;(item-&gt;node());

Ditto about using is&lt;HTMLOptGroupElement&gt;.

&gt; Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp:519
&gt;          if ((isHTMLFrameElement(node) || isHTMLIFrameElement(node) || isHTMLObjectElement(node))
&gt; +        if ((isHTMLFrameElement(node) || isHTMLIFrameElement(node) || is&lt;HTMLObjectElement&gt;(node))

Ditto for isHTMLFrameElement and isHTMLIFrameElement.

&gt; Source/WebCore/rendering/HitTestResult.cpp:321
&gt;          || isHTMLImageElement(m_innerNonSharedNode.get())

Why don&apos;t we also use is&lt;HTMLImageElement&gt;?

&gt; Source/WebCore/rendering/RenderBox.cpp:2480
&gt; +    if (logicalWidth.type() == Auto &amp;&amp; !isStretchingColumnFlexItem(*this) &amp;&amp; element() &amp;&amp; (is&lt;HTMLInputElement&gt;(element()) || element()-&gt;hasTagName(selectTag) || element()-&gt;hasTagName(buttonTag) || is&lt;HTMLTextAreaElement&gt;(element()) || element()-&gt;hasTagName(legendTag)))

It&apos;s weird that we don&apos;t use is&lt;~&gt; for only two types of elements. Can we fix that?

&gt; Source/WebCore/rendering/RenderFileUploadControl.cpp:258
&gt; +    return buttonNode &amp;&amp; buttonNode-&gt;isHTMLElement() &amp;&amp; is&lt;HTMLInputElement&gt;(buttonNode) ? downcast&lt;HTMLInputElement&gt;(buttonNode) : nullptr;

Isn&apos;t it redundant to check buttonNode-&gt;isHTMLElement()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037004</commentid>
    <comment_count>3</comment_count>
      <attachid>238600</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-24 12:28:46 -0700</bug_when>
    <thetext>Comment on attachment 238600
Patch

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

Thanks

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:595
&gt;&gt; +        if (!isHTMLFormControlElement(element) &amp;&amp; !is&lt;HTMLObjectElement&gt;(element))
&gt; 
&gt; Why don&apos;t we use is&lt;HTMLFormControlElement&gt; since we&apos;re modifying this line anyway?

is&lt;HTMLFormControlElement&gt;() does not work yet. It needs https://bugs.webkit.org/show_bug.cgi?id=137056 to land first.

&gt;&gt; Source/WebCore/html/HTMLNameCollection.cpp:70
&gt;&gt;          || (isHTMLImageElement(element) &amp;&amp; element.hasName());
&gt; 
&gt; Why don&apos;t we also use is&lt;HTMLImageElement&gt; while we&apos;re at it?

Sure, I can update the others on the lines I edited in this patch. Those classes are in my Part 2 anyway.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:2480
&gt;&gt; +    if (logicalWidth.type() == Auto &amp;&amp; !isStretchingColumnFlexItem(*this) &amp;&amp; element() &amp;&amp; (is&lt;HTMLInputElement&gt;(element()) || element()-&gt;hasTagName(selectTag) || element()-&gt;hasTagName(buttonTag) || is&lt;HTMLTextAreaElement&gt;(element()) || element()-&gt;hasTagName(legendTag)))
&gt; 
&gt; It&apos;s weird that we don&apos;t use is&lt;~&gt; for only two types of elements. Can we fix that?

Yes, once I am done with the transition, I am planning to use is&lt;&gt;() more instead of hasTagName() more in a follow-up patch. However, I&apos;ll take care of this line in this patch.

&gt;&gt; Source/WebCore/rendering/RenderFileUploadControl.cpp:258
&gt;&gt; +    return buttonNode &amp;&amp; buttonNode-&gt;isHTMLElement() &amp;&amp; is&lt;HTMLInputElement&gt;(buttonNode) ? downcast&lt;HTMLInputElement&gt;(buttonNode) : nullptr;
&gt; 
&gt; Isn&apos;t it redundant to check buttonNode-&gt;isHTMLElement()?

It is, I&apos;ll drop it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037019</commentid>
    <comment_count>4</comment_count>
      <attachid>238608</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-24 13:40:06 -0700</bug_when>
    <thetext>Created attachment 238608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037025</commentid>
    <comment_count>5</comment_count>
      <attachid>238608</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-24 14:25:33 -0700</bug_when>
    <thetext>Comment on attachment 238608
Patch

Clearing flags on attachment: 238608

Committed r173932: &lt;http://trac.webkit.org/changeset/173932&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037026</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-24 14:25:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037075</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-09-24 16:22:12 -0700</bug_when>
    <thetext>This broke my WinCairo build.  is is not defined in DomCoreClasses.cpp.  https://www.youtube.com/watch?v=j4XT-l-_3y0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037077</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-24 16:24:49 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This broke my WinCairo build.  is is not defined in DomCoreClasses.cpp.  https://www.youtube.com/watch?v=j4XT-l-_3y0

Looks like we need &quot;WebCore::&quot; Apparently this code is not under WebCore namespace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037081</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-24 16:30:12 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This broke my WinCairo build.  is is not defined in DomCoreClasses.cpp.  https://www.youtube.com/watch?v=j4XT-l-_3y0

Build fix landed in http://trac.webkit.org/changeset/173938. Thanks for notifying me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238600</attachid>
            <date>2014-09-24 09:30:49 -0700</date>
            <delta_ts>2014-09-24 13:40:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137068-20140924093048.patch</filename>
            <type>text/plain</type>
            <size>128566</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWExM2IxOTI2ZWY0OTk4
YmY2N2FlMGI0N2EzMzcxMTNlZmRhZDgzMy4uYWFiOGU1MDUxYzY2YzA2MDcxOGIzNmUyODY3OTA2
MGJiOTA2ZjYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwMyBAQAogMjAxNC0wOS0yNCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIGlzPEhUTUwq
RWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkgLSBQYXJ0IDEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzA2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVzaW5nIGlzPEhU
TUwqRWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkuCisgICAgICAgIFJlbWFp
bmluZyB1c2FnZXMgd2lsbCBiZSB1cGRhdGVkIGluIGEgZm9sbG93LXVwIHBhdGNoIHRvCisgICAg
ICAgIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgY2hhbmdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
TGlzdEJveE9wdGlvbjo6aXNTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbjo6Y2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OnN0cmluZ1ZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpsaXN0Qm94T3B0aW9uUGFyZW50
Tm9kZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9s
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZTo6dmFs
dWVEZXNjcmlwdGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0
T3B0aW9uOjpzZXRFbGVtZW50KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51
TGlzdFBvcHVwOjptZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc05hdGl2ZVRl
eHRDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpp
c05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojppc0lucHV0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmlzUmVhZE9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OnZhbHVlRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6Om1pblZhbHVlRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNOb2Rl
QWN0aW9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6dGl0bGVFbGVtZW50VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6dmlzaWJsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojpjb2xvclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2libGVOYW1lRm9yTm9k
ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRmlsZVVw
bG9hZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9s
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0
RmllbGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNo
ZUF0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlDaGlsZHJlblNlbGVjdGlvbkNoYW5n
ZSk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6aXNFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OmlzQ2hlY2tlZCk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5
bGUpOgorICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZWxl
Y3RBbGwpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZFBlcmZvcm1T
bWFydFJlcGxhY2UpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjppc0luUGFzc3dvcmRGaWVsZCk6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENv
bnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2d0ay9FZGl0b3JH
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudFVSTCk6CisgICAgICAgICogZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRUZXh0QWxp
Z25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5n
L21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6
YXBwZW5kVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjppc1BsYWluVGV4dE1hcmt1cCk6CisgICAg
ICAgIChXZWJDb3JlOjpjb2xsZWN0RWxlbWVudHNUb1JlbW92ZUZyb21GcmFnbWVudCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc01hdGNo
aW5nRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAg
ICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
aG91bGRBdXRvZm9jdXMpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6Z2V0VGV4dEZpZWxkVmFsdWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleCk6CisgICAg
ICAgICogaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElt
YWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1h
Z2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxOYW1lQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVt
ZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKToK
KyAgICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE9wdEdyb3VwRWxlbWVudDo6cmVjYWxjU2VsZWN0T3B0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OmluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50
Ojpvd25lclNlbGVjdEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFkZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxl
Y3RFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNl
bGVjdEVsZW1lbnQ6Om5leHRWYWxpZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxl
Y3RFbGVtZW50OjpzYXZlTGFzdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6c2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hPbkNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RPcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlvblRvTGlzdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50OjpsaXN0VG9PcHRpb25JbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6ZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzYXZlRm9ybUNvbnRyb2xTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2VhcmNoT3B0aW9uc0Zv
clZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZXN0b3JlRm9y
bUNvbnRyb2xTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YXBw
ZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVTZWxlY3RlZFN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVs
dEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGFz
dFNlbGVjdGVkTGlzdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpvcHRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojph
Y2Nlc3NLZXlTZXRTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RF
bGVtZW50OjpsZW5ndGgpOgorICAgICAgICAqIGh0bWwvUmFkaW9JbnB1dFR5cGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmFkaW9JbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpSYWRpb0lucHV0VHlwZTo6aXNLZXlib2FyZEZvY3VzYWJsZSk6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aGFzSW1wbGllZEVuZFRhZyk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVsZW1l
bnRTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OmlzU2VsZWN0U2NvcGVN
YXJrZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjptZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk6CisgICAgICAgICogbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpjcmVhdGUp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6aGFuZGxlRmFsbGJhY2tDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvSW1h
Z2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVu
ZGluZ0JlZm9yZUxvYWRFdmVudCk6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9DaHJv
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzZXRUb29sVGlwKToKKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1N1Ym1pdEltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50
KToKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjbGVhclNlbGVjdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdCk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmcmFt
ZU93bmVyVVJMQXR0cmlidXRlTmFtZSk6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5TY3JvbGxJbkRpcmVjdGlvbik6CisgICAgICAg
ICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdDo6YWx0RGlzcGxheVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjphYnNvbHV0ZUltYWdlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6
OmFic29sdXRlUERGVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmlzQ29u
dGVudEVkaXRhYmxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnJlc2l6ZVRleHRQZXJtaXR0ZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzaXplc0xv
Z2ljYWxXaWR0aFRvRml0Q29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCdXR0b246OnVwZGF0ZUZyb21FbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJ1dHRvbjo6Y2FuSGF2ZUdlbmVyYXRlZENoaWxk
cmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJEZXRhaWxzTWFya2VyOjppc09wZW4pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6dXBsb2FkQnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnVwZGF0
ZUFsdFRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmFkZEZvY3VzUmluZ1JlY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdGVkT3B0
aW9uQ291bnQpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6
CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6c2V0VGV4dEZyb21PcHRpb24pOgorICAgICAgICAo
UmVuZGVyTWVudUxpc3Q6Oml0ZW1UZXh0KToKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjppdGVt
SXNFbmFibGVkKToKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjppdGVtSXNTZWxlY3RlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbGVjdENvbG9ySW5Db2xvckNo
b29zZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp3YXNMYXN0Q2hhbmdlVXNlckVk
aXQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppc1NlbGVjdFBvcHVwVmlzaWJsZSk6
CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RWxlbWVudE5zKToKKworMjAx
NC0wOS0yNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAg
VXNlIGlzPFNWRypFbGVtZW50PigpIGluc3RlYWQgb2YgaXNTVkcqRWxlbWVudCgpCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcwNTgKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hh
bmdlTG9nCmluZGV4IDZlNGFiM2JmZmJmM2EyMTk4YzU1MzUzY2FhOGRkYTY5YjIzOWVlMTQuLjI1
NDIyZGIxNmU0OGU4Y2ExNzkxN2YxZTI0NzM1OTdiZDAxODM5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxNC0wOS0yNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPEhUTUwqRWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlz
SFRNTCpFbGVtZW50KCkgLSBQYXJ0IDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFN0YXJ0IHVzaW5nIGlzPEhUTUwqRWxlbWVudD4oKSBpbnN0ZWFkIG9m
IGlzSFRNTCpFbGVtZW50KCkuCisgICAgICAgIFJlbWFpbmluZyB1c2FnZXMgd2lsbCBiZSB1cGRh
dGVkIGluIGEgZm9sbG93LXVwIHBhdGNoIHRvCisgICAgICAgIHJlZHVjZSB0aGUgc2l6ZSBvZiB0
aGUgY2hhbmdlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9T
Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50SU9TOjpmb2N1c2VkRWxlbWVudENoYW5nZWQp
OgorCiAyMDE0LTA5LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVXNlIGRvd25jYXN0PEhUTUwqRWxlbWVudD4oKSBpbnN0ZWFkIG9mIHRvSFRNTCpFbGVtZW50
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCBhNzdlM2YxNmUzYWJjMWY0M2FkZTEwZTdmNWM3ZGZjNWJm
MTZlZDAzLi5hZTMyMjI0YjkyYWE0MzQ3NDZjMjI0ZjEzNGNmNGQ3MWEzNDJmZTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+KCkgaW5z
dGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIC0gUGFydCAxCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdGFydCB1c2luZyBpczxIVE1MKkVsZW1lbnQ+KCkg
aW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpLgorICAgICAgICBSZW1haW5pbmcgdXNhZ2VzIHdp
bGwgYmUgdXBkYXRlZCBpbiBhIGZvbGxvdy11cCBwYXRjaCB0bworICAgICAgICByZWR1Y2UgdGhl
IHNpemUgb2YgdGhlIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEVsZW1lbnRDaGFu
Z2VkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAg
ICAgIChXZWJFZGl0b3JDbGllbnQ6OnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyk6CisgICAgICAg
IChXZWJFZGl0b3JDbGllbnQ6OnRleHRGaWVsZERpZEVuZEVkaXRpbmcpOgorICAgICAgICAoV2Vi
RWRpdG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQpOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50Ojpkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQpOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50Ojp0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkVk
aXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4dEFyZWEpOgorICAgICAgICAqIFdlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoaW5wdXRFbGVtZW50RnJvbURPTUVs
ZW1lbnQpOgorCiAyMDE0LTA5LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlIGRvd25jYXN0PEhUTUwqRWxlbWVudD4oKSBpbnN0ZWFkIG9mIHRvSFRNTCpF
bGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAwODYxMDQ5NzM1OTBiMDkzZjY0ZDJlY2FlZWRj
NDA2ZGYyZTFlNTlhLi40YmJmN2I4NzliNzY3MGYwZjFlYWIxNjBkMTZmYzEwZDQ4YTc5YmRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTQtMDktMjQgIENocmlzdG9waGUg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+
KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIC0gUGFydCAxCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcwNjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdGFydCB1c2luZyBpczxIVE1MKkVsZW1l
bnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpLgorICAgICAgICBSZW1haW5pbmcgdXNh
Z2VzIHdpbGwgYmUgdXBkYXRlZCBpbiBhIGZvbGxvdy11cCBwYXRjaCB0bworICAgICAgICByZWR1
Y2UgdGhlIHNpemUgb2YgdGhlIGNoYW5nZS4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNw
cDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBET01I
VE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6dGV4dCk6Cisg
ICAgICAgIChET01IVE1MT3B0aW9uRWxlbWVudDo6bGFiZWwpOgorICAgICAgICAoRE9NSFRNTElu
cHV0RWxlbWVudDo6Zm9ybSk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpkaXNhYmxl
ZCk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpyZWFkT25seSk6CisgICAgICAgIChE
T01IVE1MSW5wdXRFbGVtZW50OjpzZXRUeXBlKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1l
bnQ6OnZhbHVlKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAg
ICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRm9yVXNlcik6CisgICAgICAgIChE
T01IVE1MSW5wdXRFbGVtZW50OjpzZWxlY3QpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVu
dDo6c2V0U2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2Vs
ZWN0aW9uU3RhcnQpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9u
RW5kKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZCk6CisgICAg
ICAgIChET01IVE1MSW5wdXRFbGVtZW50Ojppc1RleHRGaWVsZCk6CisgICAgICAgIChET01IVE1M
SW5wdXRFbGVtZW50OjpyZWN0T25TY3JlZW4pOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVu
dDo6cmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1l
bnQ6OnNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0QXV0
b2ZpbGxlZCk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50Ojppc0F1dG9maWxsZWQpOgor
ICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6aXNVc2VyRWRpdGVkKToKKyAgICAgICAgKERP
TUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmZvcm0pOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxl
bWVudDo6dmFsdWUpOgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWUp
OgorICAgICAgICAoRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2VsZWN0KToKKyAgICAgICAgKERP
TUhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlzVXNlckVkaXRlZCk6CisgICAgICAgICogV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoaW5wdXRFbGVtZW50RnJvbURPTUVsZW1lbnQpOgorCiAyMDE0LTA5LTIz
ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeCBhZnRlciByMTczODkzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUyMjI5NGMyNThkNzI3
MTVjZGQ3Mjc2ZDkxZDgwNGFlYTVmMTQ2OGYuLjg3YWI4MTA5YjhiN2FjMDMwMGU4ZGYxMWQyNjMz
MmE4YmQwMGY5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxNC0wOS0yNCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPEhUTUwq
RWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkgLSBQYXJ0IDEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzA2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVzaW5nIGlzPEhU
TUwqRWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkuCisgICAgICAgIFJlbWFp
bmluZyB1c2FnZXMgd2lsbCBiZSB1cGRhdGVkIGluIGEgZm9sbG93LXVwIHBhdGNoIHRvCisgICAg
ICAgIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgY2hhbmdlLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpzZXRIVE1MSW5wdXRFbGVtZW50
VmFsdWVGb3JVc2VyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
Ojppc0hUTUxJbnB1dEVsZW1lbnRBdXRvZmlsbGVkKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlOjpzZXRIVE1MSW5wdXRFbGVtZW50QXV0b2ZpbGxlZCk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbElucHV0RWxlbWVudExh
c3RDaGFuZ2VXYXNVc2VyRWRpdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTo6aHRtbFRleHRBcmVhRWxlbWVudExhc3RDaGFuZ2VXYXNVc2VyRWRpdCk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNUZXh0RmllbGQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkRWxlbWVudENoYW5nZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RmllbGREaWRCZWdpbkVkaXRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnRleHRGaWVsZERpZEVuZEVk
aXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnRleHREaWRDaGFuZ2VJ
blRleHRGaWVsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6dGV4dERpZENo
YW5nZUluVGV4dEFyZWEpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRvVGV4
dEZpZWxkQ29tbWFuZEZyb21FdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVu
dDo6dGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5z
QW55Rm9ybUNvbnRyb2xzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFzc2lzdGVkTm9kZVZhbHVl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QXNzaXN0ZWROb2RlVmFsdWVBc051bWJl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFzc2lzdGVkTm9kZVNlbGVjdGVkSW5k
ZXgpOgorCiAyMDE0LTA5LTIzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMTczODkzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94
T3B0aW9uLmNwcAppbmRleCBkODY1Yzg5NWUzZWU2NWM2NjFkZWJjMWI1MGM0YWYxZjE4NzliMzM4
Li5jMzI3MDA4MDYwM2NmMGM3MmM5YjZjYmNmNGY4NTc5ZWM3MmYyY2EyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94
T3B0aW9uLmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0
aW9uOjppc1NlbGVjdGVkKCkgY29uc3QKICAgICBpZiAoIW1fb3B0aW9uRWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFpc0hUTUxPcHRpb25FbGVtZW50KG1fb3B0aW9u
RWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1MT3B0aW9uRWxlbWVudD4obV9vcHRpb25FbGVtZW50
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxPcHRp
b25FbGVtZW50PigqbV9vcHRpb25FbGVtZW50KS5zZWxlY3RlZCgpOwpAQCAtMTM0LDcgKzEzNCw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmNhblNldFNlbGVjdGVkQXR0cmli
dXRlKCkgY29uc3QKICAgICBpZiAoIW1fb3B0aW9uRWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotICAgIGlmICghaXNIVE1MT3B0aW9uRWxlbWVudChtX29wdGlvbkVsZW1lbnQp
KQorICAgIGlmICghaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fb3B0aW9uRWxlbWVudCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBpZiAobV9vcHRpb25FbGVtZW50LT5pc0Rpc2Fi
bGVkRm9ybUNvbnRyb2woKSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb246OnN0cmluZ1ZhbHVlKCkgY29uc3QKICAgICBpZiAoIWFyaWFMYWJlbC5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIGFyaWFMYWJlbDsKICAgICAKLSAgICBpZiAoaXNIVE1M
T3B0aW9uRWxlbWVudChtX29wdGlvbkVsZW1lbnQpKQorICAgIGlmIChpczxIVE1MT3B0aW9uRWxl
bWVudD4obV9vcHRpb25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxPcHRp
b25FbGVtZW50PigqbV9vcHRpb25FbGVtZW50KS50ZXh0KCk7CiAgICAgCiAgICAgaWYgKGlzSFRN
TE9wdEdyb3VwRWxlbWVudChtX29wdGlvbkVsZW1lbnQpKQpAQCAtMjAyLDcgKzIwMiw3IEBAIEhU
TUxTZWxlY3RFbGVtZW50KiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6bGlzdEJveE9wdGlv
blBhcmVudE5vZGUoKSBjb25zdAogICAgIGlmICghbV9vcHRpb25FbGVtZW50KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KG1fb3B0aW9uRWxl
bWVudCkpCisgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihtX29wdGlvbkVsZW1lbnQpKQog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCptX29wdGlvbkVsZW1l
bnQpLm93bmVyU2VsZWN0RWxlbWVudCgpOwogCiAgICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVu
dChtX29wdGlvbkVsZW1lbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcAppbmRleCBkZWIwOTIwZjhi
OTgzNmNjOTg2YTIzODI5NjVkYTYwNjYyYmE2ZDgyLi5lZTM1ZWZhZWJhNjdkMTAwOWQ0ZDYyZTAx
ZmJiMDUxOGNjY2FjMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcApAQCAtMjc0LDcgKzI3NCw3
IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gQWNjZXNzaWJpbGl0eU1lZGlhVGlt
ZWxpbmU6OmNyZWF0ZShSZW5kZXJPYmplY3QqCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU1lZGlhVGlt
ZWxpbmU6OnZhbHVlRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSBtX3Jl
bmRlcmVyLT5ub2RlKCk7Ci0gICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQobm9kZSkpCisgICAg
aWYgKCFpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCiAgICAgZmxvYXQgdGltZSA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKS52
YWx1ZSgpLnRvRmxvYXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcAppbmRleCBjNjkyMTFhYjlj
MzU0ZmY3MDcyNDlhYmJkYmUyOGM2MDAxZmFkZDgyLi5mNjI5ZGNkYWUyMzMzNDcwZmFhZmIxODA3
MGE5ODM4YjNjMzAwYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCkBAIC00MSw3ICs0MSw3
IEBAIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0
aW9uKCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OnNldEVsZW1lbnQoSFRN
TEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUX0FSRyhlbGVtZW50LCBpc0hUTUxPcHRp
b25FbGVtZW50KGVsZW1lbnQpKTsKKyAgICBBU1NFUlRfQVJHKGVsZW1lbnQsIGlzPEhUTUxPcHRp
b25FbGVtZW50PihlbGVtZW50KSk7CiAgICAgbV9lbGVtZW50ID0gZWxlbWVudDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwLmNwcAppbmRleCBmYzI1ODVkMWVmYzEzYjRkY2U0MmEzZGIwNjBlY2Q1YzYx
ZGI2MWRhLi4zNTBkYTBkYTVmZjlkNTFlZDBkYmRlNWM1YTE1ZTA4MjU5YjA2Y2Y3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBv
cHVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwLmNwcApAQCAtNzAsNyArNzAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlNZW51
TGlzdFBvcHVwOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAKIEFjY2Vz
c2liaWxpdHlNZW51TGlzdE9wdGlvbiogQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6Om1lbnVM
aXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCogZWxlbWVudCkgY29uc3QK
IHsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIWlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkgfHwg
IWVsZW1lbnQtPmluUmVuZGVyZWREb2N1bWVudCgpKQorICAgIGlmICghZWxlbWVudCB8fCAhaXM8
SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpIHx8ICFlbGVtZW50LT5pblJlbmRlcmVkRG9jdW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmplY3QgPSBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKE1lbnVM
aXN0T3B0aW9uUm9sZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDY3MDg4ZjE0ZTgzMzNlY2ViMjc4
NmEwMzBkMTQ4ZjIxMjJiZDZiODAuLjM0YjUzMmY3N2FjOTgxY2U2Y2I5NzIxZWE2ZGEyOTQ1YjYx
ZjJmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgQWNjZXNzaWJpbGl0
eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xl
KCkKICAgICAgICAgcmV0dXJuIFN0YXRpY1RleHRSb2xlOwogICAgIGlmIChub2RlKCktPmhhc1Rh
Z05hbWUoYnV0dG9uVGFnKSkKICAgICAgICAgcmV0dXJuIGJ1dHRvblJvbGVUeXBlKCk7Ci0gICAg
aWYgKGlzSFRNTElucHV0RWxlbWVudChub2RlKCkpKSB7CisgICAgaWYgKGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KG5vZGUoKSkpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSgpKTsKICAgICAgICAgaWYgKGlucHV0LmlzQ2hl
Y2tib3goKSkKICAgICAgICAgICAgIHJldHVybiBDaGVja0JveFJvbGU7CkBAIC0zMTMsNyArMzEz
LDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWlu
ZUFjY2Vzc2liaWxpdHlSb2xlKCkKICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdEVs
ZW1lbnQgPSBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm5vZGUoKSk7CiAgICAgICAgIHJl
dHVybiBzZWxlY3RFbGVtZW50Lm11bHRpcGxlKCkgPyBMaXN0Qm94Um9sZSA6IFBvcFVwQnV0dG9u
Um9sZTsKICAgICB9Ci0gICAgaWYgKGlzSFRNTFRleHRBcmVhRWxlbWVudChub2RlKCkpKQorICAg
IGlmIChpczxIVE1MVGV4dEFyZWFFbGVtZW50Pihub2RlKCkpKQogICAgICAgICByZXR1cm4gVGV4
dEFyZWFSb2xlOwogICAgIGlmIChoZWFkaW5nTGV2ZWwoKSkKICAgICAgICAgcmV0dXJuIEhlYWRp
bmdSb2xlOwpAQCAtNDY1LDEwICs0NjUsMTAgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6aXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0CiAgICAgaWYgKCFub2RlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoaXNIVE1MVGV4dEFyZWFFbGVtZW50KG5vZGUpKQorICAg
IGlmIChpczxIVE1MVGV4dEFyZWFFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KG5vZGUpKSB7CisgICAgaWYgKGlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0g
ZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOwogICAgICAgICByZXR1cm4gaW5wdXQu
aXNUZXh0KCkgfHwgaW5wdXQuaXNOdW1iZXJGaWVsZCgpOwogICAgIH0KQEAgLTUxOCw3ICs1MTgs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc05hdGl2ZUltYWdlKCkgY29uc3QK
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShhcHBsZXRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUo
ZW1iZWRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KG5vZGUpKSB7CisgICAgaWYgKGlz
PEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlu
cHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOwogICAgICAgICByZXR1cm4g
aW5wdXQuaXNJbWFnZUJ1dHRvbigpOwogICAgIH0KQEAgLTU1Myw3ICs1NTMsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0lucHV0SW1hZ2UoKSBjb25zdAogICAgIGlmICghbm9k
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogIAotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBCdXR0
b25Sb2xlICYmIGlzSFRNTElucHV0RWxlbWVudChub2RlKSkgeworICAgIGlmIChyb2xlVmFsdWUo
KSA9PSBCdXR0b25Sb2xlICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAg
IEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5v
ZGUpOwogICAgICAgICByZXR1cm4gaW5wdXQuaXNJbWFnZUJ1dHRvbigpOwogICAgIH0KQEAgLTcz
OCwxMCArNzM4LDEwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzUmVhZE9ubHko
KSBjb25zdAogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAo
aXNIVE1MVGV4dEFyZWFFbGVtZW50KG5vZGUpKQorICAgIGlmIChpczxIVE1MVGV4dEFyZWFFbGVt
ZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIHRvSFRNTEZvcm1Db250cm9sRWxlbWVudChub2Rl
KS0+aXNSZWFkT25seSgpOwogCi0gICAgaWYgKGlzSFRNTElucHV0RWxlbWVudChub2RlKSkgewor
ICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSkgewogICAgICAgICBIVE1MSW5wdXRF
bGVtZW50JiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKTsKICAgICAg
ICAgaWYgKGlucHV0LmlzVGV4dEZpZWxkKCkpCiAgICAgICAgICAgICByZXR1cm4gaW5wdXQuaXNS
ZWFkT25seSgpOwpAQCAtODM3LDcgKzgzNyw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6dmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0CiAKIGZsb2F0IEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojp2YWx1ZUZvclJhbmdlKCkgY29uc3QKIHsKLSAgICBpZiAobm9kZSgpICYmIGlzSFRN
TElucHV0RWxlbWVudChub2RlKCkpKSB7CisgICAgaWYgKG5vZGUoKSAmJiBpczxIVE1MSW5wdXRF
bGVtZW50Pihub2RlKCkpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUoKSk7CiAgICAgICAgIGlmIChpbnB1dC5pc1Jh
bmdlQ29udHJvbCgpKQogICAgICAgICAgICAgcmV0dXJuIGlucHV0LnZhbHVlQXNOdW1iZXIoKTsK
QEAgLTg1MSw3ICs4NTEsNyBAQCBmbG9hdCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dmFsdWVG
b3JSYW5nZSgpIGNvbnN0CiAKIGZsb2F0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjptYXhWYWx1
ZUZvclJhbmdlKCkgY29uc3QKIHsKLSAgICBpZiAobm9kZSgpICYmIGlzSFRNTElucHV0RWxlbWVu
dChub2RlKCkpKSB7CisgICAgaWYgKG5vZGUoKSAmJiBpczxIVE1MSW5wdXRFbGVtZW50Pihub2Rl
KCkpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oKm5vZGUoKSk7CiAgICAgICAgIGlmIChpbnB1dC5pc1JhbmdlQ29udHJvbCgp
KQogICAgICAgICAgICAgcmV0dXJuIGlucHV0Lm1heGltdW0oKTsKQEAgLTg2NSw3ICs4NjUsNyBA
QCBmbG9hdCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0
CiAKIGZsb2F0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjptaW5WYWx1ZUZvclJhbmdlKCkgY29u
c3QKIHsKLSAgICBpZiAobm9kZSgpICYmIGlzSFRNTElucHV0RWxlbWVudChub2RlKCkpKSB7Cisg
ICAgaWYgKG5vZGUoKSAmJiBpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKCkpKSB7CiAgICAgICAg
IEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5v
ZGUoKSk7CiAgICAgICAgIGlmIChpbnB1dC5pc1JhbmdlQ29udHJvbCgpKQogICAgICAgICAgICAg
cmV0dXJuIGlucHV0Lm1pbmltdW0oKTsKQEAgLTk3Myw3ICs5NzMsNyBAQCBFbGVtZW50KiBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6YW5jaG9yRWxlbWVudCgpIGNvbnN0CiAKIHN0YXRpYyBib29s
IGlzTm9kZUFjdGlvbkVsZW1lbnQoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoaXNIVE1MSW5wdXRF
bGVtZW50KG5vZGUpKSB7CisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKSB7CiAg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oKm5vZGUpOwogICAgICAgICBpZiAoIWlucHV0LmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYm
IChpbnB1dC5pc1JhZGlvQnV0dG9uKCkgfHwgaW5wdXQuaXNDaGVja2JveCgpIHx8IGlucHV0Lmlz
VGV4dEJ1dHRvbigpIHx8IGlucHV0LmlzRmlsZVVwbG9hZCgpIHx8IGlucHV0LmlzSW1hZ2VCdXR0
b24oKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlRWxlbWVudFRleHQoVmVjdG9yPEFjY2Vz
c2liaWxpdHlUZXh0PiYgdGV4dE9yCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgYm9vbCBpc0lucHV0VGFnID0gaXNIVE1MSW5wdXRFbGVtZW50KG5vZGUpOworICAg
IGJvb2wgaXNJbnB1dFRhZyA9IGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpOwogICAgIGlmIChp
c0lucHV0VGFnIHx8IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQUlucHV0KGFyaWFSb2xlQXR0
cmlidXRlKCkpIHx8IGlzQ29udHJvbCgpKSB7CiAgICAgICAgIEhUTUxMYWJlbEVsZW1lbnQqIGxh
YmVsID0gbGFiZWxGb3JFbGVtZW50KHRvRWxlbWVudChub2RlKSk7CiAgICAgICAgIGlmIChsYWJl
bCkgewpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
dmlzaWJsZVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE9yZGVyKQogICAgIGlm
ICghbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGJvb2wgaXNJbnB1dFRhZyA9IGlz
SFRNTElucHV0RWxlbWVudChub2RlKTsKKyAgICBib29sIGlzSW5wdXRUYWcgPSBpczxIVE1MSW5w
dXRFbGVtZW50Pihub2RlKTsKICAgICBpZiAoaXNJbnB1dFRhZykgewogICAgICAgICBIVE1MSW5w
dXRFbGVtZW50JiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKTsKICAg
ICAgICAgaWYgKGlucHV0LmlzVGV4dEJ1dHRvbigpKSB7CkBAIC0xNjgzLDcgKzE2ODMsNyBAQCBT
dHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlKCkgY29uc3QKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGJvb2wgaXNJbnB1dFRhZyA9IGlz
SFRNTElucHV0RWxlbWVudChub2RlKTsKKyAgICBib29sIGlzSW5wdXRUYWcgPSBpczxIVE1MSW5w
dXRFbGVtZW50Pihub2RlKTsKICAgICBpZiAoaXNJbnB1dFRhZykgewogICAgICAgICBIVE1MSW5w
dXRFbGVtZW50JiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKTsKICAg
ICAgICAgaWYgKGlucHV0LmlzVGV4dEJ1dHRvbigpKQpAQCAtMTgwOSw3ICsxODA5LDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50
JiBiKSBjb25zdAogICAgIGlmICghaXNDb2xvcldlbGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFub2RlKCkgfHwgIWlzSFRNTElucHV0RWxlbWVudChub2RlKCkpKQorICAgIGlmICgh
bm9kZSgpIHx8ICFpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KCpub2RlKCkpOwpAQCAtMTg0MSw3ICsxODQxLDcgQEAgc3RhdGljIFN0cmluZyBhY2Nlc3Np
YmxlTmFtZUZvck5vZGUoTm9kZSogbm9kZSkKICAgICBpZiAoIWFsdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBhbHQ7CiAgICAgCi0gICAgaWYgKGlzSFRNTElucHV0RWxlbWVudChub2RlKSkK
KyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSkudmFsdWUoKTsKICAgICAKICAgICAvLyBJZiB0
aGUgbm9kZSBjYW4gYmUgdHVybmVkIGludG8gYW4gQVggb2JqZWN0LCB3ZSBjYW4gdXNlIHN0YW5k
YXJkIG5hbWUgY29tcHV0YXRpb24gcnVsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBiNTk2
ZjhkOTYwMjYzMWI4MmQwZjU0ODI2OGIzMDMxYzY1Y2E1YTUwLi4zZTJhOGY3YWU2NWNiMDk0Zjli
MDY2ZTgzOWY1MjQxNTdhYzY2ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTUyMyw3ICs1
MjMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQXR0YWNobWVudCgpIGNv
bnN0CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9u
KCkgY29uc3QKIHsKLSAgICBpZiAobV9yZW5kZXJlciAmJiBtX3JlbmRlcmVyLT5ub2RlKCkgJiYg
aXNIVE1MSW5wdXRFbGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSkpIHsKKyAgICBpZiAobV9yZW5k
ZXJlciAmJiBtX3JlbmRlcmVyLT5ub2RlKCkgJiYgaXM8SFRNTElucHV0RWxlbWVudD4obV9yZW5k
ZXJlci0+bm9kZSgpKSkgewogICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX3JlbmRlcmVyLT5ub2RlKCkpOwogICAgICAgICByZXR1
cm4gaW5wdXQuaXNGaWxlVXBsb2FkKCk7CiAgICAgfQpAQCAtOTUwLDcgKzk1MCw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmFkaW9CdXR0b25Hcm91cE1lbWJlcnMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBOb2RlKiBub2Rl
ID0gbV9yZW5kZXJlci0+bm9kZSgpOwotICAgIGlmICghbm9kZSB8fCAhaXNIVE1MSW5wdXRFbGVt
ZW50KG5vZGUpKQorICAgIGlmICghbm9kZSB8fCAhaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRv
d25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKTsKQEAgLTk2OCw3ICs5NjgsNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBNZW1iZXJzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlbgogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBsaXN0LT5sZW5n
dGgoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAg
ICAgICAgICAgICBOb2RlKiBpdGVtID0gbGlzdC0+aXRlbShpKTsKLSAgICAgICAgICAgIGlmIChp
c0hUTUxJbnB1dEVsZW1lbnQoaXRlbSkpIHsKKyAgICAgICAgICAgIGlmIChpczxIVE1MSW5wdXRF
bGVtZW50PihpdGVtKSkgewogICAgICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGFzc29j
aWF0ZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqaXRlbSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGFzc29jaWF0ZUVsZW1lbnQuaXNSYWRpb0J1dHRvbigpICYmIGFzc29jaWF0
ZUVsZW1lbnQubmFtZSgpID09IGlucHV0Lm5hbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBp
ZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNy
ZWF0ZSgmYXNzb2NpYXRlRWxlbWVudCkpCkBAIC0xNjg3LDkgKzE2ODcsOSBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAg
IFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qo
bV9yZW5kZXJlcik7CiAKICAgICAvLyBGSVhNRTogRG8gd2Ugd2FudCB0byBkbyBhbnl0aGluZyBo
ZXJlIGZvciBBUklBIHRleHRib3hlcz8KLSAgICBpZiAocmVuZGVyZXItPmlzVGV4dEZpZWxkKCkg
JiYgaXNIVE1MSW5wdXRFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmIChyZW5kZXJlci0+aXNUZXh0
RmllbGQoKSAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkuc2V0VmFsdWUoc3RyaW5nKTsKLSAgICBlbHNl
IGlmIChyZW5kZXJlci0+aXNUZXh0QXJlYSgpICYmIGlzSFRNTFRleHRBcmVhRWxlbWVudChlbGVt
ZW50KSkKKyAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUZXh0QXJlYSgpICYmIGlzPEhUTUxUZXh0
QXJlYUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEFyZWFFbGVt
ZW50PihlbGVtZW50KS5zZXRWYWx1ZShzdHJpbmcpOwogfQogCkBAIC0yMjExLDcgKzIyMTEsNyBA
QCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQbwogICAgIGlmIChpc0hUTUxBcmVhRWxlbWVudChub2Rl
KSkKICAgICAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoZG93bmNhc3Q8
SFRNTEFyZWFFbGVtZW50Pihub2RlKSwgcG9pbnQpOwogICAgIAotICAgIGlmIChpc0hUTUxPcHRp
b25FbGVtZW50KG5vZGUpKQorICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4obm9kZSkpCiAg
ICAgICAgIG5vZGUgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm5vZGUpLm93bmVyU2Vs
ZWN0RWxlbWVudCgpOwogICAgIAogICAgIFJlbmRlck9iamVjdCogb2JqID0gbm9kZS0+cmVuZGVy
ZXIoKTsKQEAgLTI0ODMsNyArMjQ4Myw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKICAgICBpZiAobV9y
ZW5kZXJlci0+aXNUZXh0KCkpCiAgICAgICAgIHJldHVybiBTdGF0aWNUZXh0Um9sZTsKICAgICBp
ZiAoY3NzQm94ICYmIGNzc0JveC0+aXNJbWFnZSgpKSB7Ci0gICAgICAgIGlmIChub2RlICYmIGlz
SFRNTElucHV0RWxlbWVudChub2RlKSkKKyAgICAgICAgaWYgKG5vZGUgJiYgaXM8SFRNTElucHV0
RWxlbWVudD4obm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gYXJpYUhhc1BvcHVwKCkgPyBQb3BV
cEJ1dHRvblJvbGUgOiBCdXR0b25Sb2xlOwogICAgICAgICBpZiAoaXNTVkdJbWFnZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIFNWR1Jvb3RSb2xlOwpAQCAtMjUwMiw3ICsyNTAyLDcgQEAgQWNjZXNz
aWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJp
bGl0eVJvbGUoKQogICAgIGlmIChjc3NCb3ggJiYgY3NzQm94LT5pc1RleHRBcmVhKCkpCiAgICAg
ICAgIHJldHVybiBUZXh0QXJlYVJvbGU7CiAKLSAgICBpZiAobm9kZSAmJiBpc0hUTUxJbnB1dEVs
ZW1lbnQobm9kZSkpIHsKKyAgICBpZiAobm9kZSAmJiBpczxIVE1MSW5wdXRFbGVtZW50Pihub2Rl
KSkgewogICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgaWYgKGlucHV0LmlzQ2hlY2tib3goKSkKICAgICAg
ICAgICAgIHJldHVybiBDaGVja0JveFJvbGU7CkBAIC0yODM2LDcgKzI4MzYsNyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKQogdm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbigpCiB7CiAg
ICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKLSAgICBpZiAoIW5vZGUgfHwgIWlzSFRNTElu
cHV0RWxlbWVudChub2RlKSkKKyAgICBpZiAoIW5vZGUgfHwgIWlzPEhUTUxJbnB1dEVsZW1lbnQ+
KG5vZGUpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5w
dXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCmluZGV4IGI4
NjUxMTgwODJkM2E3MGRkOGEzN2NiODM2NGY4M2Y1OTA4MmViMzMuLjIwYjE0NTg5NTUxYjk4MGZh
OTI4ZDJhZDE2YTJkMzM4MjZlMzVlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAg
c3RhdGljIHZvaWQgbm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2UoQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0KQogCiAgICAgLy8gT25seSBzdXBwb3J0IEhUTUwgc2VsZWN0IGVsZW1lbnRz
IHNvIGZhciAoQVJJQSBzZWxlY3RvcnMgbm90IHN1cHBvcnRlZCkuCiAgICAgTm9kZSogbm9kZSA9
IG9iamVjdC0+bm9kZSgpOwotICAgIGlmICghbm9kZSB8fCAhaXNIVE1MU2VsZWN0RWxlbWVudChu
b2RlKSkKKyAgICBpZiAoIW5vZGUgfHwgIWlzPEhUTUxTZWxlY3RFbGVtZW50Pihub2RlKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gRW1pdCBzaWduYWwgZnJvbSB0aGUgbGlzdGJveCdzIHBv
aW50IG9mIHZpZXcgZmlyc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlclRlc3RGdW5jdGlvbnMuaAppbmRleCA3ZmE0ZGM1Yjg5OTBmZWZmZjRiMTcxOWQ0ODAxODA5
NTU2ODhmYWI5Li45MjgzMGFjYTViZTcxMTgxYmZiNGU5ODY0YjY3Y2YwZTAzMzk5ZTgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgK
QEAgLTU4LDcgKzU4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGlzRGVmYXVsdEJ1dHRvbkZvckZv
cm0oY29uc3QgRWxlbWVudCogZWxlbWVudCkKIAogQUxXQVlTX0lOTElORSBib29sIGlzRGlzYWJs
ZWQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBpZiAoZWxlbWVudC0+aXNGb3JtQ29u
dHJvbEVsZW1lbnQoKSB8fCBpc0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTE9w
dEdyb3VwRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoZWxlbWVudC0+aXNGb3JtQ29udHJvbEVs
ZW1lbnQoKSB8fCBpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgfHwgaXNIVE1MT3B0R3Jv
dXBFbGVtZW50KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVudC0+aXNEaXNhYmxlZEZv
cm1Db250cm9sKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNjYsNyArNjYsNyBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNEaXNhYmxlZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogQUxXQVlT
X0lOTElORSBib29sIGlzRW5hYmxlZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogewogICAgIGJv
b2wgaXNFbmFibGVkID0gZmFsc2U7Ci0gICAgaWYgKGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVt
ZW50KCkgfHwgaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxPcHRHcm91cEVs
ZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkg
fHwgaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzSFRNTE9wdEdyb3VwRWxlbWVu
dChlbGVtZW50KSkKICAgICAgICAgaXNFbmFibGVkID0gIWVsZW1lbnQtPmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpOwogICAgIGVsc2UgaWYgKGVsZW1lbnQtPmlzTGluaygpKQogICAgICAgICBpc0Vu
YWJsZWQgPSBpc0hUTUxBbmNob3JFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTEFyZWFFbGVtZW50
KGVsZW1lbnQpOwpAQCAtODYsNyArODYsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDaGVja2Vk
KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgY29uc3QgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVt
ZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKICAgICBpZiAoaW5wdXRFbGVtZW50ICYm
IGlucHV0RWxlbWVudC0+c2hvdWxkQXBwZWFyQ2hlY2tlZCgpICYmICFpbnB1dEVsZW1lbnQtPnNo
b3VsZEFwcGVhckluZGV0ZXJtaW5hdGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1l
bnQ+KCplbGVtZW50KS5zZWxlY3RlZCgpKQorICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4o
ZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KS5zZWxlY3Rl
ZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMmVhZWQ1MzVjOGQ2OGJmMDgxY2ZmZjdmMGVj
ODQ3YzlmMTI0YzEzYi4uMDY4NzMyYzcyOTNlYjQ3MmM2MGIwZmQ3YmMzOTRlYWVkOTE3NDkzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTI3MCw3ICsxMjcwLDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlJiBwYXIKICAgICAgICAgc3R5bGUuc2V0WkluZGV4KDApOwogCiAg
ICAgLy8gVGV4dGFyZWEgY29uc2lkZXJzIG92ZXJmbG93IHZpc2libGUgYXMgYXV0by4KLSAgICBp
ZiAoZSAmJiBpc0hUTUxUZXh0QXJlYUVsZW1lbnQoZSkpIHsKKyAgICBpZiAoZSAmJiBpczxIVE1M
VGV4dEFyZWFFbGVtZW50PihlKSkgewogICAgICAgICBzdHlsZS5zZXRPdmVyZmxvd1goc3R5bGUu
b3ZlcmZsb3dYKCkgPT0gT1ZJU0lCTEUgPyBPQVVUTyA6IHN0eWxlLm92ZXJmbG93WCgpKTsKICAg
ICAgICAgc3R5bGUuc2V0T3ZlcmZsb3dZKHN0eWxlLm92ZXJmbG93WSgpID09IE9WSVNJQkxFID8g
T0FVVE8gOiBzdHlsZS5vdmVyZmxvd1koKSk7CiAgICAgfQpAQCAtMTMzOCw3ICsxMzM4LDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlJiBwYXIKICAgICBpZiAoZSAmJiBlLT5pc0Zvcm1Db250cm9sRWxl
bWVudCgpICYmIHN0eWxlLmZvbnRTaXplKCkgPj0gMTEpIHsKICAgICAgICAgLy8gRG9uJ3QgYXBw
bHkgaW50cmluc2ljIG1hcmdpbnMgdG8gaW1hZ2UgYnV0dG9ucy4gVGhlIGRlc2lnbmVyIGtub3dz
IGhvdyBiaWcgdGhlIGltYWdlcyBhcmUsCiAgICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gdHJlYXQg
YWxsIGltYWdlIGJ1dHRvbnMgYXMgdGhvdWdoIHRoZXkgd2VyZSBleHBsaWNpdGx5IHNpemVkLgot
ICAgICAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChlKSB8fCAhZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oKmUpLmlzSW1hZ2VCdXR0b24oKSkKKyAgICAgICAgaWYgKCFpczxIVE1MSW5wdXRF
bGVtZW50PihlKSB8fCAhZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmUpLmlzSW1hZ2VCdXR0
b24oKSkKICAgICAgICAgICAgIGFkZEludHJpbnNpY01hcmdpbnMoc3R5bGUpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA0MDk0ZjMzYzkyMmRmNTAx
ZDQ5NWVmMzVkZTI5MWFhZDU4ZDAwNzczLi5hMGY5NjMwMjg5OWIxODhiNTg0ZTE5OTEyNWNjMDNl
ZjMyMGY3MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMzU2
LDcgKzM1Niw3IEBAIGJvb2wgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5vZGUqIG9y
aWdpbiwgUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgV2luZG93RXZlbnRDb250ZXh0
IHdpbmRvd0V2ZW50Q29udGV4dChub2RlLmdldCgpLCBldmVudFBhdGgubGFzdENvbnRleHRJZkV4
aXN0cygpKTsKIAogICAgIElucHV0RWxlbWVudENsaWNrU3RhdGUgY2xpY2tIYW5kbGluZ1N0YXRl
OwotICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQobm9kZS5nZXQoKSkpCisgICAgaWYgKGlzPEhU
TUxJbnB1dEVsZW1lbnQ+KG5vZGUuZ2V0KCkpKQogICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRF
bGVtZW50Pigqbm9kZSkud2lsbERpc3BhdGNoRXZlbnQoKmV2ZW50LCBjbGlja0hhbmRsaW5nU3Rh
dGUpOwogCiAgICAgaWYgKCFldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50UGF0
aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmlu
ZGV4IDIwMTEyY2EyOTZhNTUxMDNkYTM1YWU0MzhlYWQ5NmNmZWZiZDc3MjMuLmI3NjI5Y2YxNzRl
YWU1ZjEzY2RiMjIxOWM3ZTc4OWI4OGE5YmQyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNjcwLDcgKzE2NzAsNyBAQCB2b2lkIEZyYW1lU2VsZWN0
aW9uOjpzZWxlY3RBbGwoKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCk7CiAKICAgICBFbGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LT5mb2N1c2Vk
RWxlbWVudCgpOwotICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBpc0hUTUxTZWxlY3RFbGVtZW50
KGZvY3VzZWRFbGVtZW50KSkgeworICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBpczxIVE1MU2Vs
ZWN0RWxlbWVudD4oZm9jdXNlZEVsZW1lbnQpKSB7CiAgICAgICAgIEhUTUxTZWxlY3RFbGVtZW50
JiBzZWxlY3RFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KCpmb2N1c2VkRWxl
bWVudCk7CiAgICAgICAgIGlmIChzZWxlY3RFbGVtZW50LmNhblNlbGVjdEFsbCgpKSB7CiAgICAg
ICAgICAgICBzZWxlY3RFbGVtZW50LnNlbGVjdEFsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBiZDUzNmYwNzlmMjFm
YWNlODNiZGU0YmY4MzgzNjA3MWIxMmY3MTkxLi4zMTEzYWYzNDA5NjY0YjQwYmYxMGY4YmNjMWNh
ZTg2OTRlY2I0ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTI3Myw3ICsxMjczLDcgQEAgYm9vbCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6c2hvdWxkUGVyZm9ybVNtYXJ0UmVwbGFjZSgpIGNvbnN0CiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIEVsZW1lbnQqIHRleHRDb250cm9sID0gZW5jbG9zaW5nVGV4
dEZvcm1Db250cm9sKHBvc2l0aW9uQXRTdGFydE9mSW5zZXJ0ZWRDb250ZW50KCkuZGVlcEVxdWl2
YWxlbnQoKSk7Ci0gICAgaWYgKHRleHRDb250cm9sICYmIGlzSFRNTElucHV0RWxlbWVudCh0ZXh0
Q29udHJvbCkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKnRleHRDb250cm9sKS5pc1Bh
c3N3b3JkRmllbGQoKSkKKyAgICBpZiAodGV4dENvbnRyb2wgJiYgaXM8SFRNTElucHV0RWxlbWVu
dD4odGV4dENvbnRyb2wpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCp0ZXh0Q29udHJv
bCkuaXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRGlzYWJsZSBz
bWFydCByZXBsYWNlIGZvciBwYXNzd29yZCBmaWVsZHMuCiAKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCmluZGV4IGJhODMyNWY1
NmNlYTQ5YThjMWM1NjhhYWIwMGRjNGI4ZGQ1NTgxMzguLjYxMjA4MGQ2MmY0NzA3ZmU5ZTk3NTk2
YWE3ZGM0OTJmMWVmNTFlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2Vs
ZWN0aW9uLmNwcApAQCAtNjY0LDcgKzY2NCw3IEBAIE5vZGUqIFZpc2libGVTZWxlY3Rpb246Om5v
bkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCkgY29uc3QKIGJvb2wgVmlzaWJsZVNlbGVjdGlv
bjo6aXNJblBhc3N3b3JkRmllbGQoKSBjb25zdAogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KiB0ZXh0Q29udHJvbCA9IGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChzdGFydCgpKTsK
LSAgICByZXR1cm4gdGV4dENvbnRyb2wgJiYgaXNIVE1MSW5wdXRFbGVtZW50KHRleHRDb250cm9s
KSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqdGV4dENvbnRyb2wpLmlzUGFzc3dvcmRG
aWVsZCgpOworICAgIHJldHVybiB0ZXh0Q29udHJvbCAmJiBpczxIVE1MSW5wdXRFbGVtZW50Pih0
ZXh0Q29udHJvbCkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKnRleHRDb250cm9sKS5p
c1Bhc3N3b3JkRmllbGQoKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCAyNGJhNWUxYTAyMjRlNTA5NzBk
ODk3MDM0NGZiNzg2MTY4YTEwMjg0Li4zYmNhOTQ3NDEyMmQzYTFjMWY1OTJhYTlkM2YzMDI2N2Qz
NTE5MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tCkBAIC0yMDQyLDcgKzIwNDIsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzRWxl
bWVudChFbGVtZW50JiBlbGVtZW50LCBOU0ludGVnZXIgZGVwdGgpCiAgICAgfSBlbHNlIGlmIChl
bGVtZW50Lmhhc1RhZ05hbWUocVRhZykpIHsKICAgICAgICAgX2FkZFF1b3RlRm9yRWxlbWVudChl
bGVtZW50LCBZRVMsIF9xdW90ZUxldmVsKyspOwogICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNU
YWdOYW1lKGlucHV0VGFnKSkgewotICAgICAgICBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KGVsZW1l
bnQpKSB7CisgICAgICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkgewogICAg
ICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oZWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoaW5wdXRFbGVtZW50LnR5cGUo
KSA9PSAidGV4dCIpIHsKICAgICAgICAgICAgICAgICBOU1N0cmluZyAqdmFsdWUgPSBpbnB1dEVs
ZW1lbnQudmFsdWUoKTsKQEAgLTIwNTEsNyArMjA1MSw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6
X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TSW50ZWdlciBkZXB0aCkKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKHRl
eHRhcmVhVGFnKSkgewotICAgICAgICBpZiAoaXNIVE1MVGV4dEFyZWFFbGVtZW50KGVsZW1lbnQp
KSB7CisgICAgICAgIGlmIChpczxIVE1MVGV4dEFyZWFFbGVtZW50PihlbGVtZW50KSkgewogICAg
ICAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCYgdGV4dEFyZWFFbGVtZW50ID0gZG93bmNhc3Q8
SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCk7CiAgICAgICAgICAgICBOU1N0cmluZyAqdmFs
dWUgPSB0ZXh0QXJlYUVsZW1lbnQudmFsdWUoKTsKICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBb
dmFsdWUgbGVuZ3RoXSA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0
ay9FZGl0b3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNw
cAppbmRleCBmZTBiMWRhYzE5MWI0MzY5NzhlNGU2NTg0NTIyNzg4MDhlMTU4Mjk0Li44NTM4NTMz
NGM0Y2ZjZTg1ODg1MThkZjY4MWIxMDBlN2IxYTIyNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvZ3RrL0VkaXRvckd0ay5jcHAKQEAgLTgyLDExICs4MiwxMSBAQCB2b2lkIEVkaXRvcjo6cGFz
dGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5U
ZXh0LCBNYQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50VVJMKEVsZW1lbnQm
IGVsZW1lbnQpCiB7Ci0gICAgaWYgKGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSB8fCBpc0hU
TUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGlzSFRNTEltYWdlRWxlbWVudChlbGVt
ZW50KSB8fCBpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnNyY0F0dHIpOwogICAgIGlmIChpczxT
VkdJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVudC5mYXN0R2V0
QXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKLSAgICBpZiAoaXNIVE1MRW1iZWRFbGVt
ZW50KGVsZW1lbnQpIHx8IGlzSFRNTE9iamVjdEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGlz
PEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVt
ZW50KSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaW1hZ2VTb3VyY2VVUkwoKTsKICAgICByZXR1
cm4gbnVsbEF0b207CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5k
ZXggZTBlYjM2OWMyNDNiMDBmMmQ4NDI4YzAwMmUwNDdiNjgzZTlkZGY2YS4uMzE5MjgyMjIyZDUx
NzU2YzYyMTgwOTE1ZmRmMzU3YjA0ZTc5ZTliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9z
L0VkaXRvcklPUy5tbQpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxp
Z25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGly
CiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9mcmFt
ZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOwotICAgIGlmIChmb2N1c2VkRWxlbWVudCAm
JiAoaXNIVE1MVGV4dEFyZWFFbGVtZW50KGZvY3VzZWRFbGVtZW50KSB8fCAoaXNIVE1MSW5wdXRF
bGVtZW50KGZvY3VzZWRFbGVtZW50KQorICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiAoaXM8SFRN
TFRleHRBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQpIHx8IChpczxIVE1MSW5wdXRFbGVtZW50
Pihmb2N1c2VkRWxlbWVudCkKICAgICAgICAgJiYgKGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KCpmb2N1c2VkRWxlbWVudCkuaXNUZXh0RmllbGQoKQogICAgICAgICAgICAgfHwgZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oKmZvY3VzZWRFbGVtZW50KS5pc1NlYXJjaEZpZWxkKCkpKSkpIHsK
ICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBhYmVkYzRiMmE3NGVjOTMzOWY5NmZiYjhjMzIzNmZi
OTliM2NiYTcxLi41NmM3MDA3M2I2M2Q1ZDkyZGFhMmRmYzhlMjUxMjM0NmFjYTc2ZDJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0yMzQsNyArMjM0LDcgQEAgU3RyaW5nIFN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjp0YWtlUmVzdWx0cygpCiAKIHZvaWQgU3R5bGVkTWFya3VwQWNj
dW11bGF0b3I6OmFwcGVuZFRleHQoU3RyaW5nQnVpbGRlciYgb3V0LCBjb25zdCBUZXh0JiB0ZXh0
KQogeyAgICAKLSAgICBjb25zdCBib29sIHBhcmVudElzVGV4dGFyZWEgPSB0ZXh0LnBhcmVudEVs
ZW1lbnQoKSAmJiBpc0hUTUxUZXh0QXJlYUVsZW1lbnQodGV4dC5wYXJlbnRFbGVtZW50KCkpOwor
ICAgIGNvbnN0IGJvb2wgcGFyZW50SXNUZXh0YXJlYSA9IHRleHQucGFyZW50RWxlbWVudCgpICYm
IGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KHRleHQucGFyZW50RWxlbWVudCgpKTsKICAgICBjb25z
dCBib29sIHdyYXBwaW5nU3BhbiA9IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZSh0ZXh0KSAmJiAh
cGFyZW50SXNUZXh0YXJlYTsKICAgICBpZiAod3JhcHBpbmdTcGFuKSB7CiAgICAgICAgIFJlZlB0
cjxFZGl0aW5nU3R5bGU+IHdyYXBwaW5nU3R5bGUgPSBtX3dyYXBwaW5nU3R5bGUtPmNvcHkoKTsK
QEAgLTc0Myw3ICs3NDMsNyBAQCBzdGF0aWMgdm9pZCBmaWxsQ29udGFpbmVyRnJvbVN0cmluZyhD
b250YWluZXJOb2RlKiBwYXJhZ3JhcGgsIGNvbnN0IFN0cmluZyYgc3RyaQogCiBib29sIGlzUGxh
aW5UZXh0TWFya3VwKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFpc0hUTUxEaXZFbGVtZW50KG5v
ZGUpKQorICAgIGlmICghaXM8SFRNTERpdkVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBIVE1MRGl2RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxEaXZF
bGVtZW50Pigqbm9kZSk7CkBAIC05MjksNyArOTI5LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8SFRN
TEVsZW1lbnQ+PiBjb2xsZWN0RWxlbWVudHNUb1JlbW92ZUZyb21GcmFnbWVudChDb250YWluZXJO
b2QKIHsKICAgICBWZWN0b3I8UmVmPEhUTUxFbGVtZW50Pj4gdG9SZW1vdmU7CiAgICAgZm9yIChh
dXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8SFRNTEVsZW1lbnQ+KGNvbnRhaW5lcikpIHsK
LSAgICAgICAgaWYgKGlzSFRNTEh0bWxFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChp
czxIVE1MSHRtbEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICB0b1JlbW92ZS5hcHBl
bmQoZWxlbWVudCk7CiAgICAgICAgICAgICBjb2xsZWN0RWxlbWVudHNUb1JlbW92ZUZyb21GcmFn
bWVudChlbGVtZW50KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmNwcAppbmRleCA5MWJiMjgxZjMxMjRjODgyYTRmNzcwNTcyYTIyNzBkMjVj
OTg5MGExLi45MzgwZWQzYmZjYTk2ZGQ4Yzk5MTgzNmI0MDI1NjdhZjQ3MTQzOGY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMTkxLDkgKzE5MSw5IEBAIGlubGlu
ZSBib29sIGlzTWF0Y2hpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBodG1sQ29sbGVj
dGlvbiwgRWxlbWVudCYgZWxlCiAgICAgY2FzZSBTZWxlY3RPcHRpb25zOgogICAgICAgICByZXR1
cm4gZWxlbWVudC5oYXNUYWdOYW1lKG9wdGlvblRhZyk7CiAgICAgY2FzZSBTZWxlY3RlZE9wdGlv
bnM6Ci0gICAgICAgIHJldHVybiBpc0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpICYmIGRvd25j
YXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5zZWxlY3RlZCgpOworICAgICAgICByZXR1
cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25F
bGVtZW50PihlbGVtZW50KS5zZWxlY3RlZCgpOwogICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgot
ICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSkgeworICAgICAgICBpZiAo
aXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBIVE1MT3B0aW9u
RWxlbWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwog
ICAgICAgICAgICAgaWYgKCFvcHRpb24uaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIW9wdGlv
bi52YWx1ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIw
Miw3ICsyMDIsNyBAQCBpbmxpbmUgYm9vbCBpc01hdGNoaW5nRWxlbWVudChjb25zdCBIVE1MQ29s
bGVjdGlvbiYgaHRtbENvbGxlY3Rpb24sIEVsZW1lbnQmIGVsZQogICAgIGNhc2UgTWFwQXJlYXM6
CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRhZyk7CiAgICAgY2FzZSBE
b2NBcHBsZXRzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFwcGxldFRhZykg
fHwgKGlzSFRNTE9iamVjdEVsZW1lbnQoZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9iamVjdEVs
ZW1lbnQ+KGVsZW1lbnQpLmNvbnRhaW5zSmF2YUFwcGxldCgpKTsKKyAgICAgICAgcmV0dXJuIGVs
ZW1lbnQuaGFzVGFnTmFtZShhcHBsZXRUYWcpIHx8IChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxl
bWVudCkgJiYgZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmNvbnRhaW5zSmF2
YUFwcGxldCgpKTsKICAgICBjYXNlIERvY0VtYmVkczoKICAgICAgICAgcmV0dXJuIGVsZW1lbnQu
aGFzVGFnTmFtZShlbWJlZFRhZyk7CiAgICAgY2FzZSBEb2NMaW5rczoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4IDM2NDJiODVjYjZjYjU3Mjg1ZDZjZDA3ZTVh
YjNlOWE1NDQxMWZhODEuLjRhZGE3MjU4NWU1ODA1NzdkMjM2ZGE4MDM5OTJhMDJmODc2MDM5OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAtMTg5LDcgKzE4
OSw3IEBAIGJvb2wgSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiAgICAgLy8gSWYgbXkgcGFyZW50IGlzIGFuIDxvYmplY3Q+IGFuZCBp
cyBub3Qgc2V0IHRvIHVzZSBmYWxsYmFjayBjb250ZW50LCBJCiAgICAgLy8gc2hvdWxkIGJlIGln
bm9yZWQgYW5kIG5vdCBnZXQgYSByZW5kZXJlci4KICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQg
PSBwYXJlbnROb2RlKCk7Ci0gICAgaWYgKHBhcmVudCAmJiBpc0hUTUxPYmplY3RFbGVtZW50KHBh
cmVudCkpIHsKKyAgICBpZiAocGFyZW50ICYmIGlzPEhUTUxPYmplY3RFbGVtZW50PihwYXJlbnQp
KSB7CiAgICAgICAgIGlmICghcGFyZW50LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBpZiAoIWRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PigqcGFyZW50
KS51c2VGYWxsYmFja0NvbnRlbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMTJhY2ZiM2FjNTgyZmViYjU0MDY5ZGE0ZjJiNjcz
NTRiZWMwM2QxYS4uYmNhZDI3NjZlZGU1MGMwYTZkOGQwYTAyMmViZTg5Y2ExODdmMDM2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0x
OTIsNyArMTkyLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQXV0b2ZvY3VzKEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQqIGVsZW1lbnQpCiAKICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgc2V0IG9mIGhh
c1RhZ05hbWUgY2hlY2tzIGJlIHJlcGxhY2VkIGJ5IGEKICAgICAvLyB2aXJ0dWFsIG1lbWJlciBm
dW5jdGlvbj8KLSAgICBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmIChp
czxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuICFkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCkuaXNJbnB1dFR5cGVIaWRkZW4oKTsKICAgICBpZiAo
ZWxlbWVudC0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRBdXRvZm9jdXMoSFRNTEZvcm1Db250
cm9sRWxlbWVudCogZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGVsZW1l
bnQtPmhhc1RhZ05hbWUoYnV0dG9uVGFnKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KGlzSFRNTFRleHRBcmVhRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTFRleHRBcmVh
RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDQ1ODliNDc3
NzU3ZjZkYjJhM2IwM2M4MmI1ZjYzNWE1OWM0OWQ4YTkuLmUzOWM4NGYwODg2YzQzODUzMzc1NWJl
MzQ2YmNmYWM3ZGJlNjljZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6Z2V0VGV4dEZpZWxk
VmFsdWVzKFN0cmluZ1BhaXJWZWN0b3ImIGZpZWxkTmFtZXNBbmRWYWx1ZXMpCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCYgY29udHJvbCA9ICptX2Fzc29jaWF0ZWRFbGVt
ZW50c1tpXTsKICAgICAgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBjb250cm9sLmFzSFRNTEVs
ZW1lbnQoKTsKLSAgICAgICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpCisgICAg
ICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50PihlbGVtZW50KTsKICAgICAgICAgaWYgKCFpbnB1dC5pc1RleHRGaWVsZCgpKQpA
QCAtNTkyLDcgKzU5Miw3IEBAIHVuc2lnbmVkIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJ
bmRleChGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtCiAgICAgZm9yIChhdXRv
JiBlbGVtZW50IDogZGVzY2VuZGFudHMpIHsKICAgICAgICAgaWYgKCZlbGVtZW50ID09ICZhc3Nv
Y2lhdGVkSFRNTEVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgaWYgKCFp
c0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoZWxlbWVudCkgJiYgIWlzSFRNTE9iamVjdEVsZW1lbnQo
ZWxlbWVudCkpCisgICAgICAgIGlmICghaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGVsZW1lbnQp
ICYmICFpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybSgpICE9IHRoaXMpCiAgICAgICAgICAgICBjb250
aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcAppbmRleCBmYjM0Yzhj
Y2Q5MjA2NmY0ZTBmMDMzNmE4MWU3NWQzMjEyY2Q1YzViLi4yOWZiY2RlOGM2ZDliZDY2ZjM5ZGIy
ZDQwMDdlODFlNGUwZmY3M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgSFRNTEltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRF
dmVudCgpCiAKICAgICBib29sIGVycm9yT2NjdXJyZWQgPSBpbWFnZSgpLT5lcnJvck9jY3VycmVk
KCk7CiAgICAgaWYgKCFlcnJvck9jY3VycmVkICYmIGltYWdlKCktPnJlc3BvbnNlKCkuaHR0cFN0
YXR1c0NvZGUoKSA+PSA0MDApCi0gICAgICAgIGVycm9yT2NjdXJyZWQgPSBpc0hUTUxPYmplY3RF
bGVtZW50KGVsZW1lbnQoKSk7IC8vIEFuIDxvYmplY3Q+IGNvbnNpZGVycyBhIDQwNCB0byBiZSBh
biBlcnJvciBhbmQgc2hvdWxkIGZpcmUgb25lcnJvci4KKyAgICAgICAgZXJyb3JPY2N1cnJlZCA9
IGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KCkpOyAvLyBBbiA8b2JqZWN0PiBjb25zaWRl
cnMgYSA0MDQgdG8gYmUgYW4gZXJyb3IgYW5kIHNob3VsZCBmaXJlIG9uZXJyb3IuCiAgICAgZWxl
bWVudCgpLmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShlcnJvck9jY3VycmVkID8gZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQgOiBldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKIH0KIApAQCAtODUsNyArODUsNyBAQCB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGxvYWRF
cnJvciAmJiBpc0hUTUxPYmplY3RFbGVtZW50KGVsZW1lbnQoKSkpCisgICAgaWYgKGxvYWRFcnJv
ciAmJiBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCgpKSkKICAgICAgICAgZG93bmNhc3Q8
SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQoKSkucmVuZGVyRmFsbGJhY2tDb250ZW50KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAppbmRleCBmZWY0
MWZkZGUzZWNmZGU5YTQ4YzRhYzE0ZWViYjk1MmUxOWMwNjhmLi4yMzBkMDRiNWM5ZmE4OThhZDI5
ZTAwMjE5MmYyODUyOGYzNDA1MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxOYW1lQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNv
bGxlY3Rpb24uY3BwCkBAIC02NiwxNCArNjYsMTQgQEAgYm9vbCBXaW5kb3dOYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3QK
IGJvb2wgRG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRl
TWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0
byBmaXggSFRNTEltYWdlRWxlbWVudCB0byB1cGRhdGUgdGhlIGhhc2ggbWFwIGZvciB1cyB3aGVu
IG5hbWUgYXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuCi0gICAgcmV0dXJuIGVsZW1lbnQuaGFz
VGFnTmFtZShhcHBsZXRUYWcpIHx8IChpc0hUTUxPYmplY3RFbGVtZW50KGVsZW1lbnQpICYmIGRv
d25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KS5pc0RvY05hbWVkSXRlbSgpKQorICAg
IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCAoaXM8SFRNTE9iamVjdEVs
ZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KS5p
c0RvY05hbWVkSXRlbSgpKQogICAgICAgICB8fCAoaXNIVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQp
ICYmIGVsZW1lbnQuaGFzTmFtZSgpKTsKIH0KIAogYm9vbCBEb2N1bWVudE5hbWVDb2xsZWN0aW9u
OjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCiB7CiAgICAgcmV0dXJuIGlzSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGlmcmFtZVRhZykKLSAg
ICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgKGlzSFRNTE9iamVjdEVs
ZW1lbnQoZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmlz
RG9jTmFtZWRJdGVtKCkpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShhcHBsZXRUYWcp
IHx8IChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9iamVj
dEVsZW1lbnQ+KGVsZW1lbnQpLmlzRG9jTmFtZWRJdGVtKCkpCiAgICAgICAgIHx8IGlzSFRNTElt
YWdlRWxlbWVudChlbGVtZW50KTsKIH0KIApAQCAtODUsNyArODUsNyBAQCBib29sIERvY3VtZW50
TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IEF0b21pYwogICAgICAgICByZXR1cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1w
bCgpID09IG5hbWU7CiAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShhcHBsZXRUYWcpKQogICAg
ICAgICByZXR1cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwg
ZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOwotICAgIGlmIChpc0hUTUxP
YmplY3RFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmIChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxl
bWVudCkpCiAgICAgICAgIHJldHVybiAoZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgp
ID09IG5hbWUgfHwgZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lKSAmJiBk
b3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuaXNEb2NOYW1lZEl0ZW0oKTsKICAg
ICBpZiAoaXNIVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVu
dC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwgKGVsZW1lbnQuZ2V0SWRBdHRy
aWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSAmJiBlbGVtZW50Lmhhc05hbWUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAppbmRleCA5NWQ2YWJjMWZlZTYzYmU5
MDg3MmEyNTBjMGUzNzY0ZTA4YzFlMjE5Li5kN2JkNmNjZGIzMzJlYWRiZmZhNTFlNTQxZDI1MTJk
MmM1NDQ1OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5j
cHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBIVE1MT3B0R3JvdXBFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWMKIHZvaWQgSFRNTE9w
dEdyb3VwRWxlbWVudDo6cmVjYWxjU2VsZWN0T3B0aW9ucygpCiB7CiAgICAgQ29udGFpbmVyTm9k
ZSogc2VsZWN0ID0gcGFyZW50Tm9kZSgpOwotICAgIHdoaWxlIChzZWxlY3QgJiYgIWlzSFRNTFNl
bGVjdEVsZW1lbnQoc2VsZWN0KSkKKyAgICB3aGlsZSAoc2VsZWN0ICYmICFpczxIVE1MU2VsZWN0
RWxlbWVudD4oc2VsZWN0KSkKICAgICAgICAgc2VsZWN0ID0gc2VsZWN0LT5wYXJlbnROb2RlKCk7
CiAgICAgaWYgKHNlbGVjdCkKICAgICAgICAgZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KCpz
ZWxlY3QpLnNldFJlY2FsY0xpc3RJdGVtcygpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIFN0cmluZyBI
VE1MT3B0R3JvdXBFbGVtZW50Ojpncm91cExhYmVsVGV4dCgpIGNvbnN0CiBIVE1MU2VsZWN0RWxl
bWVudCogSFRNTE9wdEdyb3VwRWxlbWVudDo6b3duZXJTZWxlY3RFbGVtZW50KCkgY29uc3QKIHsK
ICAgICBDb250YWluZXJOb2RlKiBzZWxlY3QgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKHNl
bGVjdCAmJiAhaXNIVE1MU2VsZWN0RWxlbWVudChzZWxlY3QpKQorICAgIHdoaWxlIChzZWxlY3Qg
JiYgIWlzPEhUTUxTZWxlY3RFbGVtZW50PihzZWxlY3QpKQogICAgICAgICBzZWxlY3QgPSBzZWxl
Y3QtPnBhcmVudE5vZGUoKTsKICAgICAKICAgICBpZiAoIXNlbGVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMWFiN2EwNDA4YmY0ZjhhYmNkZGFjZTdj
MjFiMWFlNzk5ZGQwMjQwMS4uY2U2NTEyN2M1OGY4YWNhNjJhNjVmMTc3MjM4NDg0MmY2Y2UzY2Qy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTE2MCw3
ICsxNjAsNyBAQCBpbnQgSFRNTE9wdGlvbkVsZW1lbnQ6OmluZGV4KCkgY29uc3QKICAgICBjb25z
dCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBzZWxlY3RFbGVtZW50LT5saXN0SXRlbXMo
KTsKICAgICBzaXplX3QgbGVuZ3RoID0gaXRlbXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc0hUTUxPcHRpb25FbGVtZW50
KGl0ZW1zW2ldKSkKKyAgICAgICAgaWYgKCFpczxIVE1MT3B0aW9uRWxlbWVudD4oaXRlbXNbaV0p
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChpdGVtc1tpXSA9PSB0aGlzKQog
ICAgICAgICAgICAgcmV0dXJuIG9wdGlvbkluZGV4OwpAQCAtMjY3LDcgKzI2Nyw3IEBAIEhUTUxE
YXRhTGlzdEVsZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lckRhdGFMaXN0RWxlbWVudCgp
IGNvbnN0CiBIVE1MU2VsZWN0RWxlbWVudCogSFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyU2VsZWN0
RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSogc2VsZWN0ID0gcGFyZW50Tm9k
ZSgpOwotICAgIHdoaWxlIChzZWxlY3QgJiYgIWlzSFRNTFNlbGVjdEVsZW1lbnQoc2VsZWN0KSkK
KyAgICB3aGlsZSAoc2VsZWN0ICYmICFpczxIVE1MU2VsZWN0RWxlbWVudD4oc2VsZWN0KSkKICAg
ICAgICAgc2VsZWN0ID0gc2VsZWN0LT5wYXJlbnROb2RlKCk7CiAKICAgICBpZiAoIXNlbGVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNDgyYjgyZjg1
YWM2MjIwZTM5OWJlMjhjYjM0ZDI0YzFjMWEzMmRkZC4uMDUwZDA0YzQyNjkyY2EzODgxOWQ4NDkx
ZTJkMDJhMGM3NmU2MTgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjdGl2ZVNl
bGVjdGlvbkVuZExpc3RJbmRleCgpIGNvbnN0CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFk
ZChIVE1MRWxlbWVudCogZWxlbWVudCwgSFRNTEVsZW1lbnQqIGJlZm9yZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgaWYgKCFlbGVtZW50IHx8ICEoaXNIVE1MT3B0aW9uRWxlbWVudCgqZWxl
bWVudCkgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShoclRhZykpKQorICAgIGlmICghZWxlbWVudCB8
fCAhKGlzPEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkgfHwgZWxlbWVudC0+aGFzVGFnTmFt
ZShoclRhZykpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIGVsZW1l
bnQgaXMgcmVmJ2QgYW5kIGRlcmVmJ2Qgc28gd2UgZG9uJ3QgbGVhayBpdC4KQEAgLTI1MCw3ICsy
NTAsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQq
IG9wdGlvbikKIFN0cmluZyBIVE1MU2VsZWN0RWxlbWVudDo6dmFsdWUoKSBjb25zdAogewogICAg
IGZvciAoYXV0byogaXRlbSA6IGxpc3RJdGVtcygpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxPcHRp
b25FbGVtZW50KCppdGVtKSkgeworICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCpp
dGVtKSkgewogICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0
PEhUTUxPcHRpb25FbGVtZW50PigqaXRlbSk7CiAgICAgICAgICAgICBpZiAob3B0aW9uLnNlbGVj
dGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZSgpOwpAQCAtMjcwLDcg
KzI3MCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyAm
dmFsdWUpCiAgICAgLy8gRmluZCB0aGUgb3B0aW9uIHdpdGggdmFsdWUoKSBtYXRjaGluZyB0aGUg
Z2l2ZW4gcGFyYW1ldGVyIGFuZCBtYWtlIGl0IHRoZSBjdXJyZW50IHNlbGVjdGlvbi4KICAgICB1
bnNpZ25lZCBvcHRpb25JbmRleCA9IDA7CiAgICAgZm9yIChhdXRvKiBpdGVtIDogbGlzdEl0ZW1z
KCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoKml0ZW0pKSB7CisgICAgICAg
IGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oKml0ZW0pKSB7CiAgICAgICAgICAgICBpZiAoZG93
bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCppdGVtKS52YWx1ZSgpID09IHZhbHVlKSB7CiAgICAg
ICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChvcHRpb25JbmRleCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMzYzLDcgKzM2Myw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmICghdXNlc01lbnVMaXN0
KCkpCi0gICAgICAgIHJldHVybiBpc0hUTUxPcHRpb25FbGVtZW50KGNoaWxkKSB8fCBpc0hUTUxP
cHRHcm91cEVsZW1lbnQoY2hpbGQpIHx8IHZhbGlkYXRpb25NZXNzYWdlU2hhZG93VHJlZUNvbnRh
aW5zKGNoaWxkKTsKKyAgICAgICAgcmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihjaGlsZCkg
fHwgaXNIVE1MT3B0R3JvdXBFbGVtZW50KGNoaWxkKSB8fCB2YWxpZGF0aW9uTWVzc2FnZVNoYWRv
d1RyZWVDb250YWlucyhjaGlsZCk7CiAjZW5kaWYKICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VTaGFkb3dUcmVlQ29udGFpbnMoY2hpbGQpOwogfQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW4sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgICAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBpdGVtc1RvUmVtb3ZlOwog
ICAgICAgICBzaXplX3Qgb3B0aW9uSW5kZXggPSAwOwogICAgICAgICBmb3IgKGF1dG8mIGl0ZW0g
OiBpdGVtcykgewotICAgICAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoKml0ZW0pICYm
IG9wdGlvbkluZGV4KysgPj0gbmV3TGVuKSB7CisgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlv
bkVsZW1lbnQ+KCppdGVtKSAmJiBvcHRpb25JbmRleCsrID49IG5ld0xlbikgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChpdGVtLT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGl0ZW1z
VG9SZW1vdmUuYXBwZW5kKGl0ZW0pOwogICAgICAgICAgICAgfQpAQCAtNTIxLDcgKzUyMSw3IEBA
IGludCBIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFZhbGlkSW5kZXgoaW50IGxpc3RJbmRleCwgU2tp
cERpcmVjdGlvbiBkaXJlY3Rpb24sIGluCiAgICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6ZSgp
OwogICAgIGZvciAobGlzdEluZGV4ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAgJiYgbGlz
dEluZGV4IDwgc2l6ZTsgbGlzdEluZGV4ICs9IGRpcmVjdGlvbikgewogICAgICAgICAtLXNraXA7
Ci0gICAgICAgIGlmICghbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpICYmIGlzSFRNTE9wdGlvbkVsZW1lbnQobGlzdEl0ZW1zW2xpc3RJbmRleF0pKSB7CisgICAg
ICAgIGlmICghbGlzdEl0ZW1zW2xpc3RJbmRleF0tPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYm
IGlzPEhUTUxPcHRpb25FbGVtZW50PihsaXN0SXRlbXNbbGlzdEluZGV4XSkpIHsKICAgICAgICAg
ICAgIGxhc3RHb29kSW5kZXggPSBsaXN0SW5kZXg7CiAgICAgICAgICAgICBpZiAoc2tpcCA8PSAw
KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6OnNhdmVMYXN0U2VsZWN0aW9uKCkKICAgICBjb25zdCBWZWN0b3I8SFRNTEVs
ZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBp
dGVtc1tpXTsKLSAgICAgICAgbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb24uYXBwZW5kKGlzSFRNTE9w
dGlvbkVsZW1lbnQoZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1l
bnQpLT5zZWxlY3RlZCgpKTsKKyAgICAgICAgbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb24uYXBwZW5k
KGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxl
bWVudD4oZWxlbWVudCktPnNlbGVjdGVkKCkpOwogICAgIH0KIH0KIApAQCAtNjIwLDcgKzYyMCw3
IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4
KGludCBpbmRleCkKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1tpXTsKLSAgICAgICAgbV9j
YWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlvbi5hcHBlbmQoaXNIVE1MT3B0aW9uRWxlbWVudChl
bGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCktPnNlbGVjdGVk
KCkpOworICAgICAgICBtX2NhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uLmFwcGVuZChpczxI
VE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+
KGVsZW1lbnQpLT5zZWxlY3RlZCgpKTsKICAgICB9CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKGJvb2wgZGVzZWxl
Y3RPdGhlck9wdGlvbnMpCiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0g
bGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gaXRlbXNbaV07Ci0gICAgICAg
IGlmICghaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSB8fCBkb3duY2FzdDxIVE1MT3B0aW9u
RWxlbWVudD4oKmVsZW1lbnQpLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQorICAgICAgICBpZiAo
IWlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSB8fCBkb3duY2FzdDxIVE1MT3B0aW9uRWxl
bWVudD4oKmVsZW1lbnQpLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgaWYgKGkgPj0gc3RhcnQgJiYgaSA8PSBlbmQpCkBAIC02NzYsNyAr
Njc2LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKCkKICAgICBi
b29sIGZpcmVPbkNoYW5nZSA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
dGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGl0ZW1z
W2ldOwotICAgICAgICBib29sIHNlbGVjdGVkID0gaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50
KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnNlbGVjdGVkKCk7Cisg
ICAgICAgIGJvb2wgc2VsZWN0ZWQgPSBpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgJiYg
ZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KS5zZWxlY3RlZCgpOwogICAgICAg
ICBpZiAoc2VsZWN0ZWQgIT0gbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb25baV0pCiAgICAgICAgICAg
ICBmaXJlT25DaGFuZ2UgPSB0cnVlOwogICAgICAgICBtX2xhc3RPbkNoYW5nZVNlbGVjdGlvbltp
XSA9IHNlbGVjdGVkOwpAQCAtNzk4LDcgKzc5OCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnJlY2FsY0xpc3RJdGVtcyhib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzKSBjb25zdAogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoY3Vy
cmVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihjdXJyZW50KSkgewog
ICAgICAgICAgICAgbV9saXN0SXRlbXMuYXBwZW5kKGN1cnJlbnQpOwogCiAgICAgICAgICAgICBp
ZiAodXBkYXRlU2VsZWN0ZWRTdGF0ZXMgJiYgIW1fbXVsdGlwbGUpIHsKQEAgLTg0MCw3ICs4NDAs
NyBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkSW5kZXgoKSBjb25zdAogICAgIGNv
bnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSBpdGVtc1tpXTsKLSAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQo
ZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkg
ewogICAgICAgICAgICAgaWYgKGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCku
c2VsZWN0ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgICAr
K2luZGV4OwpAQCAtODc2LDcgKzg3Niw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVj
dE9wdGlvbihpbnQgb3B0aW9uSW5kZXgsIFNlbGVjdE9wdGlvbkZsYWdzIGZsYWdzKQogICAgIEhU
TUxFbGVtZW50KiBlbGVtZW50ID0gbnVsbHB0cjsKICAgICBpZiAobGlzdEluZGV4ID49IDApIHsK
ICAgICAgICAgZWxlbWVudCA9IGl0ZW1zW2xpc3RJbmRleF07Ci0gICAgICAgIGlmIChpc0hUTUxP
cHRpb25FbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVu
dD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvcklu
ZGV4IDwgMCB8fCBzaG91bGREZXNlbGVjdCkKICAgICAgICAgICAgICAgICBzZXRBY3RpdmVTZWxl
Y3Rpb25BbmNob3JJbmRleChsaXN0SW5kZXgpOwogICAgICAgICAgICAgaWYgKG1fYWN0aXZlU2Vs
ZWN0aW9uRW5kSW5kZXggPCAwIHx8IHNob3VsZERlc2VsZWN0KQpAQCAtOTE4LDcgKzkxOCw3IEBA
IGludCBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgoaW50IG9wdGlvbkluZGV4
KSBjb25zdAogCiAgICAgaW50IG9wdGlvbkluZGV4MiA9IC0xOwogICAgIGZvciAoaW50IGxpc3RJ
bmRleCA9IDA7IGxpc3RJbmRleCA8IGxpc3RTaXplOyArK2xpc3RJbmRleCkgewotICAgICAgICBp
ZiAoaXNIVE1MT3B0aW9uRWxlbWVudChpdGVtc1tsaXN0SW5kZXhdKSkgeworICAgICAgICBpZiAo
aXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW1zW2xpc3RJbmRleF0pKSB7CiAgICAgICAgICAgICAr
K29wdGlvbkluZGV4MjsKICAgICAgICAgICAgIGlmIChvcHRpb25JbmRleDIgPT0gb3B0aW9uSW5k
ZXgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RJbmRleDsKQEAgLTkzMSwxMyArOTMxLDEz
IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgoaW50IG9wdGlvbklu
ZGV4KSBjb25zdAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0VG9PcHRpb25JbmRleChpbnQg
bGlzdEluZGV4KSBjb25zdAogewogICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVt
cyA9IGxpc3RJdGVtcygpOwotICAgIGlmIChsaXN0SW5kZXggPCAwIHx8IGxpc3RJbmRleCA+PSBz
dGF0aWNfY2FzdDxpbnQ+KGl0ZW1zLnNpemUoKSkgfHwgIWlzSFRNTE9wdGlvbkVsZW1lbnQoaXRl
bXNbbGlzdEluZGV4XSkpCisgICAgaWYgKGxpc3RJbmRleCA8IDAgfHwgbGlzdEluZGV4ID49IHN0
YXRpY19jYXN0PGludD4oaXRlbXMuc2l6ZSgpKSB8fCAhaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0
ZW1zW2xpc3RJbmRleF0pKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICAvLyBBY3R1YWwgaW5k
ZXggb2Ygb3B0aW9uIG5vdCBjb3VudGluZyBPUFRHUk9VUCBlbnRyaWVzIHRoYXQgbWF5IGJlIGlu
IGxpc3QuCiAgICAgaW50IG9wdGlvbkluZGV4ID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGxpc3RJbmRleDsgKytpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGl0ZW1z
W2ldKSkKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihpdGVtc1tpXSkpCiAgICAg
ICAgICAgICArK29wdGlvbkluZGV4OwogICAgIH0KIApAQCAtOTY4LDcgKzk2OCw3IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OmRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbihIVE1MRWxl
bWVudCogZXhjbHVkZUVsZW1lCiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1z
ID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gaXRlbXNbaV07Ci0gICAg
ICAgIGlmIChlbGVtZW50ICE9IGV4Y2x1ZGVFbGVtZW50ICYmIGlzSFRNTE9wdGlvbkVsZW1lbnQo
ZWxlbWVudCkpCisgICAgICAgIGlmIChlbGVtZW50ICE9IGV4Y2x1ZGVFbGVtZW50ICYmIGlzPEhU
TUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxPcHRp
b25FbGVtZW50PigqZWxlbWVudCkuc2V0U2VsZWN0ZWRTdGF0ZShmYWxzZSk7CiAgICAgfQogfQpA
QCAtOTc5LDcgKzk3OSw3IEBAIEZvcm1Db250cm9sU3RhdGUgSFRNTFNlbGVjdEVsZW1lbnQ6OnNh
dmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3QKICAgICBzaXplX3QgbGVuZ3RoID0gaXRlbXMuc2l6
ZSgpOwogICAgIEZvcm1Db250cm9sU3RhdGUgc3RhdGU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICghaXNIVE1MT3B0aW9uRWxlbWVudChp
dGVtc1tpXSkpCisgICAgICAgIGlmICghaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW1zW2ldKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9u
ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCppdGVtc1tpXSk7CiAgICAgICAgIGlmICgh
b3B0aW9uLnNlbGVjdGVkKCkpCkBAIC05OTYsNyArOTk2LDcgQEAgc2l6ZV90IEhUTUxTZWxlY3RF
bGVtZW50OjpzZWFyY2hPcHRpb25zRm9yVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgc2l6ZV90
IGxpc3QKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMo
KTsKICAgICBzaXplX3QgbG9vcEVuZEluZGV4ID0gc3RkOjptaW4oaXRlbXMuc2l6ZSgpLCBsaXN0
SW5kZXhFbmQpOwogICAgIGZvciAoc2l6ZV90IGkgPSBsaXN0SW5kZXhTdGFydDsgaSA8IGxvb3BF
bmRJbmRleDsgKytpKSB7Ci0gICAgICAgIGlmICghaXNIVE1MT3B0aW9uRWxlbWVudChpdGVtc1tp
XSkpCisgICAgICAgIGlmICghaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW1zW2ldKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+
KCppdGVtc1tpXSkudmFsdWUoKSA9PSB2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBpOwpAQCAt
MTAxNCw3ICsxMDE0LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVzdG9yZUZvcm1Db250
cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXNTaXplOyArK2kpIHsKLSAgICAgICAg
aWYgKCFpc0hUTUxPcHRpb25FbGVtZW50KGl0ZW1zW2ldKSkKKyAgICAgICAgaWYgKCFpczxIVE1M
T3B0aW9uRWxlbWVudD4oaXRlbXNbaV0pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqaXRlbXNbaV0pLnNldFNlbGVjdGVkU3RhdGUo
ZmFsc2UpOwogICAgIH0KQEAgLTEwNjEsNyArMTA2MSw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1l
bnQ6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgbGlzdCwgYm9vbCkKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBIVE1MRWxl
bWVudCogZWxlbWVudCA9IGl0ZW1zW2ldOwotICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVu
dChlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnNlbGVj
dGVkKCkgJiYgIWRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkuaXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVt
ZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnNlbGVjdGVkKCkg
JiYgIWRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkuaXNEaXNhYmxlZEZvcm1D
b250cm9sKCkpIHsKICAgICAgICAgICAgIGxpc3QuYXBwZW5kRGF0YShuYW1lLCBkb3duY2FzdDxI
VE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnZhbHVlKCkpOwogICAgICAgICAgICAgc3VjY2Vz
c2Z1bCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTEwODEsNyArMTA4MSw3IEBAIHZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6OnJlc2V0KCkKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRl
bXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1tpXTsKLSAg
ICAgICAgaWYgKCFpc0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpKQorICAgICAgICBpZiAoIWlz
PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb24gPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxl
bWVudD4oKmVsZW1lbnQpOwpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxl
bWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0ZShpbnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29s
IHNoaWYKICAgICBib29sIG11bHRpU2VsZWN0ID0gbV9tdWx0aXBsZSAmJiBtdWx0aSAmJiAhc2hp
ZnQ7CiAKICAgICBIVE1MRWxlbWVudCogY2xpY2tlZEVsZW1lbnQgPSBsaXN0SXRlbXMoKVtsaXN0
SW5kZXhdOwotICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGNsaWNrZWRFbGVtZW50KSkgewor
ICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oY2xpY2tlZEVsZW1lbnQpKSB7CiAgICAgICAg
IC8vIEtlZXAgdHJhY2sgb2Ygd2hldGhlciBhbiBhY3RpdmUgc2VsZWN0aW9uIChsaWtlIGR1cmlu
ZyBkcmFnCiAgICAgICAgIC8vIHNlbGVjdGlvbiksIHNob3VsZCBzZWxlY3Qgb3IgZGVzZWxlY3Qu
CiAgICAgICAgIGlmIChkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmNsaWNrZWRFbGVtZW50
KS5zZWxlY3RlZCgpICYmIG11bHRpU2VsZWN0KQpAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0ZShpbnQgbGlzdEluZGV4LCBib29s
IG11bHRpLCBib29sIHNoaWYKICAgICAgICAgc2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgo
c2VsZWN0ZWRJbmRleCgpKTsKIAogICAgIC8vIFNldCB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRo
ZSBjbGlja2VkIG9wdGlvbi4KLSAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChjbGlja2VkRWxl
bWVudCkgJiYgIWRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqY2xpY2tlZEVsZW1lbnQpLmlz
RGlzYWJsZWRGb3JtQ29udHJvbCgpKQorICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oY2xp
Y2tlZEVsZW1lbnQpICYmICFkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmNsaWNrZWRFbGVt
ZW50KS5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgZG93bmNhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQ+KCpjbGlja2VkRWxlbWVudCkuc2V0U2VsZWN0ZWRTdGF0ZSh0cnVlKTsKIAogICAg
IC8vIElmIHRoZXJlIHdhcyBubyBzZWxlY3RlZEluZGV4KCkgZm9yIHRoZSBwcmV2aW91cyBpbml0
aWFsaXphdGlvbiwgb3IgSWYKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAg
ICAgIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGUgPSAhbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZTsKICAg
ICAgICAgICAgIEFTU0VSVChtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4ID49IDApOwogICAgICAg
ICAgICAgQVNTRVJUKG1fYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+
KGxpc3RJdGVtcy5zaXplKCkpKTsKLSAgICAgICAgICAgIEFTU0VSVChpc0hUTUxPcHRpb25FbGVt
ZW50KCpsaXN0SXRlbXNbbV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleF0pKTsKKyAgICAgICAgICAg
IEFTU0VSVChpczxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtc1ttX2FjdGl2ZVNlbGVjdGlv
bkVuZEluZGV4XSkpOwogICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRTdGF0ZShtX2FjdGl2ZVNl
bGVjdGlvbkVuZEluZGV4LCB0cnVlIC8qbXVsdGkqLywgZmFsc2UgLypzaGlmdCovKTsKICAgICAg
ICAgICAgIGxpc3RCb3hPbkNoYW5nZSgpOwogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRI
YW5kbGVkKCk7CkBAIC0xNTM5LDcgKzE1MzksNyBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxh
c3RTZWxlY3RlZExpc3RJbmRleCgpIGNvbnN0CiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50
Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IGl0ZW1zLnNpemUo
KTsgaTspIHsKICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1stLWldOwotICAg
ICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0
aW9uRWxlbWVudD4oKmVsZW1lbnQpLnNlbGVjdGVkKCkpCisgICAgICAgIGlmIChpczxIVE1MT3B0
aW9uRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVt
ZW50KS5zZWxlY3RlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgfQogICAgIHJldHVy
biAtMTsKQEAgLTE1NjAsNyArMTU2MCw3IEBAIFN0cmluZyBIVE1MU2VsZWN0RWxlbWVudDo6b3B0
aW9uQXRJbmRleChpbnQgaW5kZXgpIGNvbnN0CiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50
Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgCiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQg
PSBpdGVtc1tpbmRleF07Ci0gICAgaWYgKCFpc0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpIHx8
IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkuaXNEaXNhYmxlZEZvcm1Db250
cm9sKCkpCisgICAgaWYgKCFpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgfHwgZG93bmNh
c3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KS5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9u
RWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKIH0K
QEAgLTE1OTYsNyArMTU5Niw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjY2Vzc0tleVNl
dFNlbGVjdGVkSW5kZXgoaW50IGluZGV4KQogICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xp
c3RJbmRleChpbmRleCk7CiAgICAgaWYgKGxpc3RJbmRleCA+PSAwKSB7CiAgICAgICAgIEhUTUxF
bGVtZW50KiBlbGVtZW50ID0gaXRlbXNbbGlzdEluZGV4XTsKLSAgICAgICAgaWYgKGlzSFRNTE9w
dGlvbkVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KSkgewogICAgICAgICAgICAgaWYgKGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50
PigqZWxlbWVudCkuc2VsZWN0ZWQoKSkKICAgICAgICAgICAgICAgICBkb3duY2FzdDxIVE1MT3B0
aW9uRWxlbWVudD4oKmVsZW1lbnQpLnNldFNlbGVjdGVkU3RhdGUoZmFsc2UpOwogICAgICAgICAg
ICAgZWxzZQpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgdW5zaWduZWQgSFRNTFNlbGVjdEVsZW1lbnQ6
Omxlbmd0aCgpIGNvbnN0CiAKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMg
PSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoaXRlbXNbaV0pKQorICAg
ICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW1zW2ldKSkKICAgICAgICAgICAgICsr
b3B0aW9uczsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9J
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAKaW5k
ZXggNmVkYzBlOTVmNTgzODNlZGFhMTY2YzllNjZkOWU5MGRjZTZlZTdmMS4uOGE1ZTg4NTEwZTE2
YjlkZmZiM2U0NmU4NjU4MGNjMDQxMGU4NTc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYWRpb0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lu
cHV0VHlwZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBSYWRpb0lucHV0VHlwZTo6aGFuZGxl
S2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICBpZiAoaXNIVE1MRm9y
bUVsZW1lbnQobm9kZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgLy8gTG9vayBmb3Ig
bW9yZSByYWRpbyBidXR0b25zLgotICAgICAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChub2Rl
KSkKKyAgICAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXRFbGVtZW50
ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4obm9kZSk7CiAgICAgICAgIGlmIChpbnB1dEVs
ZW1lbnQtPmZvcm0oKSAhPSBlbGVtZW50KCkuZm9ybSgpKQpAQCAtMTIyLDcgKzEyMiw3IEBAIGJv
b2wgUmFkaW9JbnB1dFR5cGU6OmlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCogZXZl
bnQpIGNvbnN0CiAgICAgLy8gTmV2ZXIgYWxsb3cga2V5Ym9hcmQgdGFiYmluZyB0byBsZWF2ZSB5
b3UgaW4gdGhlIHNhbWUgcmFkaW8gZ3JvdXAuICBBbHdheXMKICAgICAvLyBza2lwIGFueSBvdGhl
ciBlbGVtZW50cyBpbiB0aGUgZ3JvdXAuCiAgICAgRWxlbWVudCogY3VycmVudEZvY3VzZWROb2Rl
ID0gZWxlbWVudCgpLmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKTsKLSAgICBpZiAoY3VycmVu
dEZvY3VzZWROb2RlICYmIGlzSFRNTElucHV0RWxlbWVudChjdXJyZW50Rm9jdXNlZE5vZGUpKSB7
CisgICAgaWYgKGN1cnJlbnRGb2N1c2VkTm9kZSAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihjdXJy
ZW50Rm9jdXNlZE5vZGUpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGZvY3VzZWRJbnB1
dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpjdXJyZW50Rm9jdXNlZE5vZGUpOwogICAg
ICAgICBpZiAoZm9jdXNlZElucHV0LmlzUmFkaW9CdXR0b24oKSAmJiBmb2N1c2VkSW5wdXQuZm9y
bSgpID09IGVsZW1lbnQoKS5mb3JtKCkgJiYgZm9jdXNlZElucHV0Lm5hbWUoKSA9PSBlbGVtZW50
KCkubmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDkzOTA1NTcw
ODYyNWJkNmNkNzlhYTdmNDAzNmJmMDIzZTBlMTZkNTkuLmE3YmUyMWZhZjc3MzdlZDliYmNjZGM1
ZjE5OTY3ZmVkNzkzODVkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wg
aGFzSW1wbGllZEVuZFRhZyhjb25zdCBIVE1MU3RhY2tJdGVtKiBpdGVtKQogICAgIHJldHVybiBp
dGVtLT5oYXNUYWdOYW1lKGRkVGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKGR0VGFn
KQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKGxpVGFnKQotICAgICAgICB8fCBpc0hUTUxP
cHRpb25FbGVtZW50KGl0ZW0tPm5vZGUoKSkKKyAgICAgICAgfHwgaXM8SFRNTE9wdGlvbkVsZW1l
bnQ+KGl0ZW0tPm5vZGUoKSkKICAgICAgICAgfHwgaXNIVE1MT3B0R3JvdXBFbGVtZW50KGl0ZW0t
Pm5vZGUoKSkKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShwVGFnKQogICAgICAgICB8fCBp
dGVtLT5oYXNUYWdOYW1lKHJiVGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCBlNTgxODQxZjlmNDdkNWQwMjlhZjVlZjNlMGI4YmJi
MzM3MjJkM2M4Li45ZjQ1MTI2ZmJlNjQ0ZDMwYTY3ZmRkMzBiNDY0NzA4NjU0N2RjM2UwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAt
MTIwLDcgKzEyMCw3IEBAIGlubGluZSBib29sIGlzQnV0dG9uU2NvcGVNYXJrZXIoSFRNTFN0YWNr
SXRlbSogaXRlbSkKIAogaW5saW5lIGJvb2wgaXNTZWxlY3RTY29wZU1hcmtlcihIVE1MU3RhY2tJ
dGVtKiBpdGVtKQogewotICAgIHJldHVybiAhaXNIVE1MT3B0R3JvdXBFbGVtZW50KGl0ZW0tPm5v
ZGUoKSkgJiYgIWlzSFRNTE9wdGlvbkVsZW1lbnQoaXRlbS0+bm9kZSgpKTsKKyAgICByZXR1cm4g
IWlzSFRNTE9wdEdyb3VwRWxlbWVudChpdGVtLT5ub2RlKCkpICYmICFpczxIVE1MT3B0aW9uRWxl
bWVudD4oaXRlbS0+bm9kZSgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggYjkzNjhkZjgwMzc2MzZkYjJkZDY1N2Q4YTlh
MzgwNTc0NzdmYjI5NC4uNTgwNWNmMGM5OTBiY2ZhYjMyZDE5N2ZkY2EzMDM0YmQ0NmU2NTE1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBA
IC04NjgsNyArODY4LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0Zv
ckluQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGdyb3VwVGFnIHx8IHRva2VuLT5uYW1lKCkgPT0g
b3B0aW9uVGFnKSB7Ci0gICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KG1fdHJlZS5jdXJy
ZW50U3RhY2tJdGVtKCktPm5vZGUoKSkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVt
ZW50PihtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpKSB7CiAgICAgICAgICAgICBB
dG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9j
YWxOYW1lKCkpOwogICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZygmZW5kT3B0aW9uKTsKICAgICAg
ICAgfQpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NT
dGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGlvblRhZykgewotICAgICAg
ICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+
bm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihtX3RyZWUu
Y3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgQXRvbWljSFRN
TFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW46OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgp
KTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKCZlbmRPcHRpb24pOwogICAgICAgICAg
ICAgfQpAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NT
dGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGdyb3VwVGFnKSB7Ci0gICAg
ICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgp
LT5ub2RlKCkpKSB7CisgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fdHJl
ZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBBdG9taWNI
VE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1l
KCkpOwogICAgICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoJmVuZE9wdGlvbik7CiAgICAgICAg
ICAgICB9CkBAIC0yMjMzLDcgKzIyMzMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6
SW5TZWxlY3Q6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9k
ZTo6SW5TZWxlY3QgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluU2VsZWN0
SW5UYWJsZSk7CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGdyb3VwVGFnKSB7Ci0g
ICAgICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChtX3RyZWUuY3VycmVudFN0YWNrSXRl
bSgpLT5ub2RlKCkpICYmIG1fdHJlZS5vbmVCZWxvd1RvcCgpICYmIGlzSFRNTE9wdEdyb3VwRWxl
bWVudChtX3RyZWUub25lQmVsb3dUb3AoKS0+bm9kZSgpKSkKKyAgICAgICAgICAgIGlmIChpczxI
VE1MT3B0aW9uRWxlbWVudD4obV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+bm9kZSgpKSAmJiBt
X3RyZWUub25lQmVsb3dUb3AoKSAmJiBpc0hUTUxPcHRHcm91cEVsZW1lbnQobV90cmVlLm9uZUJl
bG93VG9wKCktPm5vZGUoKSkpCiAgICAgICAgICAgICAgICAgcHJvY2Vzc0Zha2VFbmRUYWcob3B0
aW9uVGFnKTsKICAgICAgICAgICAgIGlmIChpc0hUTUxPcHRHcm91cEVsZW1lbnQobV90cmVlLmN1
cnJlbnRTdGFja0l0ZW0oKS0+bm9kZSgpKSkgewogICAgICAgICAgICAgICAgIG1fdHJlZS5vcGVu
RWxlbWVudHMoKS0+cG9wKCk7CkBAIC0yMjQzLDcgKzIyNDMsNyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGlvblRh
ZykgewotICAgICAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQobV90cmVlLmN1cnJlbnRT
dGFja0l0ZW0oKS0+bm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVt
ZW50PihtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wb3AoKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcAppbmRleCA1OWYyZDA5MWNhZTdjNGUwZjA1OGFi
MzdlZTM2OTQwYzIyNTg2MjM0Li5jZTdkZTliY2NhYWQ5NTlhOWNjMDRlNTA5NzM5ZTZkZTM4YzZm
MjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50VHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRUeXBlcy5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgTWVkaWFDb250cm9sRWxlbWVu
dFR5cGUgbWVkaWFDb250cm9sRWxlbWVudFR5cGUoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihub2RlLT5pc01lZGlhQ29udHJvbEVsZW1lbnQoKSk7
CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG5vZGUpOwotICAgIGlm
IChpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1l
bnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sSW5w
dXRFbGVtZW50Kj4oZWxlbWVudCktPmRpc3BsYXlUeXBlKCk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PE1lZGlhQ29udHJvbERpdkVsZW1lbnQqPihlbGVtZW50KS0+ZGlzcGxheVR5cGUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGUwNmI1NmQ3MDcx
MTY3MTY3NGY0ZmFhM2Y4YmQ4MDIzZDA5ZWU0ZjkuLjUwYWI4MTQ5NmIwNTkyNTZiNDRlNjFiMmVk
MmExYWNjY2U5YTUzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNw
cApAQCAtMTg5LDcgKzE4OSw3IEBAIFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJt
aXNzaW9uOjpjcmVhdGUoSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBjb25zdCBBCiAgICAgICAgIEhU
TUxFbGVtZW50JiBlbGVtZW50ID0gY29udHJvbC5hc0hUTUxFbGVtZW50KCk7CiAgICAgICAgIGlm
ICghZWxlbWVudC5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgICAgIGNvbnRyb2wu
YXBwZW5kRm9ybURhdGEoKmRvbUZvcm1EYXRhLCBpc011bHRpUGFydEZvcm0pOwotICAgICAgICBp
ZiAoaXNIVE1MSW5wdXRFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChpczxIVE1MSW5w
dXRFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5w
dXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KTsKICAgICAgICAgICAgIGlm
IChpbnB1dC5pc1RleHRGaWVsZCgpKSB7CiAgICAgICAgICAgICAgICAgZm9ybVZhbHVlcy5hcHBl
bmQoc3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPihpbnB1dC5uYW1lKCkuc3RyaW5nKCksIGlucHV0
LnZhbHVlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGNjNDAz
N2E3ZTkxN2Y0Y2E5ZGY1ZDJmNWVhODM5NmFkMzg5NGVlNDUuLjg5NDZjZmVlNzg2ZTZlMWZiYjZk
Y2I5MDIzMDQyY2QzNmZiMWUxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtMTAzMyw3ICsxMDMzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3BlbmVyKEZyYW1l
KiBvcGVuZXIpCiB2b2lkIEZyYW1lTG9hZGVyOjpoYW5kbGVGYWxsYmFja0NvbnRlbnQoKQogewog
ICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBtX2ZyYW1lLm93bmVyRWxlbWVudCgp
OwotICAgIGlmICghb3duZXIgfHwgIWlzSFRNTE9iamVjdEVsZW1lbnQob3duZXIpKQorICAgIGlm
ICghb3duZXIgfHwgIWlzPEhUTUxPYmplY3RFbGVtZW50Pihvd25lcikpCiAgICAgICAgIHJldHVy
bjsKICAgICBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oKm93bmVyKS5yZW5kZXJGYWxsYmFj
a0NvbnRlbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDk3
NTQ5N2FkYzVhMWJkMmFjZTQyZGE4MDEyZDE1ZTI0YzRlMTA5ZDQuLmY4ZjRmNDNjMjcxMDVlYTI2
ZTYyYzc3OTBkYWIzYmY1ODBiYWYzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcApAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGlu
Z0JlZm9yZUxvYWRFdmVudCgpCiAgICAgbG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQoKnRo
aXMpOwogICAgIG1faGFzUGVuZGluZ0xvYWRFdmVudCA9IGZhbHNlOwogICAgIAotICAgIGlmIChp
c0hUTUxPYmplY3RFbGVtZW50KGVsZW1lbnQoKSkpCisgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVt
ZW50PihlbGVtZW50KCkpKQogICAgICAgICBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxl
bWVudCgpKS5yZW5kZXJGYWxsYmFja0NvbnRlbnQoKTsKIAogICAgIC8vIE9ubHkgY29uc2lkZXIg
dXBkYXRpbmcgdGhlIHByb3RlY3Rpb24gcmVmLWNvdW50IG9mIHRoZSBFbGVtZW50IGltbWVkaWF0
ZWx5IGJlZm9yZSByZXR1cm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIu
Y3BwCmluZGV4IDk3YmRhYzE3NGM2ZmIxNmRjZGViNWU1MDFhOThlM2UzMGU3ZjFlNGEuLmQ5NGQ3
MmE4MzNhZTVjNzU5OWVkZTM4ZmE0YmE0ZTU1YzQyMDQwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgU3ViZnJhbWVM
b2FkZXI6OnJlcXVlc3RPYmplY3QoSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgb3duZXJFbGVtZW50
LCBjb25zdCBTCiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwg
PSBjb21wbGV0ZVVSTCh1cmwpOwogCi0gICAgYm9vbCBoYXNGYWxsYmFja0NvbnRlbnQgPSBpc0hU
TUxPYmplY3RFbGVtZW50KG93bmVyRWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1l
bnQ+KG93bmVyRWxlbWVudCkuaGFzRmFsbGJhY2tDb250ZW50KCk7CisgICAgYm9vbCBoYXNGYWxs
YmFja0NvbnRlbnQgPSBpczxIVE1MT2JqZWN0RWxlbWVudD4ob3duZXJFbGVtZW50KSAmJiBkb3du
Y2FzdDxIVE1MT2JqZWN0RWxlbWVudD4ob3duZXJFbGVtZW50KS5oYXNGYWxsYmFja0NvbnRlbnQo
KTsKIAogICAgIGJvb2wgdXNlRmFsbGJhY2s7CiAgICAgaWYgKHNob3VsZFVzZVBsdWdpbihjb21w
bGV0ZWRVUkwsIG1pbWVUeXBlLCBvd25lckVsZW1lbnQuc2hvdWxkUHJlZmVyUGx1Z0luc0Zvcklt
YWdlcygpLCBoYXNGYWxsYmFja0NvbnRlbnQsIHVzZUZhbGxiYWNrKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRl
eCBlODQ4ZTNiZGYyOTY5NjI1ODYzYWU0MDQwYTY2MWE2NmJkNjYyOGY2Li5lMmNmNGYyYTYxYzBm
OTVkMTYxNmEwZTQ0MzQ4YTM0MTM3Yzg1MWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtNTE2LDcgKzUxNiw3
IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
b2Rlc1NpemU7ICsraSkgewogICAgICAgICBOb2RlJiBub2RlID0gKm5vZGVzW2ldOwogICAgICAg
ICBGcmFtZSogY2hpbGRGcmFtZTsKLSAgICAgICAgaWYgKChpc0hUTUxGcmFtZUVsZW1lbnQobm9k
ZSkgfHwgaXNIVE1MSUZyYW1lRWxlbWVudChub2RlKSB8fCBpc0hUTUxPYmplY3RFbGVtZW50KG5v
ZGUpKQorICAgICAgICBpZiAoKGlzSFRNTEZyYW1lRWxlbWVudChub2RlKSB8fCBpc0hUTUxJRnJh
bWVFbGVtZW50KG5vZGUpIHx8IGlzPEhUTUxPYmplY3RFbGVtZW50Pihub2RlKSkKICAgICAgICAg
ICAgICYmIChjaGlsZEZyYW1lID0gdG9IVE1MRnJhbWVPd25lckVsZW1lbnQobm9kZSkuY29udGVu
dEZyYW1lKCkpKSB7CiAgICAgICAgICAgICBpZiAoZnJhbWVGaWx0ZXIgJiYgIWZyYW1lRmlsdGVy
KCpjaGlsZEZyYW1lKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAppbmRleCBkMzJkMzY5ZGJjOTE5NDQ1YWEwM2Q0ZDZjNTA1OWY1ZjNmMjc3MjYwLi4zYTg0
YWQ2OTcxNjM2ZGE0ZDI0NjRhYTg3YzU1MDA1MWNiMTE1MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBDaHJvbWU6OnNldFRvb2xUaXAoY29uc3QgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIGlmICh0b29sVGlwLmlzRW1wdHkoKSAmJiBtX3BhZ2Uu
c2V0dGluZ3MoKS5zaG93c1VSTHNJblRvb2xUaXBzKCkpIHsKICAgICAgICAgaWYgKEVsZW1lbnQq
IGVsZW1lbnQgPSByZXN1bHQuaW5uZXJOb25TaGFyZWRFbGVtZW50KCkpIHsKICAgICAgICAgICAg
IC8vIEdldCB0b29sdGlwIHJlcHJlc2VudGluZyBmb3JtIGFjdGlvbiwgaWYgcmVsZXZhbnQKLSAg
ICAgICAgICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAg
IGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgICAgIEhU
TUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmVsZW1l
bnQpOwogICAgICAgICAgICAgICAgIGlmIChpbnB1dC5pc1N1Ym1pdEJ1dHRvbigpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBpbnB1dC5mb3JtKCkp
IHsKQEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIENocm9tZTo6c2V0VG9vbFRpcChjb25zdCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgLy8gTGFzdGx5LCBmb3IgPGlucHV0IHR5cGU9ImZpbGUi
PiB0aGF0IGFsbG93IG11bHRpcGxlIGZpbGVzLCB3ZSdsbCBjb25zaWRlciBhIHRvb2x0aXAgZm9y
IHRoZSBzZWxlY3RlZCBmaWxlbmFtZXMKICAgICBpZiAodG9vbFRpcC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSByZXN1bHQuaW5uZXJOb25TaGFyZWRFbGVtZW50
KCkpIHsKLSAgICAgICAgICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpIHsKKyAg
ICAgICAgICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAg
ICAgICAgIHRvb2xUaXAgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCkuZGVm
YXVsdFRvb2xUaXAoKTsKIAogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgb2J0
YWluIHRleHQgZGlyZWN0aW9uIG9mIHRvb2x0aXAgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IGNlZjE4MWY4MjNkMDg2ZDhmMDNjZjQ4NjY2M2I4OGE5Yzc0NTk3NWMu
LmQ5NGU0MDZkZDM5Njk5YThiODUyMTcxZTE4ZTM4NWU2ZTJiODk0NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEyNjcsNyArMTI2Nyw3IEBAIEZyYW1lKiBFdmVudEhh
bmRsZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShOb2RlKiBub2RlKQogI2lmIEVOQUJMRShDVVJT
T1JfU1VQUE9SVCkKIHN0YXRpYyBib29sIGlzU3VibWl0SW1hZ2UoTm9kZSogbm9kZSkKIHsKLSAg
ICByZXR1cm4gbm9kZSAmJiBpc0hUTUxJbnB1dEVsZW1lbnQobm9kZSkgJiYgZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oKm5vZGUpLmlzSW1hZ2VCdXR0b24oKTsKKyAgICByZXR1cm4gbm9kZSAm
JiBpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
Pigqbm9kZSkuaXNJbWFnZUJ1dHRvbigpOwogfQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIG5v
ZGUncyBlZGl0YWJsZSBibG9jayBpcyBub3QgY3VycmVudCBmb2N1c2VkIGZvciBlZGl0aW5nCkBA
IC0xNzYxLDcgKzE3NjEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2
ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3VzZQogICAgICAgICAvLyBJ
ZiBhIG1vdXNlIGV2ZW50IGhhbmRsZXIgY2hhbmdlcyB0aGUgaW5wdXQgZWxlbWVudCB0eXBlIHRv
IG9uZSB0aGF0IGhhcyBhIHdpZGdldCBhc3NvY2lhdGVkLAogICAgICAgICAvLyB3ZSdkIGxpa2Ug
dG8gRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQgdG8gcGFzcyB0aGUgZXZlbnQg
dG8gdGhlIHdpZGdldCBhbmQgdGh1cyB0aGUKICAgICAgICAgLy8gZXZlbnQgdGFyZ2V0IG5vZGUg
Y2FuJ3Qgc3RpbGwgYmUgdGhlIHNoYWRvdyBub2RlLgotICAgICAgICBpZiAobW91c2VFdmVudC50
YXJnZXROb2RlKCktPmlzU2hhZG93Um9vdCgpICYmIGlzSFRNTElucHV0RWxlbWVudCh0b1NoYWRv
d1Jvb3QobW91c2VFdmVudC50YXJnZXROb2RlKCkpLT5ob3N0RWxlbWVudCgpKSkKKyAgICAgICAg
aWYgKG1vdXNlRXZlbnQudGFyZ2V0Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSAmJiBpczxIVE1MSW5w
dXRFbGVtZW50Pih0b1NoYWRvd1Jvb3QobW91c2VFdmVudC50YXJnZXROb2RlKCkpLT5ob3N0RWxl
bWVudCgpKSkKICAgICAgICAgICAgIG1vdXNlRXZlbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnBy
ZXBhcmVNb3VzZUV2ZW50KEhpdFRlc3RSZXF1ZXN0KCksIGRvY3VtZW50UG9pbnQsIHBsYXRmb3Jt
TW91c2VFdmVudCk7CiAKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggYTAzYWEwZDZmZWRk
ODRkYjcxOTY4OWNmNzhiMWZiODE1NGJkMThkYS4uZjdiZDcyMjE5NTNmMTkxMTk0NDBmNWE3OGM4
MzMwMzVhOTczNmZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApA
QCAtNTc0LDcgKzU3NCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyU2VsZWN0aW9uSWZOZWVkZWQoRnJh
bWUqIG9sZEZvY3VzZWRGcmFtZSwgRnJhbWUqIG5ld0ZvY3VzZWRGcmFtCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgICAgICBpZiAoTm9kZSogc2hhZG93QW5jZXN0b3JOb2RlID0g
cm9vdC0+ZGVwcmVjYXRlZFNoYWRvd0FuY2VzdG9yTm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoc2hhZG93QW5jZXN0b3JOb2RlKSAmJiAhaXNIVE1MVGV4
dEFyZWFFbGVtZW50KHNoYWRvd0FuY2VzdG9yTm9kZSkpCisgICAgICAgICAgICAgICAgaWYgKCFp
czxIVE1MSW5wdXRFbGVtZW50PihzaGFkb3dBbmNlc3Rvck5vZGUpICYmICFpczxIVE1MVGV4dEFy
ZWFFbGVtZW50PihzaGFkb3dBbmNlc3Rvck5vZGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCBmNWEwZGRlYmQyNGNjNmJiOGQ5ZWVhMDcyMTMwZTI0ZTFhZGQyOGYzLi5kZjZmZWU0NTA1
NTk2MTk1NTM4ZGQzNjk3MzAwYzEyZjFiY2E5YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC0xNDE0LDcgKzE0MTQsNyBAQCB2b2lkIEZyYW1lVmlldzo6YWRkRW1iZWRkZWRPYmpl
Y3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1iZWRkZWRPYmplY3QpCiAgICAgICAg
IG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0
PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+KCk7CiAKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQm
IGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwotICAgIGlmIChp
c0hUTUxPYmplY3RFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTEVtYmVkRWxlbWVudChlbGVtZW50
KSkgeworICAgIGlmIChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEVt
YmVkRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgLy8gVGVsbCB0aGUgRE9NIGVsZW1lbnQg
dGhhdCBpdCBuZWVkcyBhIHdpZGdldCB1cGRhdGUuCiAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQmIHBsdWdpbkVsZW1lbnQgPSB0b0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoZWxlbWVudCk7
CiAgICAgICAgIGlmICghcGx1Z2luRWxlbWVudC5uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZSgpKQpA
QCAtMjc4OCw3ICsyNzg4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0
KFJlbmRlckVtYmVkZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVjdCkKICAgICBIVE1MRnJhbWVPd25l
ckVsZW1lbnQmIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwog
CiAgICAgaWYgKGVtYmVkZGVkT2JqZWN0LmlzU25hcHNob3R0ZWRQbHVnSW4oKSkgewotICAgICAg
ICBpZiAoaXNIVE1MT2JqZWN0RWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxFbWJlZEVsZW1lbnQo
ZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSB8
fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCYgcGx1Z2luRWxlbWVudCA9IHRvSFRNTFBsdWdJbkltYWdlRWxlbWVudChl
bGVtZW50KTsKICAgICAgICAgICAgIHBsdWdpbkVsZW1lbnQuY2hlY2tTbmFwc2hvdFN0YXR1cygp
OwogICAgICAgICB9CkBAIC0yNzk5LDcgKzI3OTksNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRl
RW1iZWRkZWRPYmplY3QoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogCiAg
ICAgLy8gRklYTUU6IFRoaXMgY291bGQgdHVybiBpbnRvIGEgcmVhbCB2aXJ0dWFsIGRpc3BhdGNo
IGlmIHdlIGRlZmluZWQKICAgICAvLyB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24p
IG9uIEhUTUxFbGVtZW50LgotICAgIGlmIChpc0hUTUxPYmplY3RFbGVtZW50KGVsZW1lbnQpIHx8
IGlzSFRNTEVtYmVkRWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxBcHBsZXRFbGVtZW50KGVsZW1l
bnQpKSB7CisgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1M
RW1iZWRFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkp
IHsKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z2luRWxlbWVudCA9IHRvSFRN
TFBsdWdJbkltYWdlRWxlbWVudChlbGVtZW50KTsKICAgICAgICAgaWYgKHBsdWdpbkVsZW1lbnQu
bmVlZHNDaGVja0ZvclNpemVDaGFuZ2UoKSkgewogICAgICAgICAgICAgcGx1Z2luRWxlbWVudC5j
aGVja1NuYXBzaG90U3RhdHVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
CmluZGV4IDg5MDkzOGMzNzRlZmExMjNhNzFiZjg3NDNjN2U4ZjhkYzRjMGYxNmMuLjhjYzY4ZTk5
OTAzMjA1Y2NkN2M4ZTg1ODVmMzI2NjJlNjM1M2IwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBib29sIHNob3VsZElnbm9y
ZUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWRO
YW1lJiBmcmFtZU93bmVyVVJMQXR0cmlidXRlTmFtZShjb25zdCBIVE1MRnJhbWVPd25lckVsZW1l
bnQmIGZyYW1lT3duZXIpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IGFsbCBm
cmFtZSBvd25lcnMgaW5jbHVkaW5nIGFwcGxldHMuCi0gICAgcmV0dXJuIGlzSFRNTE9iamVjdEVs
ZW1lbnQoZnJhbWVPd25lcikgPyBIVE1MTmFtZXM6OmRhdGFBdHRyIDogSFRNTE5hbWVzOjpzcmNB
dHRyOworICAgIHJldHVybiBpczxIVE1MT2JqZWN0RWxlbWVudD4oZnJhbWVPd25lcikgPyBIVE1M
TmFtZXM6OmRhdGFBdHRyIDogSFRNTE5hbWVzOjpzcmNBdHRyOwogfQogCiBjbGFzcyBTZXJpYWxp
emVyTWFya3VwQWNjdW11bGF0b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TWFya3VwQWNjdW11
bGF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCA5
ZDYyM2ExNmQyOWM4ZTlkODQwNGMwZmM4OWQ3ZWE1ZjMyM2EwMjRjLi5kNTZjOWYwZDc4ZThhOTA3
NDZhZDc3ZmM0ZWEyNzc4MmY3OTY5MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmNwcApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGJvb2wgY2FuU2Nyb2xsSW5EaXJlY3Rp
b24oY29uc3QgTm9kZSogY29udGFpbmVyLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKGNvbnRhaW5lcik7CiAKLSAgICBpZiAoaXNIVE1MU2VsZWN0RWxlbWVudChjb250
YWluZXIpKQorICAgIGlmIChpczxIVE1MU2VsZWN0RWxlbWVudD4oY29udGFpbmVyKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGNvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCAwY2M0NTUw
ZDA4MjAwNDY3OTY3NjA4MGZiZDg4MGFkM2MzYWZiMTcwLi42MTM2NmRlNmY1NmNiNDFmZDRkNjI0
MDFlZjgxMmE3YjYwYmExNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OmFsdERp
c3BsYXlTdHJpbmcoKSBjb25zdAogICAgICAgICByZXR1cm4gZGlzcGxheVN0cmluZyhpbWFnZS5m
YXN0R2V0QXR0cmlidXRlKGFsdEF0dHIpLCBtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7CiAg
ICAgfQogICAgIAotICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQoKm1faW5uZXJOb25TaGFyZWRO
b2RlKSkgeworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqbV9pbm5lck5vblNoYXJlZE5v
ZGUpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oKm1faW5uZXJOb25TaGFyZWROb2RlKTsKICAgICAgICAgcmV0dXJuIGRpc3Bs
YXlTdHJpbmcoaW5wdXQuYWx0KCksIG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKTsKICAgICB9
CkBAIC0zMTksNyArMzE5LDcgQEAgVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwo
KSBjb25zdAogICAgIEF0b21pY1N0cmluZyB1cmxTdHJpbmc7CiAgICAgaWYgKG1faW5uZXJOb25T
aGFyZWROb2RlLT5oYXNUYWdOYW1lKGVtYmVkVGFnKQogICAgICAgICB8fCBpc0hUTUxJbWFnZUVs
ZW1lbnQobV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpCi0gICAgICAgIHx8IGlzSFRNTElucHV0
RWxlbWVudChtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSkKKyAgICAgICAgfHwgaXM8SFRNTElu
cHV0RWxlbWVudD4obV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpCiAgICAgICAgIHx8IG1faW5u
ZXJOb25TaGFyZWROb2RlLT5oYXNUYWdOYW1lKG9iamVjdFRhZykKICAgICAgICAgfHwgaXM8U1ZH
SW1hZ2VFbGVtZW50PihtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSkpCiAgICAgICAgIHsKQEAg
LTMzNiw3ICszMzYsNyBAQCBVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVQREZVUkwoKSBjb25z
dAogICAgIGlmICghbV9pbm5lck5vblNoYXJlZE5vZGUpCiAgICAgICAgIHJldHVybiBVUkwoKTsK
IAotICAgIGlmICghaXNIVE1MRW1iZWRFbGVtZW50KCptX2lubmVyTm9uU2hhcmVkTm9kZSkgJiYg
IWlzSFRNTE9iamVjdEVsZW1lbnQoKm1faW5uZXJOb25TaGFyZWROb2RlKSkKKyAgICBpZiAoIWlz
PEhUTUxFbWJlZEVsZW1lbnQ+KCptX2lubmVyTm9uU2hhcmVkTm9kZSkgJiYgIWlzPEhUTUxPYmpl
Y3RFbGVtZW50PigqbV9pbm5lck5vblNoYXJlZE5vZGUpKQogICAgICAgICByZXR1cm4gVVJMKCk7
CiAKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVtZW50ID0gdG9IVE1MUGx1Z0luSW1h
Z2VFbGVtZW50KCptX2lubmVyTm9uU2hhcmVkTm9kZSk7CkBAIC01NTYsMTAgKzU1NiwxMCBAQCBi
b29sIEhpdFRlc3RSZXN1bHQ6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKICAgICBpZiAoIW1f
aW5uZXJOb25TaGFyZWROb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoaXNI
VE1MVGV4dEFyZWFFbGVtZW50KCptX2lubmVyTm9uU2hhcmVkTm9kZSkpCisgICAgaWYgKGlzPEhU
TUxUZXh0QXJlYUVsZW1lbnQ+KCptX2lubmVyTm9uU2hhcmVkTm9kZSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgaWYgKGlzSFRNTElucHV0RWxlbWVudCgqbV9pbm5lck5vblNoYXJlZE5v
ZGUpKQorICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqbV9pbm5lck5vblNoYXJlZE5vZGUp
KQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1faW5uZXJOb25T
aGFyZWROb2RlKS5pc1RleHRGaWVsZCgpOwogCiAgICAgcmV0dXJuIG1faW5uZXJOb25TaGFyZWRO
b2RlLT5oYXNFZGl0YWJsZVN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDQyZGZiY2E3ZGQwYjEwMTI2MmM4M2ZjMjk2NTBiMzBiODc0
MGNiNWQuLjE5YWE5OWIyMjczYWE0NzM3OGI2MGY1ODU1OTJhYTgzNmU4NDNlNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zNTY5LDcgKzM1
NjksNyBAQCBpbmxpbmUgc3RhdGljIGJvb2wgcmVzaXplVGV4dFBlcm1pdHRlZChSZW5kZXJPYmpl
Y3QqIHJlbmRlcikKICAgICAgICAgLy8gR2V0IHRoZSBmaXJzdCBub24tc2hhZG93IEhUTUxFbGVt
ZW50IGFuZCBzZWUgaWYgaXQncyBhbiBpbnB1dC4KICAgICAgICAgaWYgKHJlbmRlcmVyLT5lbGVt
ZW50KCkgJiYgcmVuZGVyZXItPmVsZW1lbnQoKS0+aXNIVE1MRWxlbWVudCgpICYmICFyZW5kZXJl
ci0+ZWxlbWVudCgpLT5pc0luU2hhZG93VHJlZSgpKSB7CiAgICAgICAgICAgICBjb25zdCBIVE1M
RWxlbWVudCYgZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQoKnJlbmRlcmVyLT5lbGVtZW50KCkpOwot
ICAgICAgICAgICAgcmV0dXJuICFpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkgJiYgIWlzSFRN
TFRleHRBcmVhRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiAhaXM8SFRNTElu
cHV0RWxlbWVudD4oZWxlbWVudCkgJiYgIWlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQp
OwogICAgICAgICB9CiAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZWQ3ZTAxMmRlMGE1
MzcyYTMwODgxZTUzMjFlMzkyZDA0YjA2ZjQyYy4uYzk0YjZmNzZmZmMyMmNhOTljNjAwMTUzZWI5
MTg4MzcxNjQ5N2VmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTI0NzcsNyArMjQ3Nyw3IEBAIGJvb2wgUmVuZGVyQm94OjpzaXplc0xvZ2ljYWxXaWR0aFRvRml0
Q29udGVudChTaXplVHlwZSB3aWR0aFR5cGUpIGNvbnN0CiAgICAgLy8gc3RyZXRjaGluZyBjb2x1
bW4gZmxleGJveC4KICAgICAvLyBGSVhNRTogVGhpbmsgYWJvdXQgYmxvY2stZmxvdyBoZXJlLgog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQ3MwotICAg
IGlmIChsb2dpY2FsV2lkdGgudHlwZSgpID09IEF1dG8gJiYgIWlzU3RyZXRjaGluZ0NvbHVtbkZs
ZXhJdGVtKCp0aGlzKSAmJiBlbGVtZW50KCkgJiYgKGlzSFRNTElucHV0RWxlbWVudChlbGVtZW50
KCkpIHx8IGVsZW1lbnQoKS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpIHx8IGVsZW1lbnQoKS0+aGFz
VGFnTmFtZShidXR0b25UYWcpIHx8IGlzSFRNTFRleHRBcmVhRWxlbWVudChlbGVtZW50KCkpIHx8
IGVsZW1lbnQoKS0+aGFzVGFnTmFtZShsZWdlbmRUYWcpKSkKKyAgICBpZiAobG9naWNhbFdpZHRo
LnR5cGUoKSA9PSBBdXRvICYmICFpc1N0cmV0Y2hpbmdDb2x1bW5GbGV4SXRlbSgqdGhpcykgJiYg
ZWxlbWVudCgpICYmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KCkpIHx8IGVsZW1lbnQo
KS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpIHx8IGVsZW1lbnQoKS0+aGFzVGFnTmFtZShidXR0b25U
YWcpIHx8IGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQoKSkgfHwgZWxlbWVudCgpLT5o
YXNUYWdOYW1lKGxlZ2VuZFRhZykpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9IGNvbnRhaW5pbmdCbG9jaygpLT5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNw
cAppbmRleCAxMzljYjk3MmY1N2EwMDAwOGYxMTEwYjkyOTRhNDBmZjgyOTFkMGY5Li5jMGMyNTgw
M2E1ZmZiODE1NDA2NGY4ZGU0ZTAyMGI2NGJkZGUxZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQnV0dG9uLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgUmVuZGVyQnV0
dG9uOjpzZXR1cElubmVyU3R5bGUoUmVuZGVyU3R5bGUqIGlubmVyU3R5bGUpCiB2b2lkIFJlbmRl
ckJ1dHRvbjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewogICAgIC8vIElmIHdlJ3JlIGFuIGlucHV0
IGVsZW1lbnQsIHdlIG1heSBuZWVkIHRvIGNoYW5nZSBvdXIgYnV0dG9uIHRleHQuCi0gICAgaWYg
KGlzSFRNTElucHV0RWxlbWVudChmb3JtQ29udHJvbEVsZW1lbnQoKSkpIHsKKyAgICBpZiAoaXM8
SFRNTElucHV0RWxlbWVudD4oZm9ybUNvbnRyb2xFbGVtZW50KCkpKSB7CiAgICAgICAgIEhUTUxJ
bnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oZm9ybUNvbnRy
b2xFbGVtZW50KCkpOwogICAgICAgICBTdHJpbmcgdmFsdWUgPSBpbnB1dC52YWx1ZVdpdGhEZWZh
dWx0KCk7CiAgICAgICAgIHNldFRleHQodmFsdWUpOwpAQCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wg
UmVuZGVyQnV0dG9uOjpjYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdAogICAgIC8vIElu
cHV0IGVsZW1lbnRzIGNhbid0IGhhdmUgZ2VuZXJhdGVkIGNoaWxkcmVuLCBidXQgYnV0dG9uIGVs
ZW1lbnRzIGNhbi4gV2UnbGwKICAgICAvLyB3cml0ZSB0aGUgY29kZSBhc3N1bWluZyBhbnkgb3Ro
ZXIgYnV0dG9uIHR5cGVzIHRoYXQgbWlnaHQgZW1lcmdlIGluIHRoZSBmdXR1cmUKICAgICAvLyBj
YW4gYWxzbyBoYXZlIGNoaWxkcmVuLgotICAgIHJldHVybiAhaXNIVE1MSW5wdXRFbGVtZW50KGZv
cm1Db250cm9sRWxlbWVudCgpKTsKKyAgICByZXR1cm4gIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGZv
cm1Db250cm9sRWxlbWVudCgpKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJCdXR0b246OmNvbnRy
b2xDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAppbmRl
eCBjMDg0NTViMDdiMzcwNDQxNWQ2MTkxZWY4NjJiNjUxMGU0OTExNWYwLi45M2YwNmIyZjJkMDUx
NWIyMzUyM2ZmZTJlYTlkZGI0N2IwMzQ1YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBS
ZW5kZXJEZXRhaWxzTWFya2VyOjppc09wZW4oKSBjb25zdAogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpLT5oYXNUYWdOYW1lKGRldGFpbHNUYWcpKQog
ICAgICAgICAgICAgcmV0dXJuICF0b0VsZW1lbnQocmVuZGVyZXItPm5vZGUoKSktPmdldEF0dHJp
YnV0ZShvcGVuQXR0cikuaXNOdWxsKCk7Ci0gICAgICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQo
cmVuZGVyZXItPm5vZGUoKSkpCisgICAgICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihyZW5k
ZXJlci0+bm9kZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAK
aW5kZXggMjk1MWNmYTlkYjZlMDhhNGYyZDZlMmIzODRmOWI4NzYwMzRjMmVkMS4uNWY5M2UyZTMy
ZDg1M2FkODczMmViYjdlMmJjMTViYmVkODM2Zjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0yNTUsNyArMjU1
LDcgQEAgSFRNTElucHV0RWxlbWVudCogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnVwbG9hZEJ1
dHRvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlucHV0RWxlbWVudCgpLnNoYWRvd1Jvb3QoKSk7
CiAgICAgTm9kZSogYnV0dG9uTm9kZSA9IGlucHV0RWxlbWVudCgpLnNoYWRvd1Jvb3QoKS0+Zmly
c3RDaGlsZCgpOwotICAgIHJldHVybiBidXR0b25Ob2RlICYmIGJ1dHRvbk5vZGUtPmlzSFRNTEVs
ZW1lbnQoKSAmJiBpc0hUTUxJbnB1dEVsZW1lbnQoYnV0dG9uTm9kZSkgPyBkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50PihidXR0b25Ob2RlKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGJ1dHRvbk5v
ZGUgJiYgYnV0dG9uTm9kZS0+aXNIVE1MRWxlbWVudCgpICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KGJ1dHRvbk5vZGUpID8gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oYnV0dG9uTm9kZSkgOiBu
dWxscHRyOwogfQogCiBTdHJpbmcgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmJ1dHRvblZhbHVl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IGU4NTg1ODJh
Yzc0YmRhODIzNDBlMjg1MTA1MDYyNzZlNDQ2Mzk2Y2YuLjQyZjMyOWNjNmMxNjhkNzNlMTgxNzBl
YTRjMTA3NjMyZDBmZmVlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcApAQCAtNjU1LDcgKzY1NSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnVwZGF0ZUFsdFRleHQo
KQogICAgIGlmICghZWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNIVE1M
SW5wdXRFbGVtZW50KCplbGVtZW50KCkpKQorICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pigq
ZWxlbWVudCgpKSkKICAgICAgICAgbV9hbHRUZXh0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oKmVsZW1lbnQoKSkuYWx0VGV4dCgpOwogICAgIGVsc2UgaWYgKGlzSFRNTEltYWdlRWxlbWVu
dCgqZWxlbWVudCgpKSkKICAgICAgICAgbV9hbHRUZXh0ID0gZG93bmNhc3Q8SFRNTEltYWdlRWxl
bWVudD4oKmVsZW1lbnQoKSkuYWx0VGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwCmluZGV4IDYyYWVkYzNhNzFjYzQ2YzIzZmViZTIxODhhODQ3M2Q0ZDg2
ZmQwMDMuLmMxZTg0NDU5NzM4MjFiMzIzYWFiN2Q4ODZiNjYyYWE1NzM0OWQ4M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTExNiw3ICsxMTYsNyBA
QCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgICAgIEhU
TUxFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2ldOwogICAgICAgICAgICAgU3RyaW5nIHRl
eHQ7CiAgICAgICAgICAgICBGb250IGl0ZW1Gb250ID0gc3R5bGUoKS5mb250KCk7Ci0gICAgICAg
ICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSkKKyAgICAgICAgICAgIGlmIChp
czxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgdGV4dCA9IGRv
d25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0
R3JvdXBMYWJlbCgpOwogICAgICAgICAgICAgZWxzZSBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50
KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgdGV4dCA9IGRvd25jYXN0PEhUTUxPcHRHcm91
cEVsZW1lbnQ+KCplbGVtZW50KS5ncm91cExhYmVsVGV4dCgpOwpAQCAtMzMwLDcgKzMzMCw3IEBA
IHZvaWQgUmVuZGVyTGlzdEJveDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4m
IGxpc3RJdGVtcyA9IHNlbGVjdEVsZW1lbnQoKS5saXN0SXRlbXMoKTsKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGxp
c3RJdGVtc1tpXTsKLSAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkgJiYg
IWVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7CisgICAgICAgIGlmIChpczxIVE1M
T3B0aW9uRWxlbWVudD4oZWxlbWVudCkgJiYgIWVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpKSB7CiAgICAgICAgICAgICBzZWxlY3RFbGVtZW50KCkuc2V0QWN0aXZlU2VsZWN0aW9uRW5k
SW5kZXgoaSk7CiAgICAgICAgICAgICByZWN0cy5hcHBlbmQoc25hcHBlZEludFJlY3QoaXRlbUJv
dW5kaW5nQm94UmVjdChhZGRpdGlvbmFsT2Zmc2V0LCBpKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdy
b3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFN0cmluZyBpdGVtVGV4dDsKLSAgICBib29sIGlzT3B0aW9uRWxlbWVudCA9
IGlzSFRNTE9wdGlvbkVsZW1lbnQobGlzdEl0ZW1FbGVtZW50KTsKKyAgICBib29sIGlzT3B0aW9u
RWxlbWVudCA9IGlzPEhUTUxPcHRpb25FbGVtZW50PihsaXN0SXRlbUVsZW1lbnQpOwogICAgIGlm
IChpc09wdGlvbkVsZW1lbnQpCiAgICAgICAgIGl0ZW1UZXh0ID0gZG93bmNhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFi
ZWwoKTsKICAgICBlbHNlIGlmIChpc0hUTUxPcHRHcm91cEVsZW1lbnQobGlzdEl0ZW1FbGVtZW50
KSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tn
cm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIEhUTUxF
bGVtZW50KiBsaXN0SXRlbUVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsKIAogICAgIENv
bG9yIGJhY2tDb2xvcjsKLSAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChsaXN0SXRlbUVsZW1l
bnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS5zZWxl
Y3RlZCgpKSB7CisgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihsaXN0SXRlbUVsZW1lbnQp
ICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS5zZWxlY3Rl
ZCgpKSB7CiAgICAgICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2
ZSgpICYmIGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSAmc2VsZWN0RWxlbWVudCgpKQog
ICAgICAgICAgICAgYmFja0NvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDM3ZWVhNWVlNzIzYmRmOGRkNWU1OTA1MWU1OThjOTli
ODljNDQ0MjMuLjZlZTFiMzAxMDEzOTc1ZjJmNzhkOTY2ZDg4ZDRhNjlmNzE4ZWI1ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtNjQsNyArNjQs
NyBAQCBzdGF0aWMgc2l6ZV90IHNlbGVjdGVkT3B0aW9uQ291bnQoY29uc3QgUmVuZGVyTWVudUxp
c3QmIHJlbmRlck1lbnVMaXN0KQogCiAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bWJlck9mSXRlbXM7ICsraSkgewotICAgICAgICBpZiAoaXNIVE1M
T3B0aW9uRWxlbWVudChsaXN0SXRlbXNbaV0pICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50
PigqbGlzdEl0ZW1zW2ldKS5zZWxlY3RlZCgpKQorICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVs
ZW1lbnQ+KGxpc3RJdGVtc1tpXSkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0
SXRlbXNbaV0pLnNlbGVjdGVkKCkpCiAgICAgICAgICAgICArK2NvdW50OwogICAgIH0KICAgICBy
ZXR1cm4gY291bnQ7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6dXBk
YXRlT3B0aW9uc1dpZHRoKCkKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
CiAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2ldOwotICAgICAgICBp
ZiAoIWlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkpCisgICAgICAgIGlmICghaXM8SFRNTE9w
dGlvbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
U3RyaW5nIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJ
bmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFJl
bmRlck1lbnVMaXN0OjpzZXRUZXh0RnJvbU9wdGlvbihpbnQgb3B0aW9uSW5kZXgpCiAgICAgU3Ry
aW5nIHRleHQgPSBlbXB0eVN0cmluZygpOwogICAgIGlmIChpID49IDAgJiYgaSA8IHNpemUpIHsK
ICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tpXTsKLSAgICAgICAgaWYgKGlz
SFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25F
bGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgdGV4dCA9IGRvd25jYXN0PEhUTUxPcHRp
b25FbGVtZW50PigqZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOwog
ICAgICAgICAgICAgbV9vcHRpb25TdHlsZSA9IGVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKTsKICAg
ICAgICAgfQpAQCAtNDUyLDcgKzQ1Miw3IEBAIFN0cmluZyBSZW5kZXJNZW51TGlzdDo6aXRlbVRl
eHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0
SXRlbXNbbGlzdEluZGV4XTsKICAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KGVsZW1lbnQp
KQogICAgICAgICBpdGVtU3RyaW5nID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKmVs
ZW1lbnQpLmdyb3VwTGFiZWxUZXh0KCk7Ci0gICAgZWxzZSBpZiAoaXNIVE1MT3B0aW9uRWxlbWVu
dChlbGVtZW50KSkKKyAgICBlbHNlIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkp
CiAgICAgICAgIGl0ZW1TdHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1l
bnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKIAogICAgIGFwcGx5VGV4dFRy
YW5zZm9ybShzdHlsZSgpLCBpdGVtU3RyaW5nLCAnICcpOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIGJv
b2wgUmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc0VuYWJsZWQodW5zaWduZWQgbGlzdEluZGV4KSBjb25z
dAogICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07
Ci0gICAgaWYgKCFpc0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpKQorICAgIGlmICghaXM8SFRN
TE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBi
b29sIGdyb3VwRW5hYmxlZCA9IHRydWU7CkBAIC02NTQsNyArNjU0LDcgQEAgYm9vbCBSZW5kZXJN
ZW51TGlzdDo6aXRlbUlzU2VsZWN0ZWQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogICAgIGlm
IChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07Ci0gICAgcmV0
dXJuIGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCplbGVtZW50KS5zZWxlY3RlZCgpOworICAgIHJldHVybiBpczxIVE1MT3B0aW9uRWxl
bWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KS5z
ZWxlY3RlZCgpOwogfQogCiB2b2lkIFJlbmRlck1lbnVMaXN0OjpzZXRUZXh0RnJvbUl0ZW0odW5z
aWduZWQgbGlzdEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAK
aW5kZXggZmI1ZWU1Y2UzZjJhZGUwOGRkYjczMGE0MzM3MzgzZjI3NzMwMDBkYy4uMzA3Yjc4YjEy
OWNkYzNmYWNiYmQ5YzE3Y2NhY2EzNTQ1OGZkOWE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0xMDM1LDcgKzEwMzUsNyBAQCB2b2lkIFJlbmRlclRoZW1l
OjpwYWludFNsaWRlclRpY2tzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZv
JiBwYWludAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJ
bmZvLmNvbnRleHQpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioby5zdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgTm9kZSogbm9kZSA9IG9wdGlvbnMt
Pml0ZW0oaSk7IGkrKykgewotICAgICAgICBBU1NFUlQoaXNIVE1MT3B0aW9uRWxlbWVudChub2Rl
KSk7CisgICAgICAgIEFTU0VSVChpczxIVE1MT3B0aW9uRWxlbWVudD4obm9kZSkpOwogICAgICAg
ICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPcHRpb25F
bGVtZW50Pigqbm9kZSk7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG9wdGlvbkVsZW1lbnQudmFs
dWUoKTsKICAgICAgICAgaWYgKCFpbnB1dC0+aXNWYWxpZFZhbHVlKHZhbHVlKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0YTJiM2E0ZTUyNGE2ZmYxYjE3YWY4YzgzZWJh
ZWQ2MmM0MWIwM2FkLi42NzMxOTA2ODdiOTZlYWE2YTIyMzQzZjQzMTRiNTcxYzU2NjliZTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MzcsNyArNjM3LDcgQEAgU3Ry
aW5nIEludGVybmFsczo6dmlzaWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQqIGVsZW1lbnQpCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiB2b2lkIEludGVybmFsczo6c2VsZWN0Q29sb3JJbkNv
bG9yQ2hvb3NlcihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpCiB7
Ci0gICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1M
SW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7CiAgICAgaWYg
KCFpbnB1dEVsZW1lbnQpCkBAIC05MTIsNyArOTEyLDcgQEAgYm9vbCBJbnRlcm5hbHM6Ondhc0xh
c3RDaGFuZ2VVc2VyRWRpdChFbGVtZW50KiB0ZXh0RmllbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIGlmIChIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB0ZXh0RmllbGQtPnRvSW5w
dXRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmxhc3RDaGFuZ2VXYXNV
c2VyRWRpdCgpOwogCi0gICAgaWYgKGlzSFRNTFRleHRBcmVhRWxlbWVudCh0ZXh0RmllbGQpKQor
ICAgIGlmIChpczxIVE1MVGV4dEFyZWFFbGVtZW50Pih0ZXh0RmllbGQpKQogICAgICAgICByZXR1
cm4gZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oKnRleHRGaWVsZCkubGFzdENoYW5nZVdh
c1VzZXJFZGl0KCk7CiAKICAgICBlYyA9IElOVkFMSURfTk9ERV9UWVBFX0VSUjsKQEAgLTIwODQs
NyArMjA4NCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uKE5v
ZGUqIG5vZGUpCiAKIGJvb2wgSW50ZXJuYWxzOjppc1NlbGVjdFBvcHVwVmlzaWJsZShOb2RlKiBu
b2RlKQogewotICAgIGlmICghaXNIVE1MU2VsZWN0RWxlbWVudChub2RlKSkKKyAgICBpZiAoIWlz
PEhUTUxTZWxlY3RFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
SFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdCA9IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigq
bm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggOWExZjhmNTBhODI3NjRiZWNhNTViMWJkZWUzNmU3Zjcw
YTQ5YzU4Yi4uYzM3Y2Y4MGVkYjBiZmE4YTFiZmRjNTY1OWFhYmVlMWE3MTA5MzJhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcApAQCAtODU4LDcgKzg1OCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0
RWxlbWVudE5zKGNvbnN0IHhtbENoYXIqIHhtbExvY2FsTmFtZSwgY29uc3QgeG1sQ2hhCiAgICAg
cHVzaEN1cnJlbnROb2RlKG5ld0VsZW1lbnQuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBpZiAoaXNI
VE1MSHRtbEVsZW1lbnQoKm5ld0VsZW1lbnQpKQorICAgIGlmIChpczxIVE1MSHRtbEVsZW1lbnQ+
KCpuZXdFbGVtZW50KSkKICAgICAgICAgZG93bmNhc3Q8SFRNTEh0bWxFbGVtZW50PigqbmV3RWxl
bWVudCkuaW5zZXJ0ZWRCeVBhcnNlcigpOwogCiAgICAgaWYgKCFtX3BhcnNpbmdGcmFnbWVudCAm
JiBpc0ZpcnN0RWxlbWVudCAmJiBkb2N1bWVudCgpLT5mcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGIvU291
cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4
IDJiNjViYjBhYjY3NGZlNzU3ZjUyMDgyMTliMzBkMDcwYjdkYzk1YTMuLjE4NWM2NjMxY2VhMWNl
MWE1NTEwZWJjYWRiNDcyNTY1MWU1OWM0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KQEAgLTMxMSw3ICszMTEs
NyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudElPUzo6Zm9jdXNlZEVsZW1lbnRDaGFuZ2VkKEVsZW1l
bnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1MSW5wdXRF
bGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSFRNTElucHV0RWxlbWVu
dCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tCmluZGV4IDI0ZGU2N2E3MjM1ODEzYmE1ZTIyMmUzYzZkYzhmYWEwYzBlNzVhY2YuLjkzNmY0
NTQxYmVmNmNjM2ZmODI3NzUxMThkNmQ1ODFiMjY1MWVkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTIyMCw3ICsy
MjAsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEVsZW1lbnRDaGFuZ2VkKEVsZW1l
bnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1MSW5wdXRF
bGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSFRNTElucHV0RWxlbWVu
dCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCmluZGV4IGE2OTQ5MmM5NjA4NDRlOGQxMmNjNmIzMzYwZGY0NWViMjJhNWE0NDkuLjg4NDA1
NDkwMzQyNzFiNjA5YWFiNjUxYjdhMjk3MjQwMzRhYzc2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTcwNSw3ICs3
MDUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dEZpZWxkRGlk
QmVnaW5FZGl0aW5nKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFpc0hUTUxJbnB1dEVs
ZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgRE9NSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50
ID0ga2l0KGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKTsKQEAgLTcxNSw3ICs3
MTUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVs
ZW1lbnQqIGVsZW1lbnQpCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RmllbGREaWRFbmRF
ZGl0aW5nKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQo
ZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgRE9NSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0ga2l0
KGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKTsKQEAgLTcyNSw3ICs3MjUsNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dEZpZWxkRGlkRW5kRWRpdGluZyhFbGVtZW50KiBl
bGVtZW50KQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4dEZpZWxk
KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVu
dCkpCisgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0
dXJuOwogCiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTc2Myw3ICs3NjMsNyBAQCBzdGF0aWMgU0VM
IHNlbGVjdG9yRm9yS2V5RXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAKIGJvb2wgV2ViRWRp
dG9yQ2xpZW50Ojpkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCogZWxlbWVudCwg
S2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0gICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoZWxl
bWVudCkpCisgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAg
cmV0dXJuIE5POwogCiAgICAgRE9NSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0ga2l0
KGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKTsKQEAgLTc3NSw3ICs3NzUsNyBA
QCBib29sIFdlYkVkaXRvckNsaWVudDo6ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KEVsZW1l
bnQqIGVsZW1lbnQsIEtleWJvYXJkRXZlbgogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dFdp
bGxCZURlbGV0ZWRJblRleHRGaWVsZChFbGVtZW50KiBlbGVtZW50KQogewotICAgIGlmICghaXNI
VE1MSW5wdXRFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4o
ZWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIERPTUhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0RWxlbWVudCA9IGtpdChkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSk7CkBA
IC03ODYsNyArNzg2LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRleHRXaWxsQmVEZWxldGVk
SW5UZXh0RmllbGQoRWxlbWVudCogZWxlbWVudCkKIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRl
eHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFpc0hU
TUxUZXh0QXJlYUVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1MVGV4dEFyZWFFbGVt
ZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRE9NSFRNTFRleHRBcmVhRWxl
bWVudCogdGV4dEFyZWFFbGVtZW50ID0ga2l0KGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+
KGVsZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW0KaW5kZXggMDkyZTU4ZDdiNDNmY2M5NDYwNmQzODljMGY2NDdiZDRlNzg0
MjhhYS4uOWI5ZGU3YTVlN2Y0N2RhNTcwMzJmY2RiMmRmMTIzNmM5N2FlZmI1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAg
LTMwNSw3ICszMDUsNyBAQCAtIChET01FbGVtZW50ICopZWxlbWVudFdpdGhOYW1lOihOU1N0cmlu
ZyAqKW5hbWUgaW5Gb3JtOihET01FbGVtZW50ICopZm9ybQogc3RhdGljIEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0RWxlbWVudEZyb21ET01FbGVtZW50KERPTUVsZW1lbnQqIGVsZW1lbnQpCiB7CiAg
ICAgRWxlbWVudCogbm9kZSA9IGNvcmUoZWxlbWVudCk7Ci0gICAgcmV0dXJuIG5vZGUgJiYgaXNI
VE1MSW5wdXRFbGVtZW50KG5vZGUpID8gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4obm9kZSkg
OiBudWxscHRyOworICAgIHJldHVybiBub2RlICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUp
ID8gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4obm9kZSkgOiBudWxscHRyOwogfQogCiAtIChC
T09MKWVsZW1lbnREb2VzQXV0b0NvbXBsZXRlOihET01FbGVtZW50ICopZWxlbWVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IDhiOWQ1MmVjMGQ5MGNlOGNmM2VlODFkNDFm
MmZhM2VlYjJlYjhjZWIuLjAwMGYyYTYwNGI2YjUwMmNjM2U1MTMzZDhlODhjYTRhYTM2YTk2NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTE1MDYsMTYgKzE1MDYsMTYg
QEAgSURPTUVsZW1lbnQqIERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkVsZW1l
bnQqIGUpCiAgICAgfSBlbHNlIGlmIChlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKICAgICAg
ICAgRE9NSFRNTElGcmFtZUVsZW1lbnQqIG5ld0VsZW1lbnQgPSBuZXcgRE9NSFRNTElGcmFtZUVs
ZW1lbnQoZSk7CiAgICAgICAgIGhyID0gbmV3RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lE
T01FbGVtZW50LCAodm9pZCoqKSZkb21FbGVtZW50KTsKLSAgICB9IGVsc2UgaWYgKGlzSFRNTElu
cHV0RWxlbWVudChlKSkgeworICAgIH0gZWxzZSBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZSkp
IHsKICAgICAgICAgRE9NSFRNTElucHV0RWxlbWVudCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1M
SW5wdXRFbGVtZW50KGUpOwogICAgICAgICBociA9IG5ld0VsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNl
KElJRF9JRE9NRWxlbWVudCwgKHZvaWQqKikmZG9tRWxlbWVudCk7Ci0gICAgfSBlbHNlIGlmIChp
c0hUTUxPcHRpb25FbGVtZW50KGUpKSB7CisgICAgfSBlbHNlIGlmIChpczxIVE1MT3B0aW9uRWxl
bWVudD4oZSkpIHsKICAgICAgICAgRE9NSFRNTE9wdGlvbkVsZW1lbnQqIG5ld0VsZW1lbnQgPSBu
ZXcgRE9NSFRNTE9wdGlvbkVsZW1lbnQoZSk7CiAgICAgICAgIGhyID0gbmV3RWxlbWVudC0+UXVl
cnlJbnRlcmZhY2UoSUlEX0lET01FbGVtZW50LCAodm9pZCoqKSZkb21FbGVtZW50KTsKICAgICB9
IGVsc2UgaWYgKGUtPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkgewogICAgICAgICBET01IVE1MU2Vs
ZWN0RWxlbWVudCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MU2VsZWN0RWxlbWVudChlKTsKICAg
ICAgICAgaHIgPSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2
b2lkKiopJmRvbUVsZW1lbnQpOwotICAgIH0gZWxzZSBpZiAoaXNIVE1MVGV4dEFyZWFFbGVtZW50
KGUpKSB7CisgICAgfSBlbHNlIGlmIChpczxIVE1MVGV4dEFyZWFFbGVtZW50PihlKSkgewogICAg
ICAgICBET01IVE1MVGV4dEFyZWFFbGVtZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxUZXh0
QXJlYUVsZW1lbnQoZSk7CiAgICAgICAgIGhyID0gbmV3RWxlbWVudC0+UXVlcnlJbnRlcmZhY2Uo
SUlEX0lET01FbGVtZW50LCAodm9pZCoqKSZkb21FbGVtZW50KTsKICAgICB9IGVsc2UgaWYgKGUt
PmlzSFRNTEVsZW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRN
TENsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCmluZGV4
IGNjNmUzNGM0MjZmMTk1NzM0OWMxODhmMmFlYWFmY2QxM2RmYjk0YWUuLjdmZmFlYWMyMWI5ODgz
YmFjOTllMjg5NDU4OGE3MmQ4ZDgyODU2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L0RPTUhUTUxDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nl
cy5jcHAKQEAgLTg1OSw3ICs4NTksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhU
TUxPcHRpb25FbGVtZW50Ojp0ZXh0KAogICAgICpyZXN1bHQgPSAwOwogCiAgICAgQVNTRVJUKG1f
ZWxlbWVudCk7Ci0gICAgQVNTRVJUKGlzSFRNTE9wdGlvbkVsZW1lbnQobV9lbGVtZW50KSk7Cisg
ICAgQVNTRVJUKGlzPEhUTUxPcHRpb25FbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MT3B0
aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigq
bV9lbGVtZW50KTsKIAogICAgICpyZXN1bHQgPSBCU3RyaW5nKG9wdGlvbkVsZW1lbnQudGV4dCgp
KS5yZWxlYXNlKCk7CkBAIC04OTYsNyArODk2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01IVE1MT3B0aW9uRWxlbWVudDo6bGFiZWwoCiAgICAgKnJlc3VsdCA9IDA7CiAKICAgICBB
U1NFUlQobV9lbGVtZW50KTsKLSAgICBBU1NFUlQoaXNIVE1MT3B0aW9uRWxlbWVudChtX2VsZW1l
bnQpKTsKKyAgICBBU1NFUlQoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAg
IEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb25FbGVtZW50ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCptX2VsZW1lbnQpOwogCiAgICAgKnJlc3VsdCA9IEJTdHJpbmcob3B0aW9uRWxlbWVu
dC5sYWJlbCgpKS5yZWxlYXNlKCk7CkBAIC05OTIsNyArOTkyLDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50Ojpmb3JtKAogICAgIGlmICghcmVzdWx0KQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSBudWxscHRyOwotICAgIEFT
U0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFT
U0VSVChtX2VsZW1lbnQgJiYgaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAg
SFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oKm1fZWxlbWVudCk7CiAgICAgQ09NUHRyPElET01FbGVtZW50PiBkb21FbGVtZW50OwogICAg
IGRvbUVsZW1lbnQuYWRvcHRSZWYoRE9NSFRNTEVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKGlucHV0
RWxlbWVudC5mb3JtKCkpKTsKQEAgLTEwNzQsNyArMTA3NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0Q2hlY2tlZCgKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6ZGlzYWJsZWQoIAogICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlQobV9lbGVtZW50ICYm
IGlzSFRNTElucHV0RWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQobV9lbGVtZW50ICYm
IGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQm
IGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwog
ICAgICpyZXN1bHQgPSBpbnB1dEVsZW1lbnQuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgPyBUUlVF
IDogRkFMU0U7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC0xMTE4LDcgKzExMTgsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldE5hbWUoCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnJlYWRPbmx5KCAKICAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUKG1fZWxl
bWVudCAmJiBpc0hUTUxJbnB1dEVsZW1lbnQobV9lbGVtZW50KSk7CisgICAgQVNTRVJUKG1fZWxl
bWVudCAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRF
bGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVt
ZW50KTsKICAgICAqcmVzdWx0ID0gaW5wdXRFbGVtZW50LmlzUmVhZE9ubHkoKSA/IFRSVUUgOiBG
QUxTRTsKICAgICByZXR1cm4gU19PSzsKQEAgLTExODMsNyArMTE4Myw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6dHlwZSgKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0VHlwZSggCiAgICAgICAgIC8qIFtp
bl0gKi8gQlNUUiB0eXBlKQogewotICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MSW5wdXRF
bGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXM8SFRNTElucHV0
RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50
ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7CiAgICAgV1RGOjpTdHJp
bmcgdHlwZVN0cmluZyh0eXBlLCBTeXNTdHJpbmdMZW4odHlwZSkpOwogICAgIGlucHV0RWxlbWVu
dC5zZXRUeXBlKHR5cGVTdHJpbmcpOwpAQCAtMTIwNyw3ICsxMjA3LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRVc2VNYXAoCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlKCAKICAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCAm
JiBpc0hUTUxJbnB1dEVsZW1lbnQobV9lbGVtZW50KSk7CisgICAgQVNTRVJUKG1fZWxlbWVudCAm
JiBpczxIVE1MSW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50
JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsK
ICAgICBXVEY6OlN0cmluZyB2YWx1ZVN0cmluZyA9IGlucHV0RWxlbWVudC52YWx1ZSgpOwogICAg
ICpyZXN1bHQgPSBCU3RyaW5nKHZhbHVlU3RyaW5nKS5yZWxlYXNlKCk7CkBAIC0xMjE5LDcgKzEy
MTksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnZh
bHVlKAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRW
YWx1ZSggCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSkKIHsKLSAgICBBU1NFUlQobV9l
bGVtZW50ICYmIGlzSFRNTElucHV0RWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQobV9l
bGVtZW50ICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJbnB1
dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2Vs
ZW1lbnQpOwogICAgIGlucHV0RWxlbWVudC5zZXRWYWx1ZShTdHJpbmcoKFVDaGFyKikgdmFsdWUs
IFN5c1N0cmluZ0xlbih2YWx1ZSkpKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTEyMjksNyArMTIy
OSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0
VmFsdWVGb3JVc2VyKAogICAgICAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpCiB7CiAgICAgQVNT
RVJUKG1fZWxlbWVudCk7Ci0gICAgQVNTRVJUKGlzSFRNTElucHV0RWxlbWVudChtX2VsZW1lbnQp
KTsKKyAgICBBU1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRN
TElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km1fZWxlbWVudCk7CiAgICAgaW5wdXRFbGVtZW50LnNldFZhbHVlRm9yVXNlcihTdHJpbmcoc3Rh
dGljX2Nhc3Q8VUNoYXIqPih2YWx1ZSksIFN5c1N0cmluZ0xlbih2YWx1ZSkpKTsKICAgICByZXR1
cm4gU19PSzsKQEAgLTEyMzcsNyArMTIzNyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVGb3JVc2VyKAogCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdCggdm9pZCkKIHsKLSAgICBBU1NF
UlQobV9lbGVtZW50ICYmIGlzSFRNTElucHV0RWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NF
UlQobV9lbGVtZW50ICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhU
TUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KCptX2VsZW1lbnQpOwogICAgIGlucHV0RWxlbWVudC5zZWxlY3QoKTsKICAgICByZXR1cm4gU19P
SzsKQEAgLTEyNTIsNyArMTI1Miw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRN
TElucHV0RWxlbWVudDo6Y2xpY2soIHZvaWQpCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TUhUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KCAKICAgICAvKiBbaW5dICovIGxv
bmcgc3RhcnQpCiB7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxJbnB1dEVsZW1lbnQo
bV9lbGVtZW50KSk7CisgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpczxIVE1MSW5wdXRFbGVtZW50
PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKICAgICBpbnB1dEVsZW1lbnQuc2V0
U2VsZWN0aW9uU3RhcnQoc3RhcnQpOwogICAgIHJldHVybiBTX09LOwpAQCAtMTI2MSw3ICsxMjYx
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRT
ZWxlY3Rpb25TdGFydCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxl
bWVudDo6c2VsZWN0aW9uU3RhcnQoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gbG9uZyAqc3Rh
cnQpCiB7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxJbnB1dEVsZW1lbnQobV9lbGVt
ZW50KSk7CisgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihtX2Vs
ZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKICAgICAqc3RhcnQgPSBpbnB1dEVsZW1lbnQu
c2VsZWN0aW9uU3RhcnQoKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTEyNzAsNyArMTI3MCw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9u
U3RhcnQoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNl
dFNlbGVjdGlvbkVuZCggCiAgICAgLyogW2luXSAqLyBsb25nIGVuZCkKIHsKLSAgICBBU1NFUlQo
bV9lbGVtZW50ICYmIGlzSFRNTElucHV0RWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQo
bV9lbGVtZW50ICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJ
bnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpt
X2VsZW1lbnQpOwogICAgIGlucHV0RWxlbWVudC5zZXRTZWxlY3Rpb25FbmQoZW5kKTsKICAgICBy
ZXR1cm4gU19PSzsKQEAgLTEyNzksNyArMTI3OSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmQoIAogICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gbG9uZyAqZW5kKQogewotICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXNI
VE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXM8
SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5w
dXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7CiAgICAg
KmVuZCA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25FbmQoKTsKICAgICByZXR1cm4gU19PSzsKQEAg
LTEyOTEsNyArMTI5MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0
RWxlbWVudDo6aXNUZXh0RmllbGQoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1
bHQpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7Ci0gICAgQVNTRVJUKGlzSFRNTElucHV0RWxl
bWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVt
ZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7CiAgICAgKnJlc3VsdCA9IGlucHV0RWxlbWVudC5p
c1RleHRGaWVsZCgpID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwpAQCAtMTMwMSw3
ICsxMzAxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50
OjpyZWN0T25TY3JlZW4oCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBMUFJFQ1QgcmVjdCkKIHsK
ICAgICBBU1NFUlQobV9lbGVtZW50KTsKLSAgICBBU1NFUlQoaXNIVE1MSW5wdXRFbGVtZW50KG1f
ZWxlbWVudCkpOworICAgIEFTU0VSVChpczxIVE1MSW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsK
ICAgICByZWN0LT5sZWZ0ID0gcmVjdC0+dG9wID0gcmVjdC0+cmlnaHQgPSByZWN0LT5ib3R0b20g
PSAwOwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCk7
CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9lbGVtZW50LT5kb2N1bWVudCgpLnZpZXcoKTsKQEAg
LTEzMjcsNyArMTMyNyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0
RWxlbWVudDo6cmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlKAogICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOwogCiAgICAgQVNTRVJUKG1fZWxlbWVudCk7Ci0gICAgQVNTRVJUKGlzSFRNTElucHV0RWxl
bWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVt
ZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7CiAKICAgICBTdHJpbmcgbmV3VmFsdWUgPSBpbnB1
dEVsZW1lbnQudmFsdWUoKTsKQEAgLTEzNDQsNyArMTM0NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2VsZWN0ZWRSYW5nZSgKICAgICAvKiBbb3V0
XSAqLyBpbnQqIGVuZCkKIHsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKLSAgICBBU1NFUlQoaXNI
VE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChpczxIVE1MSW5wdXRFbGVt
ZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBk
b3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKICAgICAqc3RhcnQgPSBpbnB1
dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQoKTsKICAgICAqZW5kID0gaW5wdXRFbGVtZW50LnNlbGVj
dGlvbkVuZCgpOwpAQCAtMTM1NSw3ICsxMzU1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRBdXRvZmlsbGVkKAogICAgIC8qIFtpbl0gKi8gQk9P
TCBmaWxsZWQpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7Ci0gICAgQVNTRVJUKGlzSFRNTElu
cHV0RWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4o
bV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7CiAgICAgaW5wdXRFbGVtZW50LnNldEF1
dG9maWxsZWQoISFmaWxsZWQpOwogICAgIHJldHVybiBTX09LOwpAQCAtMTM2NSw3ICsxMzY1LDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50Ojppc0F1dG9m
aWxsZWQoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCiB7CiAgICAgQVNT
RVJUKG1fZWxlbWVudCk7Ci0gICAgQVNTRVJUKGlzSFRNTElucHV0RWxlbWVudChtX2VsZW1lbnQp
KTsKKyAgICBBU1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRN
TElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km1fZWxlbWVudCk7CiAgICAgKnJlc3VsdCA9IGlucHV0RWxlbWVudC5pc0F1dG9maWxsZWQoKSA/
IFRSVUUgOiBGQUxTRTsKICAgICByZXR1cm4gU19PSzsKQEAgLTEzODAsNyArMTM4MCw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6aXNVc2VyRWRpdGVk
KAogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgKnJlc3VsdCA9IEZBTFNFOwotICAg
IEFTU0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCkpOworICAg
IEFTU0VSVChtX2VsZW1lbnQgJiYgaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAg
ICAgQk9PTCB0ZXh0RmllbGQgPSBGQUxTRTsKICAgICBpZiAoRkFJTEVEKGlzVGV4dEZpZWxkKCZ0
ZXh0RmllbGQpKSB8fCAhdGV4dEZpZWxkKQogICAgICAgICByZXR1cm4gU19PSzsKQEAgLTE0Mjcs
NyArMTQyNyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFRleHRBcmVhRWxl
bWVudDo6Zm9ybSgKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
ICAgICAqcmVzdWx0ID0gMDsKLSAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzSFRNTFRleHRBcmVh
RWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzPEhUTUxUZXh0
QXJlYUVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQmIHRleHRh
cmVhRWxlbWVudCA9IGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCptX2VsZW1lbnQpOwog
ICAgIENPTVB0cjxJRE9NRWxlbWVudD4gZG9tRWxlbWVudDsKICAgICBkb21FbGVtZW50LmFkb3B0
UmVmKERPTUhUTUxFbGVtZW50OjpjcmVhdGVJbnN0YW5jZSh0ZXh0YXJlYUVsZW1lbnQuZm9ybSgp
KSk7CkBAIC0xNTQ0LDcgKzE1NDQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnR5cGUoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
U1RSKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxUZXh0QXJlYUVs
ZW1lbnQobV9lbGVtZW50KSk7CisgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpczxIVE1MVGV4dEFy
ZWFFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MVGV4dEFyZWFFbGVtZW50JiB0ZXh0YXJl
YUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50PigqbV9lbGVtZW50KTsKICAg
ICBXVEY6OlN0cmluZyB2YWx1ZVN0cmluZyA9IHRleHRhcmVhRWxlbWVudC52YWx1ZSgpOwogICAg
ICpyZXN1bHQgPSBCU3RyaW5nKHZhbHVlU3RyaW5nKS5yZWxlYXNlKCk7CkBAIC0xNTU2LDcgKzE1
NTYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6
OnZhbHVlKAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MVGV4dEFyZWFFbGVtZW50
OjpzZXRWYWx1ZSggCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSkKIHsKLSAgICBBU1NF
UlQobV9lbGVtZW50ICYmIGlzSFRNTFRleHRBcmVhRWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBB
U1NFUlQobV9lbGVtZW50ICYmIGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG1fZWxlbWVudCkpOwog
ICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQmIHRleHRhcmVhRWxlbWVudCA9IGRvd25jYXN0PEhUTUxU
ZXh0QXJlYUVsZW1lbnQ+KCptX2VsZW1lbnQpOwogICAgIHRleHRhcmVhRWxlbWVudC5zZXRWYWx1
ZShTdHJpbmcoKFVDaGFyKikgdmFsdWUsIFN5c1N0cmluZ0xlbih2YWx1ZSkpKTsKICAgICByZXR1
cm4gU19PSzsKQEAgLTE1NjQsNyArMTU2NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWUoCiAgICAgCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNlbGVjdCggdm9pZCkKIHsKLSAgICBB
U1NFUlQobV9lbGVtZW50ICYmIGlzSFRNTFRleHRBcmVhRWxlbWVudChtX2VsZW1lbnQpKTsKKyAg
ICBBU1NFUlQobV9lbGVtZW50ICYmIGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG1fZWxlbWVudCkp
OwogICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQmIHRleHRhcmVhRWxlbWVudCA9IGRvd25jYXN0PEhU
TUxUZXh0QXJlYUVsZW1lbnQ+KCptX2VsZW1lbnQpOwogICAgIHRleHRhcmVhRWxlbWVudC5zZWxl
Y3QoKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTE1NzksNyArMTU3OSw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6aXNVc2VyRWRpdGVkKAogICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgKnJlc3VsdCA9IEZBTFNFOwotICAgIEFTU0VS
VChtX2VsZW1lbnQgJiYgaXNIVE1MVGV4dEFyZWFFbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFT
U0VSVChtX2VsZW1lbnQgJiYgaXM8SFRNTFRleHRBcmVhRWxlbWVudD4obV9lbGVtZW50KSk7CiAg
ICAgaWYgKGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCptX2VsZW1lbnQpLmxhc3RDaGFu
Z2VXYXNVc2VyRWRpdCgpKQogICAgICAgICAqcmVzdWx0ID0gVFJVRTsKICAgICByZXR1cm4gU19P
SzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCA4YzZjNDVjMzI5Yzk4MmUzYTM1M2QxNTBlZTYx
OGQ1YTBjZDhjOWIyLi5kNTBiYWZkM2RhOTcwOTcyNzRmNmNhNjUxODgyNzc2OTM5MjI0ZDFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0RWxlbWVudEZyb21ET01FbGVtZW50KElET01FbGVtZW50KiBlbGVtZW50
KQogICAgICAgICBFbGVtZW50KiBlbGU7CiAgICAgICAgIGhyID0gZWxlUHJpdi0+Y29yZUVsZW1l
bnQoKHZvaWQqKikmZWxlKTsKICAgICAgICAgZWxlUHJpdi0+UmVsZWFzZSgpOwotICAgICAgICBp
ZiAoU1VDQ0VFREVEKGhyKSAmJiBlbGUgJiYgaXNIVE1MSW5wdXRFbGVtZW50KGVsZSkpCisgICAg
ICAgIGlmIChTVUNDRUVERUQoaHIpICYmIGVsZSAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihlbGUp
KQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZSk7CiAg
ICAgfQogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggYzYxMmMyYzBiYTNiMmYwMDNiZmFkZjhkMjVlZTVkZTc2
MDRmMzI0Zi4uY2VkOTBhYzZlMWFlNGUxYWFlOWU4ZDYxZGM4ZDJjNzYwMGU5NmY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xOTksNyAr
MTk5LDcgQEAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OnZpc2libGVSYW5nZSgpIGMKIAogdm9pZCBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU6OnNldEhUTUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVzZXIoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudCgqbV9ub2RlKSkKKyAgICBpZiAo
IWlzPEhUTUxJbnB1dEVsZW1lbnQ+KCptX25vZGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBk
b3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9ub2RlKS5zZXRWYWx1ZUZvclVzZXIodmFsdWUp
OwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpzZXRI
VE1MSW5wdXRFbGVtZW50VmFsdWVGb3JVc2VyKGNvbnN0IFN0cmluZyYgdmFsCiAKIGJvb2wgSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjppc0hUTUxJbnB1dEVsZW1lbnRBdXRvZmlsbGVkKCkgY29u
c3QKIHsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudCgqbV9ub2RlKSkKKyAgICBpZiAoIWlz
PEhUTUxJbnB1dEVsZW1lbnQ+KCptX25vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX25vZGUpLmlzQXV0b2Zp
bGxlZCgpOwpAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
Ojppc0hUTUxJbnB1dEVsZW1lbnRBdXRvZmlsbGVkKCkgY29uc3QKIAogdm9pZCBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OnNldEhUTUxJbnB1dEVsZW1lbnRBdXRvZmlsbGVkKGJvb2wgZmlsbGVk
KQogewotICAgIGlmICghaXNIVE1MSW5wdXRFbGVtZW50KCptX25vZGUpKQorICAgIGlmICghaXM8
SFRNTElucHV0RWxlbWVudD4oKm1fbm9kZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX25vZGUpLnNldEF1dG9maWxsZWQoZmlsbGVkKTsKQEAg
LTIyMyw3ICsyMjMsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0SFRNTElu
cHV0RWxlbWVudEF1dG9maWxsZWQoYm9vbCBmaWxsZWQpCiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjpodG1sSW5wdXRFbGVtZW50TGFzdENoYW5nZVdhc1VzZXJFZGl0KCkKIHsKLSAg
ICBpZiAoIWlzSFRNTElucHV0RWxlbWVudCgqbV9ub2RlKSkKKyAgICBpZiAoIWlzPEhUTUxJbnB1
dEVsZW1lbnQ+KCptX25vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fbm9kZSkubGFzdENoYW5nZVdhc1VzZXJFZGl0
KCk7CkBAIC0yMzEsNyArMjMxLDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0
bWxJbnB1dEVsZW1lbnRMYXN0Q2hhbmdlV2FzVXNlckVkaXQoKQogCiBib29sIEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZTo6aHRtbFRleHRBcmVhRWxlbWVudExhc3RDaGFuZ2VXYXNVc2VyRWRpdCgp
CiB7Ci0gICAgaWYgKCFpc0hUTUxUZXh0QXJlYUVsZW1lbnQoKm1fbm9kZSkpCisgICAgaWYgKCFp
czxIVE1MVGV4dEFyZWFFbGVtZW50PigqbV9ub2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCptX25vZGUpLmxhc3RD
aGFuZ2VXYXNVc2VyRWRpdCgpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlOjpodG1sVGV4dEFyZWFFbGVtZW50TGFzdENoYW5nZVdhc1VzZXJFZGl0KCkK
IAogYm9vbCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzVGV4dEZpZWxkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaXNIVE1MSW5wdXRFbGVtZW50KCptX25vZGUpICYmIGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KCptX25vZGUpLmlzVGV4dCgpOworICAgIHJldHVybiBpczxIVE1MSW5wdXRF
bGVtZW50PigqbV9ub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9ub2RlKS5p
c1RleHQoKTsKIH0KIAogUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGI1MTc2M2VhNTBkNzE0NDQ0YzczNmU4ZjEwZTM0YTI2
MzhlZmRkMjkuLmMyZDUxMTA3OTVlYTIwZmQ2Mjg0MDgzODE0NGJiYzllNTVlZTI1ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6Zm9jdXNlZEVsZW1lbnRDaGFuZ2VkKEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYg
KCFlbGVtZW50KQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQo
ZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IDEyMTQxN2U5ZGE2MGE4NWIzMzcwOWVlYzkwNGM2MWFjYWY2MGVlOWQuLjRiNTI5YTk3ZTgw
OGFlYjQzYTIzZWVmNjVjZWVhZTFiMDRmNDdlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
QEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRo
b2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dEZp
ZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFpc0hUTUxJ
bnB1dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVt
ZW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJh
bWU6OmZyb21Db3JlRnJhbWUoKmVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSk7CkBAIC0zMDYs
NyArMzA2LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRleHRGaWVsZERpZEJlZ2luRWRpdGlu
ZyhFbGVtZW50KiBlbGVtZW50KQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dEZpZWxkRGlk
RW5kRWRpdGluZyhFbGVtZW50KiBlbGVtZW50KQogewotICAgIGlmICghaXNIVE1MSW5wdXRFbGVt
ZW50KGVsZW1lbnQpKQorICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9t
Q29yZUZyYW1lKCplbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpOwpAQCAtMzE3LDcgKzMxNyw3
IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RmllbGREaWRFbmRFZGl0aW5nKEVsZW1lbnQq
IGVsZW1lbnQpCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0Rmll
bGQoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChlbGVt
ZW50KSkKKyAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBib29sIGluaXRpYXRlZEJ5VXNlclR5cGluZyA9IFVzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlclR5cGluZ0dlc3R1cmUoKSAmJiBVc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvcjo6Zm9jdXNlZEVsZW1lbnRBdEdlc3R1cmVTdGFydCgpID09IGVsZW1l
bnQ7CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRleHREaWRDaGFu
Z2VJblRleHRGaWVsZChFbGVtZW50KiBlbGVtZW50KQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6
dGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBpZiAoIWlz
SFRNTFRleHRBcmVhRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoIWlzPEhUTUxUZXh0QXJlYUVs
ZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJGcmFtZSogd2ViRnJh
bWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgp
KTsKQEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0aWMgQVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNs
aWVudDo6SW5wdXRGaWVsZEFjdGlvbiB0b0lucHV0RmllbGRBY3Rpb24oV0tJbgogCiBib29sIFdl
YkVkaXRvckNsaWVudDo6ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KEVsZW1lbnQqIGVsZW1l
bnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewotICAgIGlmICghaXNIVE1MSW5wdXRFbGVtZW50
KGVsZW1lbnQpKQorICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIFdLSW5wdXRGaWVsZEFjdGlvblR5cGUgYWN0aW9uVHlw
ZSA9IHN0YXRpY19jYXN0PFdLSW5wdXRGaWVsZEFjdGlvblR5cGU+KDApOwpAQCAtNDA4LDcgKzQw
OCw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojpkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQo
RWxlbWVudCogZWxlbWVudCwgS2V5Ym9hcmRFdmVuCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0
ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYg
KCFpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVt
ZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1l
ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRl
eCAyMDU5OWQ3OTNkM2U2ZjJjMTcwZmJkY2Q0ZTNlZGI5MmRkNjNjMzY5Li4zNzJkZTQzZTJhZjRh
NzA4NWQ0ODJiYzI4MjJhY2Y0ZmM4ZGU5NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTYzMyw3ICs2MzMsNyBAQCBib29sIFdlYkZy
YW1lOjpjb250YWluc0FueUZvcm1Db250cm9scygpIGNvbnN0CiAgICAgZm9yIChOb2RlKiBub2Rl
ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNh
bDo6bmV4dChub2RlKSkgewogICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KG5vZGUp
IHx8IGlzSFRNTFNlbGVjdEVsZW1lbnQobm9kZSkgfHwgaXNIVE1MVGV4dEFyZWFFbGVtZW50KG5v
ZGUpKQorICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgfHwgaXM8SFRNTFNl
bGVjdEVsZW1lbnQ+KG5vZGUpIHx8IGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG5vZGUpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCBlNzZiMzIwNGI3NGRmNDI0Nzg0MDdhOTg5NTE0MTE0NWE5YzcyODUzLi5iMjMzN2ZiZmZiZGQ3
MDBhNmQ5MDBhOTIzMDQ4MjNiZWM3N2ZkYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC02MTIsNyArNjEyLDcgQEAg
dm9pZCBXZWJQYWdlOjpzZXRBc3Npc3RlZE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewogICAgIGlmICghbV9hc3Npc3RlZE5vZGUpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoaXNI
VE1MSW5wdXRFbGVtZW50KCptX2Fzc2lzdGVkTm9kZSkpIHsKKyAgICBpZiAoaXM8SFRNTElucHV0
RWxlbWVudD4oKm1fYXNzaXN0ZWROb2RlKSkgewogICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBl
bGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fYXNzaXN0ZWROb2RlKTsKICAg
ICAgICAgZWxlbWVudC5zZXRWYWx1ZSh2YWx1ZSwgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50
KTsKICAgICB9CkBAIC02MjMsNyArNjIzLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRBc3Npc3RlZE5v
ZGVWYWx1ZUFzTnVtYmVyKGRvdWJsZSB2YWx1ZSkKIHsKICAgICBpZiAoIW1fYXNzaXN0ZWROb2Rl
KQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKGlzSFRNTElucHV0RWxlbWVudCgqbV9hc3Npc3Rl
ZE5vZGUpKSB7CisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCptX2Fzc2lzdGVkTm9kZSkp
IHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KCptX2Fzc2lzdGVkTm9kZSk7CiAgICAgICAgIGVsZW1lbnQuc2V0VmFsdWVBc051
bWJlcih2YWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTiwgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2
ZW50KTsKICAgICB9CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRBc3Npc3Rl
ZE5vZGVWYWx1ZUFzTnVtYmVyKGRvdWJsZSB2YWx1ZSkKIAogdm9pZCBXZWJQYWdlOjpzZXRBc3Np
c3RlZE5vZGVTZWxlY3RlZEluZGV4KHVpbnQzMl90IGluZGV4LCBib29sIGFsbG93TXVsdGlwbGVT
ZWxlY3Rpb24pCiB7Ci0gICAgaWYgKCFtX2Fzc2lzdGVkTm9kZSB8fCAhaXNIVE1MU2VsZWN0RWxl
bWVudCgqbV9hc3Npc3RlZE5vZGUpCisgICAgaWYgKCFtX2Fzc2lzdGVkTm9kZSB8fCAhaXM8SFRN
TFNlbGVjdEVsZW1lbnQ+KCptX2Fzc2lzdGVkTm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIEhU
TUxTZWxlY3RFbGVtZW50JiBzZWxlY3QgPSBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm1f
YXNzaXN0ZWROb2RlKTsKICAgICBzZWxlY3Qub3B0aW9uU2VsZWN0ZWRCeVVzZXIoaW5kZXgsIHRy
dWUsIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pOwpAQCAtMTk5MCwxMSArMTk5MCwxMSBAQCB2b2lk
IFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNBc3Npc3RhYmxlTm9kZShOb2RlKiBub2RlKQogewotICAgIGlmIChp
c0hUTUxTZWxlY3RFbGVtZW50KG5vZGUpKQorICAgIGlmIChpczxIVE1MU2VsZWN0RWxlbWVudD4o
bm9kZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChpc0hUTUxUZXh0QXJlYUVsZW1l
bnQobm9kZSkpCisgICAgaWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG5vZGUpKQogICAgICAg
ICByZXR1cm4gIWRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCpub2RlKS5pc1JlYWRPbmx5
Tm9kZSgpOwotICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQobm9kZSkpIHsKKyAgICBpZiAoaXM8
SFRNTElucHV0RWxlbWVudD4obm9kZSkpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgZWxl
bWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAgcmV0dXJu
ICFlbGVtZW50LmlzUmVhZE9ubHlOb2RlKCkgJiYgKGVsZW1lbnQuaXNUZXh0RmllbGQoKSB8fCBl
bGVtZW50LmlzRGF0ZUZpZWxkKCkgfHwgZWxlbWVudC5pc0RhdGVUaW1lTG9jYWxGaWVsZCgpIHx8
IGVsZW1lbnQuaXNNb250aEZpZWxkKCkgfHwgZWxlbWVudC5pc1RpbWVGaWVsZCgpKTsKICAgICB9
CkBAIC0yMDY2LDcgKzIwNjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUluZm9y
bWF0aW9uKEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbikKICAgICBpbmZvcm1h
dGlvbi5oYXNOZXh0Tm9kZSA9IGhhc0ZvY3VzYWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0
KCksIG1fcGFnZS5nZXQoKSwgdHJ1ZSk7CiAgICAgaW5mb3JtYXRpb24uaGFzUHJldmlvdXNOb2Rl
ID0gaGFzRm9jdXNhYmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5nZXQoKSwgbV9wYWdlLmdldCgp
LCBmYWxzZSk7CiAKLSAgICBpZiAoaXNIVE1MU2VsZWN0RWxlbWVudCgqbV9hc3Npc3RlZE5vZGUp
IHsKKyAgICBpZiAoaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KCptX2Fzc2lzdGVkTm9kZSkgewogICAg
ICAgICBIVE1MU2VsZWN0RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVt
ZW50PigqbV9hc3Npc3RlZE5vZGUpOwogICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9
IElucHV0VHlwZTo6U2VsZWN0OwogICAgICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYg
aXRlbXMgPSBlbGVtZW50Lmxpc3RJdGVtcygpOwpAQCAtMjA3Nyw3ICsyMDc3LDcgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJbmZvcm1hdGlv
biYgaW5mb3JtYXRpb24pCiAgICAgICAgIC8vIElmIGEgc2VsZWN0IGRvZXMgbm90IGhhdmUgZ3Jv
dXBzLCBhbGwgdGhlIG9wdGlvbiBlbGVtZW50cyBoYXZlIGdyb3VwIElEIDAuCiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICAgICAgSFRNTEVsZW1l
bnQqIGl0ZW0gPSBpdGVtc1tpXTsKLSAgICAgICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50
KGl0ZW0pKSB7CisgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW0pKSB7
CiAgICAgICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0PEhU
TUxPcHRpb25FbGVtZW50PigqaXRlbSk7CiAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uc2Vs
ZWN0T3B0aW9ucy5hcHBlbmQoT3B0aW9uSXRlbShvcHRpb24udGV4dCgpLCBmYWxzZSwgcGFyZW50
R3JvdXBJRCwgb3B0aW9uLnNlbGVjdGVkKCksIG9wdGlvbi5mYXN0SGFzQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6ZGlzYWJsZWRBdHRyKSkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChp
c0hUTUxPcHRHcm91cEVsZW1lbnQoaXRlbSkpIHsKQEAgLTIwODgsMTQgKzIwODgsMTQgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJbmZvcm1h
dGlvbiYgaW5mb3JtYXRpb24pCiAgICAgICAgIH0KICAgICAgICAgaW5mb3JtYXRpb24uc2VsZWN0
ZWRJbmRleCA9IGVsZW1lbnQuc2VsZWN0ZWRJbmRleCgpOwogICAgICAgICBpbmZvcm1hdGlvbi5p
c011bHRpU2VsZWN0ID0gZWxlbWVudC5tdWx0aXBsZSgpOwotICAgIH0gZWxzZSBpZiAoaXNIVE1M
VGV4dEFyZWFFbGVtZW50KCptX2Fzc2lzdGVkTm9kZSkpIHsKKyAgICB9IGVsc2UgaWYgKGlzPEhU
TUxUZXh0QXJlYUVsZW1lbnQ+KCptX2Fzc2lzdGVkTm9kZSkpIHsKICAgICAgICAgSFRNTFRleHRB
cmVhRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCptX2Fz
c2lzdGVkTm9kZSk7CiAgICAgICAgIGluZm9ybWF0aW9uLmF1dG9jYXBpdGFsaXplVHlwZSA9IHN0
YXRpY19jYXN0PFdlYkF1dG9jYXBpdGFsaXplVHlwZT4oZWxlbWVudC5hdXRvY2FwaXRhbGl6ZVR5
cGUoKSk7CiAgICAgICAgIGluZm9ybWF0aW9uLmlzQXV0b2NvcnJlY3QgPSBlbGVtZW50LmF1dG9j
b3JyZWN0KCk7CiAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBlOjpU
ZXh0QXJlYTsKICAgICAgICAgaW5mb3JtYXRpb24uaXNSZWFkT25seSA9IGVsZW1lbnQuaXNSZWFk
T25seSgpOwogICAgICAgICBpbmZvcm1hdGlvbi52YWx1ZSA9IGVsZW1lbnQudmFsdWUoKTsKLSAg
ICB9IGVsc2UgaWYgKGlzSFRNTElucHV0RWxlbWVudCgqbV9hc3Npc3RlZE5vZGUpKSB7CisgICAg
fSBlbHNlIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqbV9hc3Npc3RlZE5vZGUpKSB7CiAgICAg
ICAgIEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
PigqbV9hc3Npc3RlZE5vZGUpOwogICAgICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBlbGVt
ZW50LmZvcm0oKTsKICAgICAgICAgaWYgKGZvcm0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238608</attachid>
            <date>2014-09-24 13:40:06 -0700</date>
            <delta_ts>2014-09-24 14:25:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137068-20140924134005.patch</filename>
            <type>text/plain</type>
            <size>130369</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWExM2IxOTI2ZWY0OTk4
YmY2N2FlMGI0N2EzMzcxMTNlZmRhZDgzMy4uNDBkOWZiY2YyMjY0OWQzMGUzZWVlNjhlMzU3Zjll
OTU4NTk2NzViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwNCBAQAogMjAxNC0wOS0yNCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIGlzPEhUTUwq
RWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkgLSBQYXJ0IDEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzA2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBTdGFydCB1c2luZyBpczxIVE1M
KkVsZW1lbnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpLgorICAgICAgICBSZW1haW5p
bmcgdXNhZ2VzIHdpbGwgYmUgdXBkYXRlZCBpbiBhIGZvbGxvdy11cCBwYXRjaCB0bworICAgICAg
ICByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGNoYW5nZS4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb246OmlzU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb246OmNhblNldFNlbGVjdGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpzdHJpbmdWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6bGlzdEJveE9wdGlvblBhcmVudE5v
ZGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lZGlhVGltZWxpbmU6OnZhbHVl
RGVzY3JpcHRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9w
dGlvbjo6c2V0RWxlbWVudCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3RQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cDo6bWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRpdmVUZXh0
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNO
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
aXNJbnB1dEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojppc1JlYWRPbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojp2YWx1ZUZvclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0OjptYXhWYWx1ZUZvclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjptaW5WYWx1ZUZvclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9kZUFj
dGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OnRpdGxlRWxlbWVudFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OnZpc2libGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojp0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6Y29sb3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjphY2Nlc3NpYmxlTmFtZUZvck5vZGUp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0ZpbGVVcGxv
YWRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWRkUmFkaW9CdXR0b25Hcm91cE1lbWJlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkVGV4dEZp
ZWxkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVB
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2Up
OgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmg6CisgICAgICAg
IChXZWJDb3JlOjppc0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjppc0NoZWNrZWQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxl
KToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2VsZWN0
QWxsKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpzaG91bGRQZXJmb3JtU21h
cnRSZXBsYWNlKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6aXNJblBhc3N3b3JkRmllbGQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252
ZXJ0ZXI6Ol9wcm9jZXNzRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9ndGsvRWRpdG9yR3Rr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnRVUkwpOgorICAgICAgICAqIGVkaXRpbmcv
aW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0VGV4dEFsaWdu
bWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6aXNQbGFpblRleHRNYXJrdXApOgorICAgICAg
ICAoV2ViQ29yZTo6Y29sbGVjdEVsZW1lbnRzVG9SZW1vdmVGcm9tRnJhZ21lbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNNYXRjaGlu
Z0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQXV0b2ZvY3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmdldFRleHRGaWVsZFZhbHVlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXgpOgorICAgICAg
ICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFn
ZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdl
TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVu
dE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRO
YW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyk6Cisg
ICAgICAgICogaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPcHRHcm91cEVsZW1lbnQ6OnJlY2FsY1NlbGVjdE9wdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudDo6b3duZXJTZWxlY3RFbGVtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25FbGVtZW50OjppbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6
b3duZXJTZWxlY3RFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjphZGQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxl
Y3RFbGVtZW50OjpuZXh0VmFsaWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6c2F2ZUxhc3RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94T25DaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0T3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25Ub0xpc3RJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudDo6bGlzdFRvT3B0aW9uSW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2F2ZUZvcm1Db250cm9sU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlYXJjaE9wdGlvbnNGb3JW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVzdG9yZUZvcm1D
b250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFwcGVu
ZEZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRF
dmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxhc3RT
ZWxlY3RlZExpc3RJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
b3B0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YWNj
ZXNzS2V5U2V0U2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6bGVuZ3RoKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWdOYW1lcy5pbjoKKyAgICAgICAg
KiBodG1sL1JhZGlvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvSW5wdXRU
eXBlOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9JbnB1dFR5
cGU6OmlzS2V5Ym9hcmRGb2N1c2FibGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25z
dHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc0ltcGxpZWRFbmRUYWcpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE5hbWVzOjppc1NlbGVjdFNjb3BlTWFya2VyKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRW5kVGFnKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50VHlwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFDb250cm9sRWxlbWVu
dFR5cGUpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmhhbmRsZUZhbGxiYWNr
Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQpOgorICAg
ICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJm
cmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdCk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZTo6c2V0VG9vbFRpcCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNTdWJtaXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgICogcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJTZWxlY3Rpb25JZk5lZWRlZCk6
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3QpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZnJhbWVPd25lclVSTEF0dHJpYnV0ZU5hbWUpOgor
ICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FuU2Nyb2xsSW5EaXJlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmFsdERpc3BsYXlTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojppc0NvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNpemVU
ZXh0UGVybWl0dGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2l6ZXNMb2dpY2FsV2lkdGhUb0ZpdENvbnRlbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQnV0dG9uOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCdXR0b246OmNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckRldGFpbHNNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGV0YWls
c01hcmtlcjo6aXNPcGVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnVw
bG9hZEJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjp1cGRhdGVBbHRUZXh0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94Ojph
ZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWlu
dEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50
SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3RlZE9wdGlvbkNvdW50KToKKyAgICAgICAgKFJlbmRl
ck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6
OnNldFRleHRGcm9tT3B0aW9uKToKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjppdGVtVGV4dCk6
CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChSZW5k
ZXJNZW51TGlzdDo6aXRlbUlzU2VsZWN0ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaWNr
cyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6d2FzTGFzdENoYW5nZVVzZXJFZGl0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6aXNTZWxlY3RQb3B1cFZpc2libGUpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50
UGFyc2VyOjpzdGFydEVsZW1lbnROcyk6CisKKzIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFVzZSBpczxTVkcqRWxlbWVudD4oKSBpbnN0
ZWFkIG9mIGlzU1ZHKkVsZW1lbnQoKQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3MDU4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCA2ZTRhYjNiZmZiZjNh
MjE5OGM1NTM1M2NhYThkZGE2OWIyMzllZTE0Li5hZWQzMThlOTA1Y2ZmZjYyMmNhMDJjZmU0Mzdm
MjUwMTI3ODZiYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDkt
MjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBp
czxIVE1MKkVsZW1lbnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIC0gUGFydCAxCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcwNjgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgU3RhcnQgdXNpbmcg
aXM8SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNIVE1MKkVsZW1lbnQoKS4KKyAgICAgICAg
UmVtYWluaW5nIHVzYWdlcyB3aWxsIGJlIHVwZGF0ZWQgaW4gYSBmb2xsb3ctdXAgcGF0Y2ggdG8K
KyAgICAgICAgcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBjaGFuZ2UuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW06CisgICAgICAgIChXZWJDaHJvbWVDbGll
bnRJT1M6OmZvY3VzZWRFbGVtZW50Q2hhbmdlZCk6CisKIDIwMTQtMDktMjMgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgZG93bmNhc3Q8SFRNTCpFbGVtZW50
PigpIGluc3RlYWQgb2YgdG9IVE1MKkVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGE3N2Uz
ZjE2ZTNhYmMxZjQzYWRlMTBlN2Y1YzdkZmM1YmYxNmVkMDMuLmM2YTc4NDI5NzVmODM4ZTRhY2Vj
YmFmYjIyYmIzNTIwNjA2MmY5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAxNC0wOS0yNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIGlzPEhUTUwqRWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkgLSBQ
YXJ0IDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NzA2OAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBTdGFy
dCB1c2luZyBpczxIVE1MKkVsZW1lbnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpLgor
ICAgICAgICBSZW1haW5pbmcgdXNhZ2VzIHdpbGwgYmUgdXBkYXRlZCBpbiBhIGZvbGxvdy11cCBw
YXRjaCB0bworICAgICAgICByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGNoYW5nZS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9t
ZUNsaWVudDo6Zm9jdXNlZEVsZW1lbnRDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnRleHRGaWVs
ZERpZEJlZ2luRWRpdGluZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnRleHRGaWVsZERp
ZEVuZEVkaXRpbmcpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5U
ZXh0RmllbGQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojpkb1RleHRGaWVsZENvbW1hbmRG
cm9tRXZlbnQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0V2lsbEJlRGVsZXRlZElu
VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4
dEFyZWEpOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAg
ICAgICAoaW5wdXRFbGVtZW50RnJvbURPTUVsZW1lbnQpOgorCiAyMDE0LTA5LTIzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGRvd25jYXN0PEhUTUwqRWxl
bWVudD4oKSBpbnN0ZWFkIG9mIHRvSFRNTCpFbGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAw
ODYxMDQ5NzM1OTBiMDkzZjY0ZDJlY2FlZWRjNDA2ZGYyZTFlNTlhLi5jZTgyMjczOTQ2M2NkZDBj
NmVhMjk4MWVlZmJjNmM3ZGRkZTJkZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgp
IC0gUGFydCAxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzcwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAg
U3RhcnQgdXNpbmcgaXM8SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNIVE1MKkVsZW1lbnQo
KS4KKyAgICAgICAgUmVtYWluaW5nIHVzYWdlcyB3aWxsIGJlIHVwZGF0ZWQgaW4gYSBmb2xsb3ct
dXAgcGF0Y2ggdG8KKyAgICAgICAgcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBjaGFuZ2UuCisKKyAg
ICAgICAgKiBET01Db3JlQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01FbGVtZW50OjpjcmVhdGVJ
bnN0YW5jZSk6CisgICAgICAgICogRE9NSFRNTENsYXNzZXMuY3BwOgorICAgICAgICAoRE9NSFRN
TE9wdGlvbkVsZW1lbnQ6OnRleHQpOgorICAgICAgICAoRE9NSFRNTE9wdGlvbkVsZW1lbnQ6Omxh
YmVsKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OmZvcm0pOgorICAgICAgICAoRE9N
SFRNTElucHV0RWxlbWVudDo6ZGlzYWJsZWQpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVu
dDo6cmVhZE9ubHkpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0VHlwZSk6Cisg
ICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSk6CisgICAgICAgIChET01IVE1MSW5w
dXRFbGVtZW50OjpzZXRWYWx1ZSk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpzZXRW
YWx1ZUZvclVzZXIpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2VsZWN0KToKKyAg
ICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAg
KERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKERPTUhUTUxJ
bnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZCk6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVt
ZW50OjpzZWxlY3Rpb25FbmQpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6aXNUZXh0
RmllbGQpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6cmVjdE9uU2NyZWVuKToKKyAg
ICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZSk6Cisg
ICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpzZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKERP
TUhUTUxJbnB1dEVsZW1lbnQ6OnNldEF1dG9maWxsZWQpOgorICAgICAgICAoRE9NSFRNTElucHV0
RWxlbWVudDo6aXNBdXRvZmlsbGVkKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6Omlz
VXNlckVkaXRlZCk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50Ojpmb3JtKToKKyAg
ICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlKToKKyAgICAgICAgKERPTUhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKERPTUhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnNlbGVjdCk6CisgICAgICAgIChET01IVE1MVGV4dEFyZWFFbGVtZW50Ojppc1VzZXJFZGl0
ZWQpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKGlucHV0RWxlbWVudEZyb21E
T01FbGVtZW50KToKKwogMjAxNC0wOS0yMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE3Mzg5My4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA1NjI0Y2YxZmJkMzFiZDg4ZjhkZTJkMzJiYjc1NTNmNTVjYmM0ODE3Li5kNmVj
YjdmYWU2MjFmNGE0NjE3M2E3NjY2ZTlmZWE5OGU2OWI5YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzcgQEAKKzIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxl
bWVudCgpIC0gUGFydCAxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzcwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgU3RhcnQgdXNpbmcgaXM8SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNIVE1MKkVs
ZW1lbnQoKS4KKyAgICAgICAgUmVtYWluaW5nIHVzYWdlcyB3aWxsIGJlIHVwZGF0ZWQgaW4gYSBm
b2xsb3ctdXAgcGF0Y2ggdG8KKyAgICAgICAgcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBjaGFuZ2Uu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU6OnNldEhUTUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVzZXIpOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzSFRNTElucHV0RWxlbWVudEF1dG9maWxsZWQpOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnNldEhUTUxJbnB1dEVs
ZW1lbnRBdXRvZmlsbGVkKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlOjpodG1sSW5wdXRFbGVtZW50TGFzdENoYW5nZVdhc1VzZXJFZGl0KToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sVGV4dEFyZWFFbGVtZW50TGFzdENo
YW5nZVdhc1VzZXJFZGl0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlOjppc1RleHRGaWVsZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmZv
Y3VzZWRFbGVtZW50Q2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6
OnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNs
aWVudDo6dGV4dEZpZWxkRGlkRW5kRWRpdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRv
ckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4dEZpZWxkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RWRpdG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkVkaXRvckNsaWVudDo6ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50Ojp0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZTo6Y29udGFpbnNBbnlGb3JtQ29udHJvbHMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0QXNzaXN0ZWROb2RlVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRB
c3Npc3RlZE5vZGVWYWx1ZUFzTnVtYmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCk6CisKIDIwMTQtMDktMjQgIERhbmllbCBCYXRlcyAg
PGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEZpeCB0aGUgaU9TIGJ1aWxkIGFm
dGVyIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNzM4OTM+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uY3BwCmluZGV4IGQ4NjVjODk1ZTNlZTY1YzY2MWRlYmMxYjUwYzRhZjFmMTg3OWIzMzgu
LmMzMjcwMDgwNjAzY2YwYzcyYzliNmNiY2Y0Zjg1NzllYzcyZjJjYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRp
b246OmlzU2VsZWN0ZWQoKSBjb25zdAogICAgIGlmICghbV9vcHRpb25FbGVtZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWlzSFRNTE9wdGlvbkVsZW1lbnQobV9vcHRpb25F
bGVtZW50KSkKKyAgICBpZiAoIWlzPEhUTUxPcHRpb25FbGVtZW50PihtX29wdGlvbkVsZW1lbnQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQ+KCptX29wdGlvbkVsZW1lbnQpLnNlbGVjdGVkKCk7CkBAIC0xMzQsNyArMTM0LDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6Y2FuU2V0U2VsZWN0ZWRBdHRyaWJ1
dGUoKSBjb25zdAogICAgIGlmICghbV9vcHRpb25FbGVtZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgaWYgKCFpc0hUTUxPcHRpb25FbGVtZW50KG1fb3B0aW9uRWxlbWVudCkp
CisgICAgaWYgKCFpczxIVE1MT3B0aW9uRWxlbWVudD4obV9vcHRpb25FbGVtZW50KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChtX29wdGlvbkVsZW1lbnQtPmlzRGlzYWJs
ZWRGb3JtQ29udHJvbCgpKQpAQCAtMTU2LDcgKzE1Niw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5
TGlzdEJveE9wdGlvbjo6c3RyaW5nVmFsdWUoKSBjb25zdAogICAgIGlmICghYXJpYUxhYmVsLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gYXJpYUxhYmVsOwogICAgIAotICAgIGlmIChpc0hUTUxP
cHRpb25FbGVtZW50KG1fb3B0aW9uRWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVt
ZW50PihtX29wdGlvbkVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQ+KCptX29wdGlvbkVsZW1lbnQpLnRleHQoKTsKICAgICAKICAgICBpZiAoaXNIVE1M
T3B0R3JvdXBFbGVtZW50KG1fb3B0aW9uRWxlbWVudCkpCkBAIC0yMDIsNyArMjAyLDcgQEAgSFRN
TFNlbGVjdEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpsaXN0Qm94T3B0aW9u
UGFyZW50Tm9kZSgpIGNvbnN0CiAgICAgaWYgKCFtX29wdGlvbkVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQobV9vcHRpb25FbGVt
ZW50KSkKKyAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fb3B0aW9uRWxlbWVudCkpCiAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm1fb3B0aW9uRWxlbWVu
dCkub3duZXJTZWxlY3RFbGVtZW50KCk7CiAKICAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50
KG1fb3B0aW9uRWxlbWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCmluZGV4IGRlYjA5MjBmOGI5
ODM2Y2M5ODZhMjM4Mjk2NWRhNjA2NjJiYTZkODIuLmVlMzVlZmFlYmE2N2QxMDA5ZDRkNjJlMDFm
YmIwNTE4Y2NjYWMzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCkBAIC0yNzQsNyArMjc0LDcg
QEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1l
bGluZTo6Y3JlYXRlKFJlbmRlck9iamVjdCoKIFN0cmluZyBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1l
bGluZTo6dmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IG1fcmVu
ZGVyZXItPm5vZGUoKTsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChub2RlKSkKKyAgICBp
ZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKICAgICBmbG9hdCB0aW1lID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpLnZh
bHVlKCkudG9GbG9hdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCmluZGV4IGM2OTIxMWFiOWMz
NTRmZjcwNzI0OWFiYmRiZTI4YzYwMDFmYWRkODIuLmY2MjlkY2RhZTIzMzM0NzBmYWFmYjE4MDcw
YTk4MzhiM2MzMDBjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjpBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b24oKQogCiB2b2lkIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6c2V0RWxlbWVudChIVE1M
RWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBBU1NFUlRfQVJHKGVsZW1lbnQsIGlzSFRNTE9wdGlv
bkVsZW1lbnQoZWxlbWVudCkpOworICAgIEFTU0VSVF9BUkcoZWxlbWVudCwgaXM8SFRNTE9wdGlv
bkVsZW1lbnQ+KGVsZW1lbnQpKTsKICAgICBtX2VsZW1lbnQgPSBlbGVtZW50OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXAuY3BwCmluZGV4IGZjMjU4NWQxZWZjMTNiNGRjZTQyYTNkYjA2MGVjZDVjNjFk
YjYxZGEuLjM1MGRhMGRhNWZmOWQ1MWVkMGRiZGU1YzVhMTVlMDgyNTliMDZjZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9w
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXAuY3BwCkBAIC03MCw3ICs3MCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVM
aXN0UG9wdXA6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIAogQWNjZXNz
aWJpbGl0eU1lbnVMaXN0T3B0aW9uKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6bWVudUxp
c3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50KiBlbGVtZW50KSBjb25zdAog
ewotICAgIGlmICghZWxlbWVudCB8fCAhaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSB8fCAh
ZWxlbWVudC0+aW5SZW5kZXJlZERvY3VtZW50KCkpCisgICAgaWYgKCFlbGVtZW50IHx8ICFpczxI
VE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgfHwgIWVsZW1lbnQtPmluUmVuZGVyZWREb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamVjdCA9IGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoTWVudUxp
c3RPcHRpb25Sb2xlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggNjcwODhmMTRlODMzM2VjZWIyNzg2
YTAzMGQxNDhmMjEyMmJkNmI4MC4uMzRiNTMyZjc3YWM5ODFjZTZjYjk3MjFlYTZkYTI5NDViNjFm
MmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTI5MCw3ICsyOTAsNyBAQCBBY2Nlc3NpYmlsaXR5
Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUo
KQogICAgICAgICByZXR1cm4gU3RhdGljVGV4dFJvbGU7CiAgICAgaWYgKG5vZGUoKS0+aGFzVGFn
TmFtZShidXR0b25UYWcpKQogICAgICAgICByZXR1cm4gYnV0dG9uUm9sZVR5cGUoKTsKLSAgICBp
ZiAoaXNIVE1MSW5wdXRFbGVtZW50KG5vZGUoKSkpIHsKKyAgICBpZiAoaXM8SFRNTElucHV0RWxl
bWVudD4obm9kZSgpKSkgewogICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKCkpOwogICAgICAgICBpZiAoaW5wdXQuaXNDaGVj
a2JveCgpKQogICAgICAgICAgICAgcmV0dXJuIENoZWNrQm94Um9sZTsKQEAgLTMxMyw3ICszMTMs
NyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZGV0ZXJtaW5l
QWNjZXNzaWJpbGl0eVJvbGUoKQogICAgICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0RWxl
bWVudCA9IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqbm9kZSgpKTsKICAgICAgICAgcmV0
dXJuIHNlbGVjdEVsZW1lbnQubXVsdGlwbGUoKSA/IExpc3RCb3hSb2xlIDogUG9wVXBCdXR0b25S
b2xlOwogICAgIH0KLSAgICBpZiAoaXNIVE1MVGV4dEFyZWFFbGVtZW50KG5vZGUoKSkpCisgICAg
aWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG5vZGUoKSkpCiAgICAgICAgIHJldHVybiBUZXh0
QXJlYVJvbGU7CiAgICAgaWYgKGhlYWRpbmdMZXZlbCgpKQogICAgICAgICByZXR1cm4gSGVhZGlu
Z1JvbGU7CkBAIC00NjUsMTAgKzQ2NSwxMCBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojppc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChpc0hUTUxUZXh0QXJlYUVsZW1lbnQobm9kZSkpCisgICAg
aWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQobm9kZSkpIHsKKyAgICBpZiAoaXM8SFRNTElu
cHV0RWxlbWVudD4obm9kZSkpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBk
b3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgIHJldHVybiBpbnB1dC5p
c1RleHQoKSB8fCBpbnB1dC5pc051bWJlckZpZWxkKCk7CiAgICAgfQpAQCAtNTE4LDcgKzUxOCw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTmF0aXZlSW1hZ2UoKSBjb25zdAog
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShl
bWJlZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQobm9kZSkpIHsKKyAgICBpZiAoaXM8
SFRNTElucHV0RWxlbWVudD4obm9kZSkpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5w
dXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgIHJldHVybiBp
bnB1dC5pc0ltYWdlQnV0dG9uKCk7CiAgICAgfQpAQCAtNTUzLDcgKzU1Myw3IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5wdXRJbWFnZSgpIGNvbnN0CiAgICAgaWYgKCFub2Rl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgCi0gICAgaWYgKHJvbGVWYWx1ZSgpID09IEJ1dHRv
blJvbGUgJiYgaXNIVE1MSW5wdXRFbGVtZW50KG5vZGUpKSB7CisgICAgaWYgKHJvbGVWYWx1ZSgp
ID09IEJ1dHRvblJvbGUgJiYgaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkpIHsKICAgICAgICAg
SFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9k
ZSk7CiAgICAgICAgIHJldHVybiBpbnB1dC5pc0ltYWdlQnV0dG9uKCk7CiAgICAgfQpAQCAtNzM4
LDEwICs3MzgsMTAgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNSZWFkT25seSgp
IGNvbnN0CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChp
c0hUTUxUZXh0QXJlYUVsZW1lbnQobm9kZSkpCisgICAgaWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1l
bnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gdG9IVE1MRm9ybUNvbnRyb2xFbGVtZW50KG5vZGUp
LT5pc1JlYWRPbmx5KCk7CiAKLSAgICBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KG5vZGUpKSB7Cisg
ICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVs
ZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOwogICAgICAg
ICBpZiAoaW5wdXQuaXNUZXh0RmllbGQoKSkKICAgICAgICAgICAgIHJldHVybiBpbnB1dC5pc1Jl
YWRPbmx5KCk7CkBAIC04MzcsNyArODM3LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojp2YWx1ZURlc2NyaXB0aW9uKCkgY29uc3QKIAogZmxvYXQgQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OnZhbHVlRm9yUmFuZ2UoKSBjb25zdAogewotICAgIGlmIChub2RlKCkgJiYgaXNIVE1M
SW5wdXRFbGVtZW50KG5vZGUoKSkpIHsKKyAgICBpZiAobm9kZSgpICYmIGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KG5vZGUoKSkpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSgpKTsKICAgICAgICAgaWYgKGlucHV0LmlzUmFu
Z2VDb250cm9sKCkpCiAgICAgICAgICAgICByZXR1cm4gaW5wdXQudmFsdWVBc051bWJlcigpOwpA
QCAtODUxLDcgKzg1MSw3IEBAIGZsb2F0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp2YWx1ZUZv
clJhbmdlKCkgY29uc3QKIAogZmxvYXQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1heFZhbHVl
Rm9yUmFuZ2UoKSBjb25zdAogewotICAgIGlmIChub2RlKCkgJiYgaXNIVE1MSW5wdXRFbGVtZW50
KG5vZGUoKSkpIHsKKyAgICBpZiAobm9kZSgpICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUo
KSkpIHsKICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50Pigqbm9kZSgpKTsKICAgICAgICAgaWYgKGlucHV0LmlzUmFuZ2VDb250cm9sKCkp
CiAgICAgICAgICAgICByZXR1cm4gaW5wdXQubWF4aW11bSgpOwpAQCAtODY1LDcgKzg2NSw3IEBA
IGZsb2F0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjptYXhWYWx1ZUZvclJhbmdlKCkgY29uc3QK
IAogZmxvYXQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1pblZhbHVlRm9yUmFuZ2UoKSBjb25z
dAogewotICAgIGlmIChub2RlKCkgJiYgaXNIVE1MSW5wdXRFbGVtZW50KG5vZGUoKSkpIHsKKyAg
ICBpZiAobm9kZSgpICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUoKSkpIHsKICAgICAgICAg
SFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9k
ZSgpKTsKICAgICAgICAgaWYgKGlucHV0LmlzUmFuZ2VDb250cm9sKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gaW5wdXQubWluaW11bSgpOwpAQCAtOTczLDcgKzk3Myw3IEBAIEVsZW1lbnQqIEFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QKIAogc3RhdGljIGJvb2wg
aXNOb2RlQWN0aW9uRWxlbWVudChOb2RlKiBub2RlKQogewotICAgIGlmIChpc0hUTUxJbnB1dEVs
ZW1lbnQobm9kZSkpIHsKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkpIHsKICAg
ICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
Pigqbm9kZSk7CiAgICAgICAgIGlmICghaW5wdXQuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYg
KGlucHV0LmlzUmFkaW9CdXR0b24oKSB8fCBpbnB1dC5pc0NoZWNrYm94KCkgfHwgaW5wdXQuaXNU
ZXh0QnV0dG9uKCkgfHwgaW5wdXQuaXNGaWxlVXBsb2FkKCkgfHwgaW5wdXQuaXNJbWFnZUJ1dHRv
bigpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTI1MSw3ICsxMjUxLDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGl0bGVFbGVtZW50VGV4dChWZWN0b3I8QWNjZXNz
aWJpbGl0eVRleHQ+JiB0ZXh0T3IKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBib29sIGlzSW5wdXRUYWcgPSBpc0hUTUxJbnB1dEVsZW1lbnQobm9kZSk7CisgICAg
Ym9vbCBpc0lucHV0VGFnID0gaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSk7CiAgICAgaWYgKGlz
SW5wdXRUYWcgfHwgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBSW5wdXQoYXJpYVJvbGVBdHRy
aWJ1dGUoKSkgfHwgaXNDb250cm9sKCkpIHsKICAgICAgICAgSFRNTExhYmVsRWxlbWVudCogbGFi
ZWwgPSBsYWJlbEZvckVsZW1lbnQodG9FbGVtZW50KG5vZGUpKTsKICAgICAgICAgaWYgKGxhYmVs
KSB7CkBAIC0xMzI4LDcgKzEzMjgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp2
aXNpYmxlVGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0T3JkZXIpCiAgICAgaWYg
KCFub2RlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYm9vbCBpc0lucHV0VGFnID0gaXNI
VE1MSW5wdXRFbGVtZW50KG5vZGUpOworICAgIGJvb2wgaXNJbnB1dFRhZyA9IGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KG5vZGUpOwogICAgIGlmIChpc0lucHV0VGFnKSB7CiAgICAgICAgIEhUTUxJbnB1
dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOwogICAg
ICAgICBpZiAoaW5wdXQuaXNUZXh0QnV0dG9uKCkpIHsKQEAgLTE2ODMsNyArMTY4Myw3IEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGl0bGUoKSBjb25zdAogICAgIGlmICghbm9k
ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYm9vbCBpc0lucHV0VGFnID0gaXNI
VE1MSW5wdXRFbGVtZW50KG5vZGUpOworICAgIGJvb2wgaXNJbnB1dFRhZyA9IGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KG5vZGUpOwogICAgIGlmIChpc0lucHV0VGFnKSB7CiAgICAgICAgIEhUTUxJbnB1
dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOwogICAg
ICAgICBpZiAoaW5wdXQuaXNUZXh0QnV0dG9uKCkpCkBAIC0xODA5LDcgKzE4MDksNyBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpjb2xvclZhbHVlKGludCYgciwgaW50JiBnLCBpbnQm
IGIpIGNvbnN0CiAgICAgaWYgKCFpc0NvbG9yV2VsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoIW5vZGUoKSB8fCAhaXNIVE1MSW5wdXRFbGVtZW50KG5vZGUoKSkpCisgICAgaWYgKCFu
b2RlKCkgfHwgIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUoKSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oKm5vZGUoKSk7CkBAIC0xODQxLDcgKzE4NDEsNyBAQCBzdGF0aWMgU3RyaW5nIGFjY2Vzc2li
bGVOYW1lRm9yTm9kZShOb2RlKiBub2RlKQogICAgIGlmICghYWx0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGFsdDsKICAgICAKLSAgICBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KG5vZGUpKQor
ICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKS52YWx1ZSgpOwogICAgIAogICAgIC8vIElmIHRo
ZSBub2RlIGNhbiBiZSB0dXJuZWQgaW50byBhbiBBWCBvYmplY3QsIHdlIGNhbiB1c2Ugc3RhbmRh
cmQgbmFtZSBjb21wdXRhdGlvbiBydWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGI1OTZm
OGQ5NjAyNjMxYjgyZDBmNTQ4MjY4YjMwMzFjNjVjYTVhNTAuLjNlMmE4ZjdhZTY1Y2IwOTRmOWIw
NjZlODM5ZjUyNDE1N2FjNjZkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNTIzLDcgKzUy
Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBdHRhY2htZW50KCkgY29u
c3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0ZpbGVVcGxvYWRCdXR0b24o
KSBjb25zdAogewotICAgIGlmIChtX3JlbmRlcmVyICYmIG1fcmVuZGVyZXItPm5vZGUoKSAmJiBp
c0hUTUxJbnB1dEVsZW1lbnQobV9yZW5kZXJlci0+bm9kZSgpKSkgeworICAgIGlmIChtX3JlbmRl
cmVyICYmIG1fcmVuZGVyZXItPm5vZGUoKSAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihtX3JlbmRl
cmVyLT5ub2RlKCkpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4oKm1fcmVuZGVyZXItPm5vZGUoKSk7CiAgICAgICAgIHJldHVy
biBpbnB1dC5pc0ZpbGVVcGxvYWQoKTsKICAgICB9CkBAIC05NTAsNyArOTUwLDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW4KICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIE5vZGUqIG5vZGUg
PSBtX3JlbmRlcmVyLT5ub2RlKCk7Ci0gICAgaWYgKCFub2RlIHx8ICFpc0hUTUxJbnB1dEVsZW1l
bnQobm9kZSkpCisgICAgaWYgKCFub2RlIHx8ICFpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOwpAQCAtOTY4LDcgKzk2OCw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmFkaW9CdXR0b25Hcm91cE1lbWJlcnMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxpc3QtPmxlbmd0
aCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgIE5vZGUqIGl0ZW0gPSBsaXN0LT5pdGVtKGkpOwotICAgICAgICAgICAgaWYgKGlz
SFRNTElucHV0RWxlbWVudChpdGVtKSkgeworICAgICAgICAgICAgaWYgKGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KGl0ZW0pKSB7CiAgICAgICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCYgYXNzb2Np
YXRlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCppdGVtKTsKICAgICAgICAg
ICAgICAgICBpZiAoYXNzb2NpYXRlRWxlbWVudC5pc1JhZGlvQnV0dG9uKCkgJiYgYXNzb2NpYXRl
RWxlbWVudC5uYW1lKCkgPT0gaW5wdXQubmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3Jl
YXRlKCZhc3NvY2lhdGVFbGVtZW50KSkKQEAgLTE2ODcsOSArMTY4Nyw5IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAg
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdCht
X3JlbmRlcmVyKTsKIAogICAgIC8vIEZJWE1FOiBEbyB3ZSB3YW50IHRvIGRvIGFueXRoaW5nIGhl
cmUgZm9yIEFSSUEgdGV4dGJveGVzPwotICAgIGlmIChyZW5kZXJlci0+aXNUZXh0RmllbGQoKSAm
JiBpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKHJlbmRlcmVyLT5pc1RleHRG
aWVsZCgpICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KS5zZXRWYWx1ZShzdHJpbmcpOwotICAgIGVsc2Ug
aWYgKHJlbmRlcmVyLT5pc1RleHRBcmVhKCkgJiYgaXNIVE1MVGV4dEFyZWFFbGVtZW50KGVsZW1l
bnQpKQorICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RleHRBcmVhKCkgJiYgaXM8SFRNTFRleHRB
cmVhRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1l
bnQ+KGVsZW1lbnQpLnNldFZhbHVlKHN0cmluZyk7CiB9CiAKQEAgLTIyMTEsNyArMjIxMSw3IEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2li
aWxpdHlIaXRUZXN0KGNvbnN0IEludFBvCiAgICAgaWYgKGlzSFRNTEFyZWFFbGVtZW50KG5vZGUp
KQogICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChkb3duY2FzdDxI
VE1MQXJlYUVsZW1lbnQ+KG5vZGUpLCBwb2ludCk7CiAgICAgCi0gICAgaWYgKGlzSFRNTE9wdGlv
bkVsZW1lbnQobm9kZSkpCisgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50Pihub2RlKSkKICAg
ICAgICAgbm9kZSA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSkub3duZXJTZWxl
Y3RFbGVtZW50KCk7CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0KiBvYmogPSBub2RlLT5yZW5kZXJl
cigpOwpAQCAtMjQ4Myw3ICsyNDgzLDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQogICAgIGlmIChtX3Jl
bmRlcmVyLT5pc1RleHQoKSkKICAgICAgICAgcmV0dXJuIFN0YXRpY1RleHRSb2xlOwogICAgIGlm
IChjc3NCb3ggJiYgY3NzQm94LT5pc0ltYWdlKCkpIHsKLSAgICAgICAgaWYgKG5vZGUgJiYgaXNI
VE1MSW5wdXRFbGVtZW50KG5vZGUpKQorICAgICAgICBpZiAobm9kZSAmJiBpczxIVE1MSW5wdXRF
bGVtZW50Pihub2RlKSkKICAgICAgICAgICAgIHJldHVybiBhcmlhSGFzUG9wdXAoKSA/IFBvcFVw
QnV0dG9uUm9sZSA6IEJ1dHRvblJvbGU7CiAgICAgICAgIGlmIChpc1NWR0ltYWdlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gU1ZHUm9vdFJvbGU7CkBAIC0yNTAyLDcgKzI1MDIsNyBAQCBBY2Nlc3Np
YmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmls
aXR5Um9sZSgpCiAgICAgaWYgKGNzc0JveCAmJiBjc3NCb3gtPmlzVGV4dEFyZWEoKSkKICAgICAg
ICAgcmV0dXJuIFRleHRBcmVhUm9sZTsKIAotICAgIGlmIChub2RlICYmIGlzSFRNTElucHV0RWxl
bWVudChub2RlKSkgeworICAgIGlmIChub2RlICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUp
KSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oKm5vZGUpOwogICAgICAgICBpZiAoaW5wdXQuaXNDaGVja2JveCgpKQogICAgICAg
ICAgICAgcmV0dXJuIENoZWNrQm94Um9sZTsKQEAgLTI4MzYsNyArMjgzNiw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpCiB2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFRleHRGaWVsZENoaWxkcmVuKCkKIHsKICAg
ICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwotICAgIGlmICghbm9kZSB8fCAhaXNIVE1MSW5w
dXRFbGVtZW50KG5vZGUpKQorICAgIGlmICghbm9kZSB8fCAhaXM8SFRNTElucHV0RWxlbWVudD4o
bm9kZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1
dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggYjg2
NTExODA4MmQzYTcwZGQ4YTM3Y2I4MzY0ZjgzZjU5MDgyZWIzMy4uMjBiMTQ1ODk1NTFiOTgwZmE5
MjhkMmFkMTZhMmQzMzgyNmUzNWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBz
dGF0aWMgdm9pZCBub3RpZnlDaGlsZHJlblNlbGVjdGlvbkNoYW5nZShBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmplY3QpCiAKICAgICAvLyBPbmx5IHN1cHBvcnQgSFRNTCBzZWxlY3QgZWxlbWVudHMg
c28gZmFyIChBUklBIHNlbGVjdG9ycyBub3Qgc3VwcG9ydGVkKS4KICAgICBOb2RlKiBub2RlID0g
b2JqZWN0LT5ub2RlKCk7Ci0gICAgaWYgKCFub2RlIHx8ICFpc0hUTUxTZWxlY3RFbGVtZW50KG5v
ZGUpKQorICAgIGlmICghbm9kZSB8fCAhaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KG5vZGUpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBFbWl0IHNpZ25hbCBmcm9tIHRoZSBsaXN0Ym94J3MgcG9p
bnQgb2YgdmlldyBmaXJzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyVGVzdEZ1bmN0aW9ucy5oCmluZGV4IDdmYTRkYzViODk5MGZlZmZmNGIxNzE5ZDQ4MDE4MDk1
NTY4OGZhYjkuLjU0NmVjYWVkN2Y5ODdhZjI5ZTFmZGFiODJlZmNlZTJlMjgzMzY1ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaApA
QCAtNTgsNyArNTgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWZhdWx0QnV0dG9uRm9yRm9y
bShjb25zdCBFbGVtZW50KiBlbGVtZW50KQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEaXNhYmxl
ZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIGlmIChlbGVtZW50LT5pc0Zvcm1Db250
cm9sRWxlbWVudCgpIHx8IGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MT3B0
R3JvdXBFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmIChlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxl
bWVudCgpIHx8IGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MT3B0R3Jv
dXBFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmlzRGlzYWJsZWRG
b3JtQ29udHJvbCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTY2LDEwICs2NiwxMCBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNEaXNhYmxlZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogQUxX
QVlTX0lOTElORSBib29sIGlzRW5hYmxlZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogewogICAg
IGJvb2wgaXNFbmFibGVkID0gZmFsc2U7Ci0gICAgaWYgKGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xF
bGVtZW50KCkgfHwgaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxPcHRHcm91
cEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50
KCkgfHwgaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxPcHRHcm91cEVs
ZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBpc0VuYWJsZWQgPSAhZWxlbWVudC0+aXNEaXNhYmxl
ZEZvcm1Db250cm9sKCk7CiAgICAgZWxzZSBpZiAoZWxlbWVudC0+aXNMaW5rKCkpCi0gICAgICAg
IGlzRW5hYmxlZCA9IGlzSFRNTEFuY2hvckVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MQXJlYUVs
ZW1lbnQoZWxlbWVudCk7CisgICAgICAgIGlzRW5hYmxlZCA9IGlzPEhUTUxBbmNob3JFbGVtZW50
PihlbGVtZW50KSB8fCBpczxIVE1MQXJlYUVsZW1lbnQ+KGVsZW1lbnQpOwogICAgIHJldHVybiBp
c0VuYWJsZWQ7CiB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGlzQ2hl
Y2tlZChFbGVtZW50KiBlbGVtZW50KQogICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCk7CiAgICAgaWYgKGlucHV0RWxlbWVu
dCAmJiBpbnB1dEVsZW1lbnQtPnNob3VsZEFwcGVhckNoZWNrZWQoKSAmJiAhaW5wdXRFbGVtZW50
LT5zaG91bGRBcHBlYXJJbmRldGVybWluYXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25F
bGVtZW50PigqZWxlbWVudCkuc2VsZWN0ZWQoKSkKKyAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1l
bnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkuc2Vs
ZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDJlYWVkNTM1YzhkNjhiZjA4MWNmZmY3
ZjBlYzg0N2M5ZjEyNGMxM2IuLjA2ODczMmM3MjkzZWI0NzJjNjBiMGZkN2JjMzk0ZWFlZDkxNzQ5
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTEyNzAsNyArMTI3MCw3
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyCiAgICAgICAgIHN0eWxlLnNldFpJbmRleCgwKTsK
IAogICAgIC8vIFRleHRhcmVhIGNvbnNpZGVycyBvdmVyZmxvdyB2aXNpYmxlIGFzIGF1dG8uCi0g
ICAgaWYgKGUgJiYgaXNIVE1MVGV4dEFyZWFFbGVtZW50KGUpKSB7CisgICAgaWYgKGUgJiYgaXM8
SFRNTFRleHRBcmVhRWxlbWVudD4oZSkpIHsKICAgICAgICAgc3R5bGUuc2V0T3ZlcmZsb3dYKHN0
eWxlLm92ZXJmbG93WCgpID09IE9WSVNJQkxFID8gT0FVVE8gOiBzdHlsZS5vdmVyZmxvd1goKSk7
CiAgICAgICAgIHN0eWxlLnNldE92ZXJmbG93WShzdHlsZS5vdmVyZmxvd1koKSA9PSBPVklTSUJM
RSA/IE9BVVRPIDogc3R5bGUub3ZlcmZsb3dZKCkpOwogICAgIH0KQEAgLTEzMzgsNyArMTMzOCw3
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyCiAgICAgaWYgKGUgJiYgZS0+aXNGb3JtQ29udHJv
bEVsZW1lbnQoKSAmJiBzdHlsZS5mb250U2l6ZSgpID49IDExKSB7CiAgICAgICAgIC8vIERvbid0
IGFwcGx5IGludHJpbnNpYyBtYXJnaW5zIHRvIGltYWdlIGJ1dHRvbnMuIFRoZSBkZXNpZ25lciBr
bm93cyBob3cgYmlnIHRoZSBpbWFnZXMgYXJlLAogICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIHRy
ZWF0IGFsbCBpbWFnZSBidXR0b25zIGFzIHRob3VnaCB0aGV5IHdlcmUgZXhwbGljaXRseSBzaXpl
ZC4KLSAgICAgICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoZSkgfHwgIWRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KCplKS5pc0ltYWdlQnV0dG9uKCkpCisgICAgICAgIGlmICghaXM8SFRNTElu
cHV0RWxlbWVudD4oZSkgfHwgIWRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCplKS5pc0ltYWdl
QnV0dG9uKCkpCiAgICAgICAgICAgICBhZGRJbnRyaW5zaWNNYXJnaW5zKHN0eWxlKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggNDA5NGYzM2M5MjJk
ZjUwMWQ0OTVlZjM1ZGUyOTFhYWQ1OGQwMDc3My4uYTBmOTYzMDI4OTliMTg4YjU4NGUxOTkxMjVj
YzAzZWYzMjBmNzA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0
Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAg
LTM1Niw3ICszNTYsNyBAQCBib29sIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudChOb2Rl
KiBvcmlnaW4sIFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQogICAgIFdpbmRvd0V2ZW50Q29u
dGV4dCB3aW5kb3dFdmVudENvbnRleHQobm9kZS5nZXQoKSwgZXZlbnRQYXRoLmxhc3RDb250ZXh0
SWZFeGlzdHMoKSk7CiAKICAgICBJbnB1dEVsZW1lbnRDbGlja1N0YXRlIGNsaWNrSGFuZGxpbmdT
dGF0ZTsKLSAgICBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KG5vZGUuZ2V0KCkpKQorICAgIGlmIChp
czxIVE1MSW5wdXRFbGVtZW50Pihub2RlLmdldCgpKSkKICAgICAgICAgZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oKm5vZGUpLndpbGxEaXNwYXRjaEV2ZW50KCpldmVudCwgY2xpY2tIYW5kbGlu
Z1N0YXRlKTsKIAogICAgIGlmICghZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpICYmICFldmVu
dFBhdGguaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAppbmRleCAyMDExMmNhMjk2YTU1MTAzZGEzNWFlNDM4ZWFkOTZjZmVmYmQ3NzIzLi5iNzYyOWNm
MTc0ZWFlNWYxM2NkYjIyMTljN2U3ODliODhhOWJkMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTY3MCw3ICsxNjcwLDcgQEAgdm9pZCBGcmFtZVNl
bGVjdGlvbjo6c2VsZWN0QWxsKCkKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5k
b2N1bWVudCgpOwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC0+Zm9j
dXNlZEVsZW1lbnQoKTsKLSAgICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgaXNIVE1MU2VsZWN0RWxl
bWVudChmb2N1c2VkRWxlbWVudCkpIHsKKyAgICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgaXM8SFRN
TFNlbGVjdEVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSkgewogICAgICAgICBIVE1MU2VsZWN0RWxl
bWVudCYgc2VsZWN0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PigqZm9jdXNl
ZEVsZW1lbnQpOwogICAgICAgICBpZiAoc2VsZWN0RWxlbWVudC5jYW5TZWxlY3RBbGwoKSkgewog
ICAgICAgICAgICAgc2VsZWN0RWxlbWVudC5zZWxlY3RBbGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYmQ1MzZmMDc5
ZjIxZmFjZTgzYmRlNGJmODM4MzYwNzFiMTJmNzE5MS4uMzExM2FmMzQwOTY2NGI0MGJmMTBmOGJj
YzFjYWU4Njk0ZWNiNDgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTEyNzMsNyArMTI3Myw3IEBAIGJvb2wgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZFBlcmZvcm1TbWFydFJlcGxhY2UoKSBjb25zdAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBFbGVtZW50KiB0ZXh0Q29udHJvbCA9IGVuY2xvc2lu
Z1RleHRGb3JtQ29udHJvbChwb3NpdGlvbkF0U3RhcnRPZkluc2VydGVkQ29udGVudCgpLmRlZXBF
cXVpdmFsZW50KCkpOwotICAgIGlmICh0ZXh0Q29udHJvbCAmJiBpc0hUTUxJbnB1dEVsZW1lbnQo
dGV4dENvbnRyb2wpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCp0ZXh0Q29udHJvbCku
aXNQYXNzd29yZEZpZWxkKCkpCisgICAgaWYgKHRleHRDb250cm9sICYmIGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KHRleHRDb250cm9sKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqdGV4dENv
bnRyb2wpLmlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIERpc2Fi
bGUgc21hcnQgcmVwbGFjZSBmb3IgcGFzc3dvcmQgZmllbGRzLgogCiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAppbmRleCBiYTgz
MjVmNTZjZWE0OWE4YzFjNTY4YWFiMDBkYzRiOGRkNTU4MTM4Li42MTIwODBkNjJmNDcwN2ZlOWU5
NzU5NmFhN2RjNDkyZjFlZjUxZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5jcHAKQEAgLTY2NCw3ICs2NjQsNyBAQCBOb2RlKiBWaXNpYmxlU2VsZWN0aW9u
Ojpub25Cb3VuZGFyeVNoYWRvd1RyZWVSb290Tm9kZSgpIGNvbnN0CiBib29sIFZpc2libGVTZWxl
Y3Rpb246OmlzSW5QYXNzd29yZEZpZWxkKCkgY29uc3QKIHsKICAgICBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudCogdGV4dENvbnRyb2wgPSBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woc3RhcnQo
KSk7Ci0gICAgcmV0dXJuIHRleHRDb250cm9sICYmIGlzSFRNTElucHV0RWxlbWVudCh0ZXh0Q29u
dHJvbCkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKnRleHRDb250cm9sKS5pc1Bhc3N3
b3JkRmllbGQoKTsKKyAgICByZXR1cm4gdGV4dENvbnRyb2wgJiYgaXM8SFRNTElucHV0RWxlbWVu
dD4odGV4dENvbnRyb2wpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCp0ZXh0Q29udHJv
bCkuaXNQYXNzd29yZEZpZWxkKCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMjRiYTVlMWEwMjI0ZTUw
OTcwZDg5NzAzNDRmYjc4NjE2OGExMDI4NC4uM2JjYTk0NzQxMjJkM2ExYzFmNTkyYWE5ZDNmMzAy
NjdkMzUxOTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQpAQCAtMjA0Miw3ICsyMDQyLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfcHJvY2Vz
c0VsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNJbnRlZ2VyIGRlcHRoKQogICAgIH0gZWxzZSBp
ZiAoZWxlbWVudC5oYXNUYWdOYW1lKHFUYWcpKSB7CiAgICAgICAgIF9hZGRRdW90ZUZvckVsZW1l
bnQoZWxlbWVudCwgWUVTLCBfcXVvdGVMZXZlbCsrKTsKICAgICB9IGVsc2UgaWYgKGVsZW1lbnQu
aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAgICAgaWYgKGlzSFRNTElucHV0RWxlbWVudChl
bGVtZW50KSkgeworICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkpIHsK
ICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhU
TUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudC50
eXBlKCkgPT0gInRleHQiKSB7CiAgICAgICAgICAgICAgICAgTlNTdHJpbmcgKnZhbHVlID0gaW5w
dXRFbGVtZW50LnZhbHVlKCk7CkBAIC0yMDUxLDcgKzIwNTEsNyBAQCBCT09MIEhUTUxDb252ZXJ0
ZXI6Ol9wcm9jZXNzRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU0ludGVnZXIgZGVwdGgpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuaGFzVGFnTmFt
ZSh0ZXh0YXJlYVRhZykpIHsKLSAgICAgICAgaWYgKGlzSFRNTFRleHRBcmVhRWxlbWVudChlbGVt
ZW50KSkgeworICAgICAgICBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkpIHsK
ICAgICAgICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQmIHRleHRBcmVhRWxlbWVudCA9IGRvd25j
YXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICAgICAgTlNTdHJpbmcg
KnZhbHVlID0gdGV4dEFyZWFFbGVtZW50LnZhbHVlKCk7CiAgICAgICAgICAgICBpZiAodmFsdWUg
JiYgW3ZhbHVlIGxlbmd0aF0gPiAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9ndGsvRWRpdG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0
ay5jcHAKaW5kZXggZmUwYjFkYWMxOTFiNDM2OTc4ZTRlNjU4NDUyMjc4ODA4ZTE1ODI5NC4uMDY0
NGNmYTE4ODE0ZTUzZmQ2OTNlNjcwNjg5ZGJlNDhmMzUyYTBkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwCkBAIC04MiwxMSArODIsMTEgQEAgdm9pZCBFZGl0b3I6
OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1Bs
YWluVGV4dCwgTWEKIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudFVSTChFbGVt
ZW50JiBlbGVtZW50KQogewotICAgIGlmIChpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCkgfHwg
aXNIVE1MSW5wdXRFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50
PihlbGVtZW50KSB8fCBpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0
dXJuIGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnNyY0F0dHIpOwogICAgIGlm
IChpczxTVkdJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVudC5m
YXN0R2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKLSAgICBpZiAoaXNIVE1MRW1i
ZWRFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTE9iamVjdEVsZW1lbnQoZWxlbWVudCkpCisgICAg
aWYgKGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxPYmplY3RFbGVtZW50
PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaW1hZ2VTb3VyY2VVUkwoKTsKICAg
ICByZXR1cm4gbnVsbEF0b207CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1Mu
bW0KaW5kZXggZTBlYjM2OWMyNDNiMDBmMmQ4NDI4YzAwMmUwNDdiNjgzZTlkZGY2YS4uMzE5Mjgy
MjIyZDUxNzU2YzYyMTgwOTE1ZmRmMzU3YjA0ZTc5ZTliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgRWRpdG9yOjpzZXRU
ZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rp
b24gZGlyCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0g
bV9mcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOwotICAgIGlmIChmb2N1c2VkRWxl
bWVudCAmJiAoaXNIVE1MVGV4dEFyZWFFbGVtZW50KGZvY3VzZWRFbGVtZW50KSB8fCAoaXNIVE1M
SW5wdXRFbGVtZW50KGZvY3VzZWRFbGVtZW50KQorICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiAo
aXM8SFRNTFRleHRBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQpIHx8IChpczxIVE1MSW5wdXRF
bGVtZW50Pihmb2N1c2VkRWxlbWVudCkKICAgICAgICAgJiYgKGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCpmb2N1c2VkRWxlbWVudCkuaXNUZXh0RmllbGQoKQogICAgICAgICAgICAgfHwgZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmZvY3VzZWRFbGVtZW50KS5pc1NlYXJjaEZpZWxkKCkp
KSkpIHsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBhYmVkYzRiMmE3NGVjOTMzOWY5NmZiYjhj
MzIzNmZiOTliM2NiYTcxLi41NmM3MDA3M2I2M2Q1ZDkyZGFhMmRmYzhlMjUxMjM0NmFjYTc2ZDJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0yMzQsNyArMjM0LDcgQEAgU3RyaW5n
IFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0YWtlUmVzdWx0cygpCiAKIHZvaWQgU3R5bGVkTWFy
a3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQoU3RyaW5nQnVpbGRlciYgb3V0LCBjb25zdCBUZXh0
JiB0ZXh0KQogeyAgICAKLSAgICBjb25zdCBib29sIHBhcmVudElzVGV4dGFyZWEgPSB0ZXh0LnBh
cmVudEVsZW1lbnQoKSAmJiBpc0hUTUxUZXh0QXJlYUVsZW1lbnQodGV4dC5wYXJlbnRFbGVtZW50
KCkpOworICAgIGNvbnN0IGJvb2wgcGFyZW50SXNUZXh0YXJlYSA9IHRleHQucGFyZW50RWxlbWVu
dCgpICYmIGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KHRleHQucGFyZW50RWxlbWVudCgpKTsKICAg
ICBjb25zdCBib29sIHdyYXBwaW5nU3BhbiA9IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZSh0ZXh0
KSAmJiAhcGFyZW50SXNUZXh0YXJlYTsKICAgICBpZiAod3JhcHBpbmdTcGFuKSB7CiAgICAgICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IHdyYXBwaW5nU3R5bGUgPSBtX3dyYXBwaW5nU3R5bGUtPmNv
cHkoKTsKQEAgLTc0Myw3ICs3NDMsNyBAQCBzdGF0aWMgdm9pZCBmaWxsQ29udGFpbmVyRnJvbVN0
cmluZyhDb250YWluZXJOb2RlKiBwYXJhZ3JhcGgsIGNvbnN0IFN0cmluZyYgc3RyaQogCiBib29s
IGlzUGxhaW5UZXh0TWFya3VwKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFpc0hUTUxEaXZFbGVt
ZW50KG5vZGUpKQorICAgIGlmICghaXM8SFRNTERpdkVsZW1lbnQ+KG5vZGUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBIVE1MRGl2RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhU
TUxEaXZFbGVtZW50Pigqbm9kZSk7CkBAIC05MjksNyArOTI5LDcgQEAgc3RhdGljIFZlY3RvcjxS
ZWY8SFRNTEVsZW1lbnQ+PiBjb2xsZWN0RWxlbWVudHNUb1JlbW92ZUZyb21GcmFnbWVudChDb250
YWluZXJOb2QKIHsKICAgICBWZWN0b3I8UmVmPEhUTUxFbGVtZW50Pj4gdG9SZW1vdmU7CiAgICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8SFRNTEVsZW1lbnQ+KGNvbnRhaW5l
cikpIHsKLSAgICAgICAgaWYgKGlzSFRNTEh0bWxFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAg
IGlmIChpczxIVE1MSHRtbEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICB0b1JlbW92
ZS5hcHBlbmQoZWxlbWVudCk7CiAgICAgICAgICAgICBjb2xsZWN0RWxlbWVudHNUb1JlbW92ZUZy
b21GcmFnbWVudChlbGVtZW50KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCA5MWJiMjgxZjMxMjRjODgyYTRmNzcwNTcyYTIy
NzBkMjVjOTg5MGExLi5lNzYwOTNmNWJiZGFlZTRlYTRlMTYwMTdiY2QyMTlmYTgwNjQzMjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMTkxLDkgKzE5MSw5IEBA
IGlubGluZSBib29sIGlzTWF0Y2hpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBodG1s
Q29sbGVjdGlvbiwgRWxlbWVudCYgZWxlCiAgICAgY2FzZSBTZWxlY3RPcHRpb25zOgogICAgICAg
ICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKG9wdGlvblRhZyk7CiAgICAgY2FzZSBTZWxlY3Rl
ZE9wdGlvbnM6Ci0gICAgICAgIHJldHVybiBpc0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpICYm
IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5zZWxlY3RlZCgpOworICAgICAg
ICByZXR1cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxP
cHRpb25FbGVtZW50PihlbGVtZW50KS5zZWxlY3RlZCgpOwogICAgIGNhc2UgRGF0YUxpc3RPcHRp
b25zOgotICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSkgeworICAgICAg
ICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBIVE1M
T3B0aW9uRWxlbWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1l
bnQpOwogICAgICAgICAgICAgaWYgKCFvcHRpb24uaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYg
IW9wdGlvbi52YWx1ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTIwMiw3ICsyMDIsNyBAQCBpbmxpbmUgYm9vbCBpc01hdGNoaW5nRWxlbWVudChjb25zdCBI
VE1MQ29sbGVjdGlvbiYgaHRtbENvbGxlY3Rpb24sIEVsZW1lbnQmIGVsZQogICAgIGNhc2UgTWFw
QXJlYXM6CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRhZyk7CiAgICAg
Y2FzZSBEb2NBcHBsZXRzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFwcGxl
dFRhZykgfHwgKGlzSFRNTE9iamVjdEVsZW1lbnQoZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9i
amVjdEVsZW1lbnQ+KGVsZW1lbnQpLmNvbnRhaW5zSmF2YUFwcGxldCgpKTsKKyAgICAgICAgcmV0
dXJuIGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KSB8fCAoaXM8SFRNTE9iamVjdEVsZW1l
bnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KS5jb250
YWluc0phdmFBcHBsZXQoKSk7CiAgICAgY2FzZSBEb2NFbWJlZHM6CiAgICAgICAgIHJldHVybiBl
bGVtZW50Lmhhc1RhZ05hbWUoZW1iZWRUYWcpOwogICAgIGNhc2UgRG9jTGlua3M6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCAzNjQyYjg1Y2I2Y2I1NzI4NWQ2
Y2QwN2U1YWIzZTlhNTQ0MTFmYTgxLi40YWRhNzI1ODVlNTgwNTc3ZDIzNmRhODAzOTkyYTAyZjg3
NjAzOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTE4
OSw3ICsxODksNyBAQCBib29sIEhUTUxFbWJlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIC8vIElmIG15IHBhcmVudCBpcyBhbiA8b2JqZWN0
PiBhbmQgaXMgbm90IHNldCB0byB1c2UgZmFsbGJhY2sgY29udGVudCwgSQogICAgIC8vIHNob3Vs
ZCBiZSBpZ25vcmVkIGFuZCBub3QgZ2V0IGEgcmVuZGVyZXIuCiAgICAgQ29udGFpbmVyTm9kZSog
cGFyZW50ID0gcGFyZW50Tm9kZSgpOwotICAgIGlmIChwYXJlbnQgJiYgaXNIVE1MT2JqZWN0RWxl
bWVudChwYXJlbnQpKSB7CisgICAgaWYgKHBhcmVudCAmJiBpczxIVE1MT2JqZWN0RWxlbWVudD4o
cGFyZW50KSkgewogICAgICAgICBpZiAoIXBhcmVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4o
KnBhcmVudCkudXNlRmFsbGJhY2tDb250ZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDEyYWNmYjNhYzU4MmZlYmI1NDA2OWRh
NGYyYjY3MzU0YmVjMDNkMWEuLmJjYWQyNzY2ZWRlNTBjMGE2ZDhkMGEwMjJlYmU4OWNhMTg3ZjAz
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cApAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBib29sIHNob3VsZEF1dG9mb2N1cyhIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KiBlbGVtZW50KQogCiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHNl
dCBvZiBoYXNUYWdOYW1lIGNoZWNrcyBiZSByZXBsYWNlZCBieSBhCiAgICAgLy8gdmlydHVhbCBt
ZW1iZXIgZnVuY3Rpb24/Ci0gICAgaWYgKGlzSFRNTElucHV0RWxlbWVudChlbGVtZW50KSkKKyAg
ICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiAhZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQpLmlzSW5wdXRUeXBlSGlkZGVuKCk7CiAg
ICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQXV0b2ZvY3VzKEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlm
IChlbGVtZW50LT5oYXNUYWdOYW1lKGJ1dHRvblRhZykpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGlmIChpc0hUTUxUZXh0QXJlYUVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxU
ZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA0
NTg5YjQ3Nzc1N2Y2ZGIyYTNiMDNjODJiNWY2MzVhNTljNDlkOGE5Li5lMzljODRmMDg4NmM0Mzg1
MzM3NTViZTM0NmJjZmFjN2RiZTY5Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmdldFRl
eHRGaWVsZFZhbHVlcyhTdHJpbmdQYWlyVmVjdG9yJiBmaWVsZE5hbWVzQW5kVmFsdWVzKQogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsr
aSkgewogICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQmIGNvbnRyb2wgPSAqbV9hc3NvY2lh
dGVkRWxlbWVudHNbaV07CiAgICAgICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gY29udHJvbC5h
c0hUTUxFbGVtZW50KCk7Ci0gICAgICAgIGlmICghaXNIVE1MSW5wdXRFbGVtZW50KGVsZW1lbnQp
KQorICAgICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCk7CiAgICAgICAgIGlmICghaW5wdXQuaXNUZXh0Rmll
bGQoKSkKQEAgLTU5Miw3ICs1OTIsNyBAQCB1bnNpZ25lZCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1F
bGVtZW50SW5kZXgoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBhc3NvY2lhdGVkRWxlbQogICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzKSB7CiAgICAgICAgIGlmICgmZWxlbWVudCA9
PSAmYXNzb2NpYXRlZEhUTUxFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAg
IGlmICghaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGVsZW1lbnQpICYmICFpc0hUTUxPYmplY3RF
bGVtZW50KGVsZW1lbnQpKQorICAgICAgICBpZiAoIWlzSFRNTEZvcm1Db250cm9sRWxlbWVudChl
bGVtZW50KSAmJiAhaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGlmIChlbGVtZW50LmZvcm0oKSAhPSB0aGlzKQogICAgICAgICAg
ICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAKaW5kZXgg
ZmIzNGM4Y2NkOTIwNjZmNGUwZjAzMzZhODFlNzVkMzIxMmNkNWM1Yi4uMjlmYmNkZThjNmQ5YmQ2
NmYzOWRiMmQ0MDA3ZTgxZTRlMGZmNzNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
TG9hZGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6ZGlzcGF0
Y2hMb2FkRXZlbnQoKQogCiAgICAgYm9vbCBlcnJvck9jY3VycmVkID0gaW1hZ2UoKS0+ZXJyb3JP
Y2N1cnJlZCgpOwogICAgIGlmICghZXJyb3JPY2N1cnJlZCAmJiBpbWFnZSgpLT5yZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKQotICAgICAgICBlcnJvck9jY3VycmVkID0gaXNIVE1M
T2JqZWN0RWxlbWVudChlbGVtZW50KCkpOyAvLyBBbiA8b2JqZWN0PiBjb25zaWRlcnMgYSA0MDQg
dG8gYmUgYW4gZXJyb3IgYW5kIHNob3VsZCBmaXJlIG9uZXJyb3IuCisgICAgICAgIGVycm9yT2Nj
dXJyZWQgPSBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCgpKTsgLy8gQW4gPG9iamVjdD4g
Y29uc2lkZXJzIGEgNDA0IHRvIGJlIGFuIGVycm9yIGFuZCBzaG91bGQgZmlyZSBvbmVycm9yLgog
ICAgIGVsZW1lbnQoKS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXJyb3JPY2N1cnJlZCA/
IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IDogZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2Us
IGZhbHNlKSk7CiB9CiAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBIVE1MSW1hZ2VMb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKICAgICAgICAgfQogICAgIH0KIAotICAgIGlm
IChsb2FkRXJyb3IgJiYgaXNIVE1MT2JqZWN0RWxlbWVudChlbGVtZW50KCkpKQorICAgIGlmIChs
b2FkRXJyb3IgJiYgaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQoKSkpCiAgICAgICAgIGRv
d25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KCkpLnJlbmRlckZhbGxiYWNrQ29udGVu
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKaW5k
ZXggZmVmNDFmZGRlM2VjZmRlOWE0OGM0YWMxNGVlYmI5NTJlMTljMDY4Zi4uYWYzYzM2MzUyYWEz
Njg2YmJkZmFhMzRlNWQ3OGFhZGIzYjU2NzFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE5hbWVDb2xsZWN0aW9uLmNwcApAQCAtNjYsMTUgKzY2LDE1IEBAIGJvb2wgV2luZG93TmFtZUNv
bGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0
b21pY1N0CiBib29sIERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZJZEF0
dHJpYnV0ZU1hdGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IHdl
IG5lZWQgdG8gZml4IEhUTUxJbWFnZUVsZW1lbnQgdG8gdXBkYXRlIHRoZSBoYXNoIG1hcCBmb3Ig
dXMgd2hlbiBuYW1lIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLgotICAgIHJldHVybiBlbGVt
ZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCAoaXNIVE1MT2JqZWN0RWxlbWVudChlbGVtZW50
KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuaXNEb2NOYW1lZEl0ZW0o
KSkKLSAgICAgICAgfHwgKGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSAmJiBlbGVtZW50Lmhh
c05hbWUoKSk7CisgICAgcmV0dXJuIGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KSB8fCAo
aXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVt
ZW50PihlbGVtZW50KS5pc0RvY05hbWVkSXRlbSgpKQorICAgICAgICB8fCAoaXM8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCkgJiYgZWxlbWVudC5oYXNOYW1lKCkpOwogfQogCiBib29sIERvY3Vt
ZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gaXNIVE1MRm9ybUVsZW1lbnQoZWxl
bWVudCkgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGVtYmVkVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoaWZyYW1lVGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8
fCAoaXNIVE1MT2JqZWN0RWxlbWVudChlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxl
bWVudD4oZWxlbWVudCkuaXNEb2NOYW1lZEl0ZW0oKSkKLSAgICAgICAgfHwgaXNIVE1MSW1hZ2VF
bGVtZW50KGVsZW1lbnQpOworICAgIHJldHVybiBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQp
IHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50
PihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwg
KGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxl
bWVudD4oZWxlbWVudCkuaXNEb2NOYW1lZEl0ZW0oKSkKKyAgICAgICAgfHwgaXM8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCk7CiB9CiAKIGJvb2wgRG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxl
bWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nSW1w
bCogbmFtZSkKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjpl
bGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWMKICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOwogICAg
IGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKSkKICAgICAgICAgcmV0dXJuIGVsZW1l
bnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lIHx8IGVsZW1lbnQuZ2V0SWRBdHRy
aWJ1dGUoKS5pbXBsKCkgPT0gbmFtZTsKLSAgICBpZiAoaXNIVE1MT2JqZWN0RWxlbWVudChlbGVt
ZW50KSkKKyAgICBpZiAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBy
ZXR1cm4gKGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lIHx8IGVsZW1l
bnQuZ2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSkgJiYgZG93bmNhc3Q8SFRNTE9iamVj
dEVsZW1lbnQ+KGVsZW1lbnQpLmlzRG9jTmFtZWRJdGVtKCk7CiAgICAgaWYgKGlzSFRNTEltYWdl
RWxlbWVudChlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0
ZSgpLmltcGwoKSA9PSBuYW1lIHx8IChlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09
IG5hbWUgJiYgZWxlbWVudC5oYXNOYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHAKaW5kZXggOTVkNmFiYzFmZWU2M2JlOTA4NzJhMjUwYzBlMzc2NGUw
OGMxZTIxOS4uZDdiZDZjY2RiMzMyZWFkYmZmYTUxZTU0MWQyNTEyZDJjNTQ0NTliYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljCiB2b2lkIEhUTUxPcHRHcm91cEVsZW1lbnQ6OnJl
Y2FsY1NlbGVjdE9wdGlvbnMoKQogewogICAgIENvbnRhaW5lck5vZGUqIHNlbGVjdCA9IHBhcmVu
dE5vZGUoKTsKLSAgICB3aGlsZSAoc2VsZWN0ICYmICFpc0hUTUxTZWxlY3RFbGVtZW50KHNlbGVj
dCkpCisgICAgd2hpbGUgKHNlbGVjdCAmJiAhaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KHNlbGVjdCkp
CiAgICAgICAgIHNlbGVjdCA9IHNlbGVjdC0+cGFyZW50Tm9kZSgpOwogICAgIGlmIChzZWxlY3Qp
CiAgICAgICAgIGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pigqc2VsZWN0KS5zZXRSZWNhbGNM
aXN0SXRlbXMoKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBTdHJpbmcgSFRNTE9wdEdyb3VwRWxlbWVu
dDo6Z3JvdXBMYWJlbFRleHQoKSBjb25zdAogSFRNTFNlbGVjdEVsZW1lbnQqIEhUTUxPcHRHcm91
cEVsZW1lbnQ6Om93bmVyU2VsZWN0RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9k
ZSogc2VsZWN0ID0gcGFyZW50Tm9kZSgpOwotICAgIHdoaWxlIChzZWxlY3QgJiYgIWlzSFRNTFNl
bGVjdEVsZW1lbnQoc2VsZWN0KSkKKyAgICB3aGlsZSAoc2VsZWN0ICYmICFpczxIVE1MU2VsZWN0
RWxlbWVudD4oc2VsZWN0KSkKICAgICAgICAgc2VsZWN0ID0gc2VsZWN0LT5wYXJlbnROb2RlKCk7
CiAgICAgCiAgICAgaWYgKCFzZWxlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVs
ZW1lbnQuY3BwCmluZGV4IDFhYjdhMDQwOGJmNGY4YWJjZGRhY2U3YzIxYjFhZTc5OWRkMDI0MDEu
LmNlNjUxMjdjNThmOGFjYTYyYTY1ZjE3NzIzODQ4NDJmNmNlM2NkMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgaW50IEhU
TUxPcHRpb25FbGVtZW50OjppbmRleCgpIGNvbnN0CiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVt
ZW50Kj4mIGl0ZW1zID0gc2VsZWN0RWxlbWVudC0+bGlzdEl0ZW1zKCk7CiAgICAgc2l6ZV90IGxl
bmd0aCA9IGl0ZW1zLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIGlmICghaXNIVE1MT3B0aW9uRWxlbWVudChpdGVtc1tpXSkpCisgICAg
ICAgIGlmICghaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW1zW2ldKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBpZiAoaXRlbXNbaV0gPT0gdGhpcykKICAgICAgICAgICAgIHJldHVy
biBvcHRpb25JbmRleDsKQEAgLTI2Nyw3ICsyNjcsNyBAQCBIVE1MRGF0YUxpc3RFbGVtZW50KiBI
VE1MT3B0aW9uRWxlbWVudDo6b3duZXJEYXRhTGlzdEVsZW1lbnQoKSBjb25zdAogSFRNTFNlbGVj
dEVsZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQoKSBjb25zdAog
ewogICAgIENvbnRhaW5lck5vZGUqIHNlbGVjdCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAo
c2VsZWN0ICYmICFpc0hUTUxTZWxlY3RFbGVtZW50KHNlbGVjdCkpCisgICAgd2hpbGUgKHNlbGVj
dCAmJiAhaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KHNlbGVjdCkpCiAgICAgICAgIHNlbGVjdCA9IHNl
bGVjdC0+cGFyZW50Tm9kZSgpOwogCiAgICAgaWYgKCFzZWxlY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDQ4MmI4MmY4NWFjNjIyMGUzOTliZTI4Y2Iz
NGQyNGMxYzFhMzJkZGQuLmM5NjMyNjI0NTAwNmI4YjcwNjBlMTgwZmNmYzA5ZTI1YTBlYTJkYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0yMjAsNyAr
MjIwLDcgQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50OjphY3RpdmVTZWxlY3Rpb25FbmRMaXN0SW5k
ZXgoKSBjb25zdAogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjphZGQoSFRNTEVsZW1lbnQqIGVs
ZW1lbnQsIEhUTUxFbGVtZW50KiBiZWZvcmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlm
ICghZWxlbWVudCB8fCAhKGlzSFRNTE9wdGlvbkVsZW1lbnQoKmVsZW1lbnQpIHx8IGVsZW1lbnQt
Pmhhc1RhZ05hbWUoaHJUYWcpKSkKKyAgICBpZiAoIWVsZW1lbnQgfHwgIShpczxIVE1MT3B0aW9u
RWxlbWVudD4oKmVsZW1lbnQpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoaHJUYWcpKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBlbGVtZW50IGlzIHJlZidkIGFuZCBk
ZXJlZidkIHNvIHdlIGRvbid0IGxlYWsgaXQuCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6cmVtb3ZlKEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24pCiBTdHJpbmcg
SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8qIGl0ZW0g
OiBsaXN0SXRlbXMoKSkgewotICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudCgqaXRlbSkp
IHsKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PigqaXRlbSkpIHsKICAgICAgICAg
ICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb24gPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVu
dD4oKml0ZW0pOwogICAgICAgICAgICAgaWYgKG9wdGlvbi5zZWxlY3RlZCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBvcHRpb24udmFsdWUoKTsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcgJnZhbHVlKQogICAgIC8vIEZp
bmQgdGhlIG9wdGlvbiB3aXRoIHZhbHVlKCkgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhcmFtZXRlciBh
bmQgbWFrZSBpdCB0aGUgY3VycmVudCBzZWxlY3Rpb24uCiAgICAgdW5zaWduZWQgb3B0aW9uSW5k
ZXggPSAwOwogICAgIGZvciAoYXV0byogaXRlbSA6IGxpc3RJdGVtcygpKSB7Ci0gICAgICAgIGlm
IChpc0hUTUxPcHRpb25FbGVtZW50KCppdGVtKSkgeworICAgICAgICBpZiAoaXM8SFRNTE9wdGlv
bkVsZW1lbnQ+KCppdGVtKSkgewogICAgICAgICAgICAgaWYgKGRvd25jYXN0PEhUTUxPcHRpb25F
bGVtZW50PigqaXRlbSkudmFsdWUoKSA9PSB2YWx1ZSkgewogICAgICAgICAgICAgICAgIHNldFNl
bGVjdGVkSW5kZXgob3B0aW9uSW5kZXgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM2
Myw3ICszNjMsNyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAj
aWYgIVBMQVRGT1JNKElPUykKICAgICBpZiAoIXVzZXNNZW51TGlzdCgpKQotICAgICAgICByZXR1
cm4gaXNIVE1MT3B0aW9uRWxlbWVudChjaGlsZCkgfHwgaXNIVE1MT3B0R3JvdXBFbGVtZW50KGNo
aWxkKSB8fCB2YWxpZGF0aW9uTWVzc2FnZVNoYWRvd1RyZWVDb250YWlucyhjaGlsZCk7CisgICAg
ICAgIHJldHVybiBpczxIVE1MT3B0aW9uRWxlbWVudD4oY2hpbGQpIHx8IGlzPEhUTUxPcHRHcm91
cEVsZW1lbnQ+KGNoaWxkKSB8fCB2YWxpZGF0aW9uTWVzc2FnZVNoYWRvd1RyZWVDb250YWlucyhj
aGlsZCk7CiAjZW5kaWYKICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTaGFkb3dUcmVlQ29u
dGFpbnMoY2hpbGQpOwogfQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAg
ICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBpdGVtc1RvUmVtb3ZlOwogICAgICAgICBzaXplX3Qg
b3B0aW9uSW5kZXggPSAwOwogICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgewotICAg
ICAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoKml0ZW0pICYmIG9wdGlvbkluZGV4Kysg
Pj0gbmV3TGVuKSB7CisgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCppdGVt
KSAmJiBvcHRpb25JbmRleCsrID49IG5ld0xlbikgewogICAgICAgICAgICAgICAgIEFTU0VSVChp
dGVtLT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGl0ZW1zVG9SZW1vdmUuYXBwZW5k
KGl0ZW0pOwogICAgICAgICAgICAgfQpAQCAtNTIxLDcgKzUyMSw3IEBAIGludCBIVE1MU2VsZWN0
RWxlbWVudDo6bmV4dFZhbGlkSW5kZXgoaW50IGxpc3RJbmRleCwgU2tpcERpcmVjdGlvbiBkaXJl
Y3Rpb24sIGluCiAgICAgaW50IHNpemUgPSBsaXN0SXRlbXMuc2l6ZSgpOwogICAgIGZvciAobGlz
dEluZGV4ICs9IGRpcmVjdGlvbjsgbGlzdEluZGV4ID49IDAgJiYgbGlzdEluZGV4IDwgc2l6ZTsg
bGlzdEluZGV4ICs9IGRpcmVjdGlvbikgewogICAgICAgICAtLXNraXA7Ci0gICAgICAgIGlmICgh
bGlzdEl0ZW1zW2xpc3RJbmRleF0tPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmIGlzSFRNTE9w
dGlvbkVsZW1lbnQobGlzdEl0ZW1zW2xpc3RJbmRleF0pKSB7CisgICAgICAgIGlmICghbGlzdEl0
ZW1zW2xpc3RJbmRleF0tPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmIGlzPEhUTUxPcHRpb25F
bGVtZW50PihsaXN0SXRlbXNbbGlzdEluZGV4XSkpIHsKICAgICAgICAgICAgIGxhc3RHb29kSW5k
ZXggPSBsaXN0SW5kZXg7CiAgICAgICAgICAgICBpZiAoc2tpcCA8PSAwKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNh
dmVMYXN0U2VsZWN0aW9uKCkKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMg
PSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1tpXTsKLSAgICAg
ICAgbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb24uYXBwZW5kKGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxl
bWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpLT5zZWxlY3RlZCgp
KTsKKyAgICAgICAgbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb24uYXBwZW5kKGlzPEhUTUxPcHRpb25F
bGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkt
PnNlbGVjdGVkKCkpOwogICAgIH0KIH0KIApAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6OnNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KGludCBpbmRleCkKICAg
ICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSFRN
TEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1tpXTsKLSAgICAgICAgbV9jYWNoZWRTdGF0ZUZvckFj
dGl2ZVNlbGVjdGlvbi5hcHBlbmQoaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSAmJiBkb3du
Y2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCktPnNlbGVjdGVkKCkpOworICAgICAgICBt
X2NhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uLmFwcGVuZChpczxIVE1MT3B0aW9uRWxlbWVu
dD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpLT5zZWxl
Y3RlZCgpKTsKICAgICB9CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCB2b2lkIEhUTUxTZWxlY3RF
bGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKGJvb2wgZGVzZWxlY3RPdGhlck9wdGlvbnMp
CiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gaXRlbXNbaV07Ci0gICAgICAgIGlmICghaXNIVE1MT3B0
aW9uRWxlbWVudChlbGVtZW50KSB8fCBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1l
bnQpLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQorICAgICAgICBpZiAoIWlzPEhUTUxPcHRpb25F
bGVtZW50PihlbGVtZW50KSB8fCBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQp
LmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgaWYgKGkgPj0gc3RhcnQgJiYgaSA8PSBlbmQpCkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKCkKICAgICBib29sIGZpcmVPbkNoYW5n
ZSA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsr
aSkgewogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGl0ZW1zW2ldOwotICAgICAgICBi
b29sIHNlbGVjdGVkID0gaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSAmJiBkb3duY2FzdDxI
VE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnNlbGVjdGVkKCk7CisgICAgICAgIGJvb2wgc2Vs
ZWN0ZWQgPSBpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9w
dGlvbkVsZW1lbnQ+KCplbGVtZW50KS5zZWxlY3RlZCgpOwogICAgICAgICBpZiAoc2VsZWN0ZWQg
IT0gbV9sYXN0T25DaGFuZ2VTZWxlY3Rpb25baV0pCiAgICAgICAgICAgICBmaXJlT25DaGFuZ2Ug
PSB0cnVlOwogICAgICAgICBtX2xhc3RPbkNoYW5nZVNlbGVjdGlvbltpXSA9IHNlbGVjdGVkOwpA
QCAtNzk4LDcgKzc5OCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVt
cyhib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzKSBjb25zdAogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoY3VycmVudCkpIHsKKyAgICAg
ICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihjdXJyZW50KSkgewogICAgICAgICAgICAgbV9s
aXN0SXRlbXMuYXBwZW5kKGN1cnJlbnQpOwogCiAgICAgICAgICAgICBpZiAodXBkYXRlU2VsZWN0
ZWRTdGF0ZXMgJiYgIW1fbXVsdGlwbGUpIHsKQEAgLTg0MCw3ICs4NDAsNyBAQCBpbnQgSFRNTFNl
bGVjdEVsZW1lbnQ6OnNlbGVjdGVkSW5kZXgoKSBjb25zdAogICAgIGNvbnN0IFZlY3RvcjxIVE1M
RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBp
dGVtc1tpXTsKLSAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkpIHsKKyAg
ICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAg
aWYgKGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkuc2VsZWN0ZWQoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgICArK2luZGV4OwpAQCAtODc2
LDcgKzg3Niw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdE9wdGlvbihpbnQgb3B0
aW9uSW5kZXgsIFNlbGVjdE9wdGlvbkZsYWdzIGZsYWdzKQogICAgIEhUTUxFbGVtZW50KiBlbGVt
ZW50ID0gbnVsbHB0cjsKICAgICBpZiAobGlzdEluZGV4ID49IDApIHsKICAgICAgICAgZWxlbWVu
dCA9IGl0ZW1zW2xpc3RJbmRleF07Ci0gICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGVs
ZW1lbnQpKSB7CisgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpIHsK
ICAgICAgICAgICAgIGlmIChtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4IDwgMCB8fCBzaG91
bGREZXNlbGVjdCkKICAgICAgICAgICAgICAgICBzZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRl
eChsaXN0SW5kZXgpOwogICAgICAgICAgICAgaWYgKG1fYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgg
PCAwIHx8IHNob3VsZERlc2VsZWN0KQpAQCAtOTE4LDcgKzkxOCw3IEBAIGludCBIVE1MU2VsZWN0
RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgoaW50IG9wdGlvbkluZGV4KSBjb25zdAogCiAgICAg
aW50IG9wdGlvbkluZGV4MiA9IC0xOwogICAgIGZvciAoaW50IGxpc3RJbmRleCA9IDA7IGxpc3RJ
bmRleCA8IGxpc3RTaXplOyArK2xpc3RJbmRleCkgewotICAgICAgICBpZiAoaXNIVE1MT3B0aW9u
RWxlbWVudChpdGVtc1tsaXN0SW5kZXhdKSkgeworICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVs
ZW1lbnQ+KGl0ZW1zW2xpc3RJbmRleF0pKSB7CiAgICAgICAgICAgICArK29wdGlvbkluZGV4MjsK
ICAgICAgICAgICAgIGlmIChvcHRpb25JbmRleDIgPT0gb3B0aW9uSW5kZXgpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxpc3RJbmRleDsKQEAgLTkzMSwxMyArOTMxLDEzIEBAIGludCBIVE1MU2Vs
ZWN0RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgoaW50IG9wdGlvbkluZGV4KSBjb25zdAogaW50
IEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0VG9PcHRpb25JbmRleChpbnQgbGlzdEluZGV4KSBjb25z
dAogewogICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygp
OwotICAgIGlmIChsaXN0SW5kZXggPCAwIHx8IGxpc3RJbmRleCA+PSBzdGF0aWNfY2FzdDxpbnQ+
KGl0ZW1zLnNpemUoKSkgfHwgIWlzSFRNTE9wdGlvbkVsZW1lbnQoaXRlbXNbbGlzdEluZGV4XSkp
CisgICAgaWYgKGxpc3RJbmRleCA8IDAgfHwgbGlzdEluZGV4ID49IHN0YXRpY19jYXN0PGludD4o
aXRlbXMuc2l6ZSgpKSB8fCAhaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW1zW2xpc3RJbmRleF0p
KQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICAvLyBBY3R1YWwgaW5kZXggb2Ygb3B0aW9uIG5v
dCBjb3VudGluZyBPUFRHUk9VUCBlbnRyaWVzIHRoYXQgbWF5IGJlIGluIGxpc3QuCiAgICAgaW50
IG9wdGlvbkluZGV4ID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RJbmRleDsgKytp
KSB7Ci0gICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGl0ZW1zW2ldKSkKKyAgICAgICAg
aWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihpdGVtc1tpXSkpCiAgICAgICAgICAgICArK29wdGlv
bkluZGV4OwogICAgIH0KIApAQCAtOTY4LDcgKzk2OCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1l
bnQ6OmRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbihIVE1MRWxlbWVudCogZXhjbHVkZUVs
ZW1lCiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gaXRlbXNbaV07Ci0gICAgICAgIGlmIChlbGVtZW50
ICE9IGV4Y2x1ZGVFbGVtZW50ICYmIGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCkpCisgICAg
ICAgIGlmIChlbGVtZW50ICE9IGV4Y2x1ZGVFbGVtZW50ICYmIGlzPEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KSkKICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxl
bWVudCkuc2V0U2VsZWN0ZWRTdGF0ZShmYWxzZSk7CiAgICAgfQogfQpAQCAtOTc5LDcgKzk3OSw3
IEBAIEZvcm1Db250cm9sU3RhdGUgSFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVGb3JtQ29udHJvbFN0
YXRlKCkgY29uc3QKICAgICBzaXplX3QgbGVuZ3RoID0gaXRlbXMuc2l6ZSgpOwogICAgIEZvcm1D
b250cm9sU3RhdGUgc3RhdGU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIGlmICghaXNIVE1MT3B0aW9uRWxlbWVudChpdGVtc1tpXSkpCisgICAg
ICAgIGlmICghaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW1zW2ldKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRN
TE9wdGlvbkVsZW1lbnQ+KCppdGVtc1tpXSk7CiAgICAgICAgIGlmICghb3B0aW9uLnNlbGVjdGVk
KCkpCkBAIC05OTYsNyArOTk2LDcgQEAgc2l6ZV90IEhUTUxTZWxlY3RFbGVtZW50OjpzZWFyY2hP
cHRpb25zRm9yVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgc2l6ZV90IGxpc3QKICAgICBjb25z
dCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBzaXplX3Qg
bG9vcEVuZEluZGV4ID0gc3RkOjptaW4oaXRlbXMuc2l6ZSgpLCBsaXN0SW5kZXhFbmQpOwogICAg
IGZvciAoc2l6ZV90IGkgPSBsaXN0SW5kZXhTdGFydDsgaSA8IGxvb3BFbmRJbmRleDsgKytpKSB7
Ci0gICAgICAgIGlmICghaXNIVE1MT3B0aW9uRWxlbWVudChpdGVtc1tpXSkpCisgICAgICAgIGlm
ICghaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW1zW2ldKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBpZiAoZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCppdGVtc1tpXSkudmFs
dWUoKSA9PSB2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBpOwpAQCAtMTAxNCw3ICsxMDE0LDcg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3Qg
Rm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaXRlbXNTaXplOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc0hUTUxPcHRp
b25FbGVtZW50KGl0ZW1zW2ldKSkKKyAgICAgICAgaWYgKCFpczxIVE1MT3B0aW9uRWxlbWVudD4o
aXRlbXNbaV0pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGRvd25jYXN0PEhUTUxP
cHRpb25FbGVtZW50PigqaXRlbXNbaV0pLnNldFNlbGVjdGVkU3RhdGUoZmFsc2UpOwogICAgIH0K
QEAgLTEwNjEsNyArMTA2MSw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmFwcGVuZEZvcm1E
YXRhKEZvcm1EYXRhTGlzdCYgbGlzdCwgYm9vbCkKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9
IGl0ZW1zW2ldOwotICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSAmJiBk
b3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnNlbGVjdGVkKCkgJiYgIWRvd25j
YXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkp
IHsKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2Fz
dDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnNlbGVjdGVkKCkgJiYgIWRvd25jYXN0PEhU
TUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKICAg
ICAgICAgICAgIGxpc3QuYXBwZW5kRGF0YShuYW1lLCBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVu
dD4oKmVsZW1lbnQpLnZhbHVlKCkpOwogICAgICAgICAgICAgc3VjY2Vzc2Z1bCA9IHRydWU7CiAg
ICAgICAgIH0KQEAgLTEwODEsNyArMTA4MSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJl
c2V0KCkKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1tpXTsKLSAgICAgICAgaWYgKCFpc0hU
TUxPcHRpb25FbGVtZW50KGVsZW1lbnQpKQorICAgICAgICBpZiAoIWlzPEhUTUxPcHRpb25FbGVt
ZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEhUTUxPcHRp
b25FbGVtZW50JiBvcHRpb24gPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQp
OwpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlU2Vs
ZWN0ZWRTdGF0ZShpbnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWYKICAgICBib29s
IG11bHRpU2VsZWN0ID0gbV9tdWx0aXBsZSAmJiBtdWx0aSAmJiAhc2hpZnQ7CiAKICAgICBIVE1M
RWxlbWVudCogY2xpY2tlZEVsZW1lbnQgPSBsaXN0SXRlbXMoKVtsaXN0SW5kZXhdOwotICAgIGlm
IChpc0hUTUxPcHRpb25FbGVtZW50KGNsaWNrZWRFbGVtZW50KSkgeworICAgIGlmIChpczxIVE1M
T3B0aW9uRWxlbWVudD4oY2xpY2tlZEVsZW1lbnQpKSB7CiAgICAgICAgIC8vIEtlZXAgdHJhY2sg
b2Ygd2hldGhlciBhbiBhY3RpdmUgc2VsZWN0aW9uIChsaWtlIGR1cmluZyBkcmFnCiAgICAgICAg
IC8vIHNlbGVjdGlvbiksIHNob3VsZCBzZWxlY3Qgb3IgZGVzZWxlY3QuCiAgICAgICAgIGlmIChk
b3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmNsaWNrZWRFbGVtZW50KS5zZWxlY3RlZCgpICYm
IG11bHRpU2VsZWN0KQpAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6dXBkYXRlU2VsZWN0ZWRTdGF0ZShpbnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNo
aWYKICAgICAgICAgc2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoc2VsZWN0ZWRJbmRleCgp
KTsKIAogICAgIC8vIFNldCB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBjbGlja2VkIG9wdGlv
bi4KLSAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChjbGlja2VkRWxlbWVudCkgJiYgIWRvd25j
YXN0PEhUTUxPcHRpb25FbGVtZW50PigqY2xpY2tlZEVsZW1lbnQpLmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpKQorICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oY2xpY2tlZEVsZW1lbnQpICYm
ICFkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmNsaWNrZWRFbGVtZW50KS5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSkKICAgICAgICAgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpjbGlj
a2VkRWxlbWVudCkuc2V0U2VsZWN0ZWRTdGF0ZSh0cnVlKTsKIAogICAgIC8vIElmIHRoZXJlIHdh
cyBubyBzZWxlY3RlZEluZGV4KCkgZm9yIHRoZSBwcmV2aW91cyBpbml0aWFsaXphdGlvbiwgb3Ig
SWYKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hE
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIG1fYWN0aXZlU2Vs
ZWN0aW9uU3RhdGUgPSAhbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZTsKICAgICAgICAgICAgIEFTU0VS
VChtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4ID49IDApOwogICAgICAgICAgICAgQVNTRVJUKG1f
YWN0aXZlU2VsZWN0aW9uRW5kSW5kZXggPCBzdGF0aWNfY2FzdDxpbnQ+KGxpc3RJdGVtcy5zaXpl
KCkpKTsKLSAgICAgICAgICAgIEFTU0VSVChpc0hUTUxPcHRpb25FbGVtZW50KCpsaXN0SXRlbXNb
bV9hY3RpdmVTZWxlY3Rpb25FbmRJbmRleF0pKTsKKyAgICAgICAgICAgIEFTU0VSVChpczxIVE1M
T3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtc1ttX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4XSkpOwog
ICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRTdGF0ZShtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4
LCB0cnVlIC8qbXVsdGkqLywgZmFsc2UgLypzaGlmdCovKTsKICAgICAgICAgICAgIGxpc3RCb3hP
bkNoYW5nZSgpOwogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CkBAIC0x
NTM5LDcgKzE1MzksNyBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxhc3RTZWxlY3RlZExpc3RJ
bmRleCgpIGNvbnN0CiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlz
dEl0ZW1zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IGl0ZW1zLnNpemUoKTsgaTspIHsKICAgICAg
ICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1stLWldOwotICAgICAgICBpZiAoaXNIVE1M
T3B0aW9uRWxlbWVudChlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVs
ZW1lbnQpLnNlbGVjdGVkKCkpCisgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxl
bWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KS5zZWxlY3RlZCgp
KQogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgfQogICAgIHJldHVybiAtMTsKQEAgLTE1NjAs
NyArMTU2MCw3IEBAIFN0cmluZyBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9uQXRJbmRleChpbnQg
aW5kZXgpIGNvbnN0CiAgICAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGl0ZW1zID0gbGlz
dEl0ZW1zKCk7CiAgICAgCiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtc1tpbmRleF07
Ci0gICAgaWYgKCFpc0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpIHx8IGRvd25jYXN0PEhUTUxP
cHRpb25FbGVtZW50PigqZWxlbWVudCkuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCisgICAgaWYg
KCFpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgfHwgZG93bmNhc3Q8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCplbGVtZW50KS5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1l
bnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKIH0KQEAgLTE1OTYsNyArMTU5
Niw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjY2Vzc0tleVNldFNlbGVjdGVkSW5kZXgo
aW50IGluZGV4KQogICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xpc3RJbmRleChpbmRleCk7
CiAgICAgaWYgKGxpc3RJbmRleCA+PSAwKSB7CiAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50
ID0gaXRlbXNbbGlzdEluZGV4XTsKLSAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoZWxl
bWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkgewog
ICAgICAgICAgICAgaWYgKGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkuc2Vs
ZWN0ZWQoKSkKICAgICAgICAgICAgICAgICBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVs
ZW1lbnQpLnNldFNlbGVjdGVkU3RhdGUoZmFsc2UpOwogICAgICAgICAgICAgZWxzZQpAQCAtMTYx
OCw3ICsxNjE4LDcgQEAgdW5zaWduZWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxlbmd0aCgpIGNvbnN0
CiAKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoaXRlbXNbaV0pKQorICAgICAgICBpZiAoaXM8SFRN
TE9wdGlvbkVsZW1lbnQ+KGl0ZW1zW2ldKSkKICAgICAgICAgICAgICsrb3B0aW9uczsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KaW5kZXggZWNhMjVlZTMwMmY2MWM5ZTAz
YmI0NmI5NmY2ZDcxMjgzZTlkOTM0Ni4uMTJhNWMwZjc3NTU5OWM5MGQwYzM4NjEwMGU4NTU4MzQ1
ZDNhNTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KQEAgLTIyLDcgKzIyLDcg
QEAgYmlnIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGJsb2NrcXVvdGUgaW50ZXJmYWNlTmFt
ZT1IVE1MUXVvdGVFbGVtZW50CiBib2R5IGdlbmVyYXRlVHlwZUhlbHBlcnMKIGJyIGludGVyZmFj
ZU5hbWU9SFRNTEJSRWxlbWVudAotYnV0dG9uIGNvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudAor
YnV0dG9uIGNvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCwgZ2VuZXJhdGVUeXBlSGVscGVycwog
Y2FudmFzIGdlbmVyYXRlVHlwZUhlbHBlcnMKIGNhcHRpb24gaW50ZXJmYWNlTmFtZT1IVE1MVGFi
bGVDYXB0aW9uRWxlbWVudCwgZ2VuZXJhdGVUeXBlSGVscGVycwogY2VudGVyIGludGVyZmFjZU5h
bWU9SFRNTEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAKaW5kZXgg
NmVkYzBlOTVmNTgzODNlZGFhMTY2YzllNjZkOWU5MGRjZTZlZTdmMS4uOGE1ZTg4NTEwZTE2Yjlk
ZmZiM2U0NmU4NjU4MGNjMDQxMGU4NTc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9SYWRpb0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0
VHlwZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBSYWRpb0lucHV0VHlwZTo6aGFuZGxlS2V5
ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICBpZiAoaXNIVE1MRm9ybUVs
ZW1lbnQobm9kZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgLy8gTG9vayBmb3IgbW9y
ZSByYWRpbyBidXR0b25zLgotICAgICAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChub2RlKSkK
KyAgICAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXRFbGVtZW50ID0g
ZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4obm9kZSk7CiAgICAgICAgIGlmIChpbnB1dEVsZW1l
bnQtPmZvcm0oKSAhPSBlbGVtZW50KCkuZm9ybSgpKQpAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wg
UmFkaW9JbnB1dFR5cGU6OmlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCogZXZlbnQp
IGNvbnN0CiAgICAgLy8gTmV2ZXIgYWxsb3cga2V5Ym9hcmQgdGFiYmluZyB0byBsZWF2ZSB5b3Ug
aW4gdGhlIHNhbWUgcmFkaW8gZ3JvdXAuICBBbHdheXMKICAgICAvLyBza2lwIGFueSBvdGhlciBl
bGVtZW50cyBpbiB0aGUgZ3JvdXAuCiAgICAgRWxlbWVudCogY3VycmVudEZvY3VzZWROb2RlID0g
ZWxlbWVudCgpLmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKTsKLSAgICBpZiAoY3VycmVudEZv
Y3VzZWROb2RlICYmIGlzSFRNTElucHV0RWxlbWVudChjdXJyZW50Rm9jdXNlZE5vZGUpKSB7Cisg
ICAgaWYgKGN1cnJlbnRGb2N1c2VkTm9kZSAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihjdXJyZW50
Rm9jdXNlZE5vZGUpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGZvY3VzZWRJbnB1dCA9
IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpjdXJyZW50Rm9jdXNlZE5vZGUpOwogICAgICAg
ICBpZiAoZm9jdXNlZElucHV0LmlzUmFkaW9CdXR0b24oKSAmJiBmb2N1c2VkSW5wdXQuZm9ybSgp
ID09IGVsZW1lbnQoKS5mb3JtKCkgJiYgZm9jdXNlZElucHV0Lm5hbWUoKSA9PSBlbGVtZW50KCku
bmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDkzOTA1NTcwODYy
NWJkNmNkNzlhYTdmNDAzNmJmMDIzZTBlMTZkNTkuLmE3YmUyMWZhZjc3MzdlZDliYmNjZGM1ZjE5
OTY3ZmVkNzkzODVkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGJvb2wgaGFz
SW1wbGllZEVuZFRhZyhjb25zdCBIVE1MU3RhY2tJdGVtKiBpdGVtKQogICAgIHJldHVybiBpdGVt
LT5oYXNUYWdOYW1lKGRkVGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKGR0VGFnKQog
ICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKGxpVGFnKQotICAgICAgICB8fCBpc0hUTUxPcHRp
b25FbGVtZW50KGl0ZW0tPm5vZGUoKSkKKyAgICAgICAgfHwgaXM8SFRNTE9wdGlvbkVsZW1lbnQ+
KGl0ZW0tPm5vZGUoKSkKICAgICAgICAgfHwgaXNIVE1MT3B0R3JvdXBFbGVtZW50KGl0ZW0tPm5v
ZGUoKSkKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShwVGFnKQogICAgICAgICB8fCBpdGVt
LT5oYXNUYWdOYW1lKHJiVGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RWxlbWVudFN0YWNrLmNwcAppbmRleCBlNTgxODQxZjlmNDdkNWQwMjlhZjVlZjNlMGI4YmJiMzM3
MjJkM2M4Li5hZGEyMGNkYWEzMjMzMjY3ZWM0OWZmODM4MWU3MDAyYTU0NDc3ZTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtMTIw
LDcgKzEyMCw3IEBAIGlubGluZSBib29sIGlzQnV0dG9uU2NvcGVNYXJrZXIoSFRNTFN0YWNrSXRl
bSogaXRlbSkKIAogaW5saW5lIGJvb2wgaXNTZWxlY3RTY29wZU1hcmtlcihIVE1MU3RhY2tJdGVt
KiBpdGVtKQogewotICAgIHJldHVybiAhaXNIVE1MT3B0R3JvdXBFbGVtZW50KGl0ZW0tPm5vZGUo
KSkgJiYgIWlzSFRNTE9wdGlvbkVsZW1lbnQoaXRlbS0+bm9kZSgpKTsKKyAgICByZXR1cm4gIWlz
PEhUTUxPcHRHcm91cEVsZW1lbnQ+KGl0ZW0tPm5vZGUoKSkgJiYgIWlzPEhUTUxPcHRpb25FbGVt
ZW50PihpdGVtLT5ub2RlKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBiOTM2OGRmODAzNzYzNmRiMmRkNjU3ZDhhOWEz
ODA1NzQ3N2ZiMjk0Li41ODA1Y2YwYzk5MGJjZmFiMzJkMTk3ZmRjYTMwMzRiZDQ2ZTY1MTU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAg
LTg2OCw3ICs4NjgsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9y
SW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcgfHwgdG9rZW4tPm5hbWUoKSA9PSBv
cHRpb25UYWcpIHsKLSAgICAgICAgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQobV90cmVlLmN1cnJl
bnRTdGFja0l0ZW0oKS0+bm9kZSgpKSkgeworICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1l
bnQ+KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkpIHsKICAgICAgICAgICAgIEF0
b21pY0hUTUxUb2tlbiBlbmRPcHRpb24oSFRNTFRva2VuOjpFbmRUYWcsIG9wdGlvblRhZy5sb2Nh
bE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKCZlbmRPcHRpb24pOwogICAgICAg
ICB9CkBAIC0xMzU5LDcgKzEzNTksNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gb3B0aW9uVGFnKSB7Ci0gICAgICAg
ICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5u
b2RlKCkpKSB7CisgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fdHJlZS5j
dXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBBdG9taWNIVE1M
VG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkp
OwogICAgICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoJmVuZE9wdGlvbik7CiAgICAgICAgICAg
ICB9CkBAIC0xMzY3LDcgKzEzNjcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcpIHsKLSAgICAg
ICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCkt
Pm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4obV90cmVl
LmN1cnJlbnRTdGFja0l0ZW0oKS0+bm9kZSgpKSkgewogICAgICAgICAgICAgICAgIEF0b21pY0hU
TUxUb2tlbiBlbmRPcHRpb24oSFRNTFRva2VuOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUo
KSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZygmZW5kT3B0aW9uKTsKICAgICAgICAg
ICAgIH0KQEAgLTIyMzMsNyArMjIzMyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RW5kVGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJ
blNlbGVjdDoKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2Rl
OjpJblNlbGVjdCB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3RJ
blRhYmxlKTsKICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcpIHsKLSAg
ICAgICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVt
KCktPm5vZGUoKSkgJiYgbV90cmVlLm9uZUJlbG93VG9wKCkgJiYgaXNIVE1MT3B0R3JvdXBFbGVt
ZW50KG1fdHJlZS5vbmVCZWxvd1RvcCgpLT5ub2RlKCkpKQorICAgICAgICAgICAgaWYgKGlzPEhU
TUxPcHRpb25FbGVtZW50PihtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpICYmIG1f
dHJlZS5vbmVCZWxvd1RvcCgpICYmIGlzSFRNTE9wdEdyb3VwRWxlbWVudChtX3RyZWUub25lQmVs
b3dUb3AoKS0+bm9kZSgpKSkKICAgICAgICAgICAgICAgICBwcm9jZXNzRmFrZUVuZFRhZyhvcHRp
b25UYWcpOwogICAgICAgICAgICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChtX3RyZWUuY3Vy
cmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgbV90cmVlLm9wZW5F
bGVtZW50cygpLT5wb3AoKTsKQEAgLTIyNDMsNyArMjI0Myw3IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gb3B0aW9uVGFn
KSB7Ci0gICAgICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChtX3RyZWUuY3VycmVudFN0
YWNrSXRlbSgpLT5ub2RlKCkpKSB7CisgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1l
bnQ+KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkpIHsKICAgICAgICAgICAgICAg
ICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCmluZGV4IDU5ZjJkMDkxY2FlN2M0ZTBmMDU4YWIz
N2VlMzY5NDBjMjI1ODYyMzQuLmNlN2RlOWJjY2FhZDk1OWE5Y2MwNGU1MDk3MzllNmRlMzhjNmYy
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudFR5cGVzLmNwcApAQCAtNjIsNyArNjIsNyBAQCBNZWRpYUNvbnRyb2xFbGVtZW50
VHlwZSBtZWRpYUNvbnRyb2xFbGVtZW50VHlwZShOb2RlKiBub2RlKQogewogICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG5vZGUtPmlzTWVkaWFDb250cm9sRWxlbWVudCgpKTsK
ICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobm9kZSk7Ci0gICAgaWYg
KGlzSFRNTElucHV0RWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVu
dD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xJbnB1
dEVsZW1lbnQqPihlbGVtZW50KS0+ZGlzcGxheVR5cGUoKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8TWVkaWFDb250cm9sRGl2RWxlbWVudCo+KGVsZW1lbnQpLT5kaXNwbGF5VHlwZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggZTA2YjU2ZDcwNzEx
NjcxNjc0ZjRmYWEzZjhiZDgwMjNkMDllZTRmOS4uNTBhYjgxNDk2YjA1OTI1NmI0NGU2MWIyZWQy
YTFhY2NjZTlhNTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3Bw
CkBAIC0xODksNyArMTg5LDcgQEAgUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1p
c3Npb246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEEKICAgICAgICAgSFRN
TEVsZW1lbnQmIGVsZW1lbnQgPSBjb250cm9sLmFzSFRNTEVsZW1lbnQoKTsKICAgICAgICAgaWYg
KCFlbGVtZW50LmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICAgICAgY29udHJvbC5h
cHBlbmRGb3JtRGF0YSgqZG9tRm9ybURhdGEsIGlzTXVsdGlQYXJ0Rm9ybSk7Ci0gICAgICAgIGlm
IChpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1
dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICAgICAgaWYg
KGlucHV0LmlzVGV4dEZpZWxkKCkpIHsKICAgICAgICAgICAgICAgICBmb3JtVmFsdWVzLmFwcGVu
ZChzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+KGlucHV0Lm5hbWUoKS5zdHJpbmcoKSwgaW5wdXQu
dmFsdWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggY2M0MDM3
YTdlOTE3ZjRjYTlkZjVkMmY1ZWE4Mzk2YWQzODk0ZWU0NS4uODk0NmNmZWU3ODZlNmUxZmJiNmRj
YjkwMjMwNDJjZDM2ZmIxZTE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CkBAIC0xMDMzLDcgKzEwMzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRPcGVuZXIoRnJhbWUq
IG9wZW5lcikKIHZvaWQgRnJhbWVMb2FkZXI6OmhhbmRsZUZhbGxiYWNrQ29udGVudCgpCiB7CiAg
ICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IG1fZnJhbWUub3duZXJFbGVtZW50KCk7
Ci0gICAgaWYgKCFvd25lciB8fCAhaXNIVE1MT2JqZWN0RWxlbWVudChvd25lcikpCisgICAgaWYg
KCFvd25lciB8fCAhaXM8SFRNTE9iamVjdEVsZW1lbnQ+KG93bmVyKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50Pigqb3duZXIpLnJlbmRlckZhbGxiYWNr
Q29udGVudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggOTc1
NDk3YWRjNWExYmQyYWNlNDJkYTgwMTJkMTVlMjRjNGUxMDlkNC4uZjhmNGY0M2MyNzEwNWVhMjZl
NjJjNzc5MGRhYjNiZjU4MGJhZjM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIu
Y3BwCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5n
QmVmb3JlTG9hZEV2ZW50KCkKICAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCgqdGhp
cyk7CiAgICAgbV9oYXNQZW5kaW5nTG9hZEV2ZW50ID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKGlz
SFRNTE9iamVjdEVsZW1lbnQoZWxlbWVudCgpKSkKKyAgICBpZiAoaXM8SFRNTE9iamVjdEVsZW1l
bnQ+KGVsZW1lbnQoKSkpCiAgICAgICAgIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVt
ZW50KCkpLnJlbmRlckZhbGxiYWNrQ29udGVudCgpOwogCiAgICAgLy8gT25seSBjb25zaWRlciB1
cGRhdGluZyB0aGUgcHJvdGVjdGlvbiByZWYtY291bnQgb2YgdGhlIEVsZW1lbnQgaW1tZWRpYXRl
bHkgYmVmb3JlIHJldHVybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5j
cHAKaW5kZXggOTdiZGFjMTc0YzZmYjE2ZGNkZWI1ZTUwMWE5OGUzZTMwZTdmMWU0YS4uZDk0ZDcy
YTgzM2FlNWM3NTk5ZWRlMzhmYTRiYTRlNTVjNDIwNDAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3ViZnJhbWVMb2FkZXIuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgYm9vbCBTdWJmcmFtZUxv
YWRlcjo6cmVxdWVzdE9iamVjdChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBvd25lckVsZW1lbnQs
IGNvbnN0IFMKICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCiAgICAgICAgIGNvbXBsZXRlZFVSTCA9
IGNvbXBsZXRlVVJMKHVybCk7CiAKLSAgICBib29sIGhhc0ZhbGxiYWNrQ29udGVudCA9IGlzSFRN
TE9iamVjdEVsZW1lbnQob3duZXJFbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVu
dD4ob3duZXJFbGVtZW50KS5oYXNGYWxsYmFja0NvbnRlbnQoKTsKKyAgICBib29sIGhhc0ZhbGxi
YWNrQ29udGVudCA9IGlzPEhUTUxPYmplY3RFbGVtZW50Pihvd25lckVsZW1lbnQpICYmIGRvd25j
YXN0PEhUTUxPYmplY3RFbGVtZW50Pihvd25lckVsZW1lbnQpLmhhc0ZhbGxiYWNrQ29udGVudCgp
OwogCiAgICAgYm9vbCB1c2VGYWxsYmFjazsKICAgICBpZiAoc2hvdWxkVXNlUGx1Z2luKGNvbXBs
ZXRlZFVSTCwgbWltZVR5cGUsIG93bmVyRWxlbWVudC5zaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1h
Z2VzKCksIGhhc0ZhbGxiYWNrQ29udGVudCwgdXNlRmFsbGJhY2spKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4
IGU4NDhlM2JkZjI5Njk2MjU4NjNhZTQwNDBhNjYxYTY2YmQ2NjI4ZjYuLmQxMjIwODNiZjhiOGE2
M2Y3ZDRiYTE4MmZkZjAzYWQzOGRhZGQzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC01MTYsNyArNTE2LDcg
QEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5v
ZGVzU2l6ZTsgKytpKSB7CiAgICAgICAgIE5vZGUmIG5vZGUgPSAqbm9kZXNbaV07CiAgICAgICAg
IEZyYW1lKiBjaGlsZEZyYW1lOwotICAgICAgICBpZiAoKGlzSFRNTEZyYW1lRWxlbWVudChub2Rl
KSB8fCBpc0hUTUxJRnJhbWVFbGVtZW50KG5vZGUpIHx8IGlzSFRNTE9iamVjdEVsZW1lbnQobm9k
ZSkpCisgICAgICAgIGlmICgoaXM8SFRNTEZyYW1lRWxlbWVudD4obm9kZSkgfHwgaXM8SFRNTElG
cmFtZUVsZW1lbnQ+KG5vZGUpIHx8IGlzPEhUTUxPYmplY3RFbGVtZW50Pihub2RlKSkKICAgICAg
ICAgICAgICYmIChjaGlsZEZyYW1lID0gdG9IVE1MRnJhbWVPd25lckVsZW1lbnQobm9kZSkuY29u
dGVudEZyYW1lKCkpKSB7CiAgICAgICAgICAgICBpZiAoZnJhbWVGaWx0ZXIgJiYgIWZyYW1lRmls
dGVyKCpjaGlsZEZyYW1lKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmNwcAppbmRleCBkMzJkMzY5ZGJjOTE5NDQ1YWEwM2Q0ZDZjNTA1OWY1ZjNmMjc3MjYwLi4z
YTg0YWQ2OTcxNjM2ZGE0ZDI0NjRhYTg3YzU1MDA1MWNiMTE1MzU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwCkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBDaHJvbWU6OnNldFRvb2xUaXAoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIGlmICh0b29sVGlwLmlzRW1wdHkoKSAmJiBtX3Bh
Z2Uuc2V0dGluZ3MoKS5zaG93c1VSTHNJblRvb2xUaXBzKCkpIHsKICAgICAgICAgaWYgKEVsZW1l
bnQqIGVsZW1lbnQgPSByZXN1bHQuaW5uZXJOb25TaGFyZWRFbGVtZW50KCkpIHsKICAgICAgICAg
ICAgIC8vIEdldCB0b29sdGlwIHJlcHJlc2VudGluZyBmb3JtIGFjdGlvbiwgaWYgcmVsZXZhbnQK
LSAgICAgICAgICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAg
ICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgICAg
IEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmVs
ZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChpbnB1dC5pc1N1Ym1pdEJ1dHRvbigpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBpbnB1dC5mb3Jt
KCkpIHsKQEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIENocm9tZTo6c2V0VG9vbFRpcChjb25zdCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgLy8gTGFzdGx5LCBmb3IgPGlucHV0IHR5cGU9ImZp
bGUiPiB0aGF0IGFsbG93IG11bHRpcGxlIGZpbGVzLCB3ZSdsbCBjb25zaWRlciBhIHRvb2x0aXAg
Zm9yIHRoZSBzZWxlY3RlZCBmaWxlbmFtZXMKICAgICBpZiAodG9vbFRpcC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSByZXN1bHQuaW5uZXJOb25TaGFyZWRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpIHsK
KyAgICAgICAgICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkgewogICAgICAg
ICAgICAgICAgIHRvb2xUaXAgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCku
ZGVmYXVsdFRvb2xUaXAoKTsKIAogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
b2J0YWluIHRleHQgZGlyZWN0aW9uIG9mIHRvb2x0aXAgZnJvbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCmluZGV4IGNlZjE4MWY4MjNkMDg2ZDhmMDNjZjQ4NjY2M2I4OGE5Yzc0NTk3
NWMuLmQ5NGU0MDZkZDM5Njk5YThiODUyMTcxZTE4ZTM4NWU2ZTJiODk0NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEyNjcsNyArMTI2Nyw3IEBAIEZyYW1lKiBFdmVu
dEhhbmRsZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShOb2RlKiBub2RlKQogI2lmIEVOQUJMRShD
VVJTT1JfU1VQUE9SVCkKIHN0YXRpYyBib29sIGlzU3VibWl0SW1hZ2UoTm9kZSogbm9kZSkKIHsK
LSAgICByZXR1cm4gbm9kZSAmJiBpc0hUTUxJbnB1dEVsZW1lbnQobm9kZSkgJiYgZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oKm5vZGUpLmlzSW1hZ2VCdXR0b24oKTsKKyAgICByZXR1cm4gbm9k
ZSAmJiBpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Pigqbm9kZSkuaXNJbWFnZUJ1dHRvbigpOwogfQogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IG5vZGUncyBlZGl0YWJsZSBibG9jayBpcyBub3QgY3VycmVudCBmb2N1c2VkIGZvciBlZGl0aW5n
CkBAIC0xNzYxLDcgKzE3NjEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVz
c0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3VzZQogICAgICAgICAv
LyBJZiBhIG1vdXNlIGV2ZW50IGhhbmRsZXIgY2hhbmdlcyB0aGUgaW5wdXQgZWxlbWVudCB0eXBl
IHRvIG9uZSB0aGF0IGhhcyBhIHdpZGdldCBhc3NvY2lhdGVkLAogICAgICAgICAvLyB3ZSdkIGxp
a2UgdG8gRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQgdG8gcGFzcyB0aGUgZXZl
bnQgdG8gdGhlIHdpZGdldCBhbmQgdGh1cyB0aGUKICAgICAgICAgLy8gZXZlbnQgdGFyZ2V0IG5v
ZGUgY2FuJ3Qgc3RpbGwgYmUgdGhlIHNoYWRvdyBub2RlLgotICAgICAgICBpZiAobW91c2VFdmVu
dC50YXJnZXROb2RlKCktPmlzU2hhZG93Um9vdCgpICYmIGlzSFRNTElucHV0RWxlbWVudCh0b1No
YWRvd1Jvb3QobW91c2VFdmVudC50YXJnZXROb2RlKCkpLT5ob3N0RWxlbWVudCgpKSkKKyAgICAg
ICAgaWYgKG1vdXNlRXZlbnQudGFyZ2V0Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSAmJiBpczxIVE1M
SW5wdXRFbGVtZW50Pih0b1NoYWRvd1Jvb3QobW91c2VFdmVudC50YXJnZXROb2RlKCkpLT5ob3N0
RWxlbWVudCgpKSkKICAgICAgICAgICAgIG1vdXNlRXZlbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkt
PnByZXBhcmVNb3VzZUV2ZW50KEhpdFRlc3RSZXF1ZXN0KCksIGRvY3VtZW50UG9pbnQsIHBsYXRm
b3JtTW91c2VFdmVudCk7CiAKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggYTAzYWEwZDZm
ZWRkODRkYjcxOTY4OWNmNzhiMWZiODE1NGJkMThkYS4uZjdiZDcyMjE5NTNmMTkxMTk0NDBmNWE3
OGM4MzMwMzVhOTczNmZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cApAQCAtNTc0LDcgKzU3NCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyU2VsZWN0aW9uSWZOZWVkZWQo
RnJhbWUqIG9sZEZvY3VzZWRGcmFtZSwgRnJhbWUqIG5ld0ZvY3VzZWRGcmFtCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBpZiAoTm9kZSogc2hhZG93QW5jZXN0b3JOb2Rl
ID0gcm9vdC0+ZGVwcmVjYXRlZFNoYWRvd0FuY2VzdG9yTm9kZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoc2hhZG93QW5jZXN0b3JOb2RlKSAmJiAhaXNIVE1M
VGV4dEFyZWFFbGVtZW50KHNoYWRvd0FuY2VzdG9yTm9kZSkpCisgICAgICAgICAgICAgICAgaWYg
KCFpczxIVE1MSW5wdXRFbGVtZW50PihzaGFkb3dBbmNlc3Rvck5vZGUpICYmICFpczxIVE1MVGV4
dEFyZWFFbGVtZW50PihzaGFkb3dBbmNlc3Rvck5vZGUpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCBmNWEwZGRlYmQyNGNjNmJiOGQ5ZWVhMDcyMTMwZTI0ZTFhZGQyOGYzLi5kZjZmZWU0
NTA1NTk2MTk1NTM4ZGQzNjk3MzAwYzEyZjFiY2E5YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0xNDE0LDcgKzE0MTQsNyBAQCB2b2lkIEZyYW1lVmlldzo6YWRkRW1iZWRkZWRP
YmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1iZWRkZWRPYmplY3QpCiAgICAg
ICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNo
U2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+KCk7CiAKICAgICBIVE1MRnJhbWVPd25lckVsZW1l
bnQmIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwotICAgIGlm
IChpc0hUTUxPYmplY3RFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTEVtYmVkRWxlbWVudChlbGVt
ZW50KSkgeworICAgIGlmIChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRN
TEVtYmVkRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgLy8gVGVsbCB0aGUgRE9NIGVsZW1l
bnQgdGhhdCBpdCBuZWVkcyBhIHdpZGdldCB1cGRhdGUuCiAgICAgICAgIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQmIHBsdWdpbkVsZW1lbnQgPSB0b0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoZWxlbWVu
dCk7CiAgICAgICAgIGlmICghcGx1Z2luRWxlbWVudC5uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZSgp
KQpAQCAtMjc4OCw3ICsyNzg4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2Jq
ZWN0KFJlbmRlckVtYmVkZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVjdCkKICAgICBIVE1MRnJhbWVP
d25lckVsZW1lbnQmIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgp
OwogCiAgICAgaWYgKGVtYmVkZGVkT2JqZWN0LmlzU25hcHNob3R0ZWRQbHVnSW4oKSkgewotICAg
ICAgICBpZiAoaXNIVE1MT2JqZWN0RWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxFbWJlZEVsZW1l
bnQoZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50
KSB8fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgSFRNTFBs
dWdJbkltYWdlRWxlbWVudCYgcGx1Z2luRWxlbWVudCA9IHRvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dChlbGVtZW50KTsKICAgICAgICAgICAgIHBsdWdpbkVsZW1lbnQuY2hlY2tTbmFwc2hvdFN0YXR1
cygpOwogICAgICAgICB9CkBAIC0yNzk5LDcgKzI3OTksNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBk
YXRlRW1iZWRkZWRPYmplY3QoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQog
CiAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgdHVybiBpbnRvIGEgcmVhbCB2aXJ0dWFsIGRpc3Bh
dGNoIGlmIHdlIGRlZmluZWQKICAgICAvLyB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRp
b24pIG9uIEhUTUxFbGVtZW50LgotICAgIGlmIChpc0hUTUxPYmplY3RFbGVtZW50KGVsZW1lbnQp
IHx8IGlzSFRNTEVtYmVkRWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxBcHBsZXRFbGVtZW50KGVs
ZW1lbnQpKSB7CisgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSB8fCBpczxI
VE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVu
dCkpIHsKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z2luRWxlbWVudCA9IHRv
SFRNTFBsdWdJbkltYWdlRWxlbWVudChlbGVtZW50KTsKICAgICAgICAgaWYgKHBsdWdpbkVsZW1l
bnQubmVlZHNDaGVja0ZvclNpemVDaGFuZ2UoKSkgewogICAgICAgICAgICAgcGx1Z2luRWxlbWVu
dC5jaGVja1NuYXBzaG90U3RhdHVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
Y3BwCmluZGV4IDg5MDkzOGMzNzRlZmExMjNhNzFiZjg3NDNjN2U4ZjhkYzRjMGYxNmMuLjhjYzY4
ZTk5OTAzMjA1Y2NkN2M4ZTg1ODVmMzI2NjJlNjM1M2IwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEln
bm9yZUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHN0YXRpYyBjb25zdCBRdWFsaWZp
ZWROYW1lJiBmcmFtZU93bmVyVVJMQXR0cmlidXRlTmFtZShjb25zdCBIVE1MRnJhbWVPd25lckVs
ZW1lbnQmIGZyYW1lT3duZXIpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IGFs
bCBmcmFtZSBvd25lcnMgaW5jbHVkaW5nIGFwcGxldHMuCi0gICAgcmV0dXJuIGlzSFRNTE9iamVj
dEVsZW1lbnQoZnJhbWVPd25lcikgPyBIVE1MTmFtZXM6OmRhdGFBdHRyIDogSFRNTE5hbWVzOjpz
cmNBdHRyOworICAgIHJldHVybiBpczxIVE1MT2JqZWN0RWxlbWVudD4oZnJhbWVPd25lcikgPyBI
VE1MTmFtZXM6OmRhdGFBdHRyIDogSFRNTE5hbWVzOjpzcmNBdHRyOwogfQogCiBjbGFzcyBTZXJp
YWxpemVyTWFya3VwQWNjdW11bGF0b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TWFya3VwQWNj
dW11bGF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRl
eCA5ZDYyM2ExNmQyOWM4ZTlkODQwNGMwZmM4OWQ3ZWE1ZjMyM2EwMjRjLi5kNTZjOWYwZDc4ZThh
OTA3NDZhZDc3ZmM0ZWEyNzc4MmY3OTY5MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmNwcApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGJvb2wgY2FuU2Nyb2xsSW5EaXJl
Y3Rpb24oY29uc3QgTm9kZSogY29udGFpbmVyLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7
CiAgICAgQVNTRVJUKGNvbnRhaW5lcik7CiAKLSAgICBpZiAoaXNIVE1MU2VsZWN0RWxlbWVudChj
b250YWluZXIpKQorICAgIGlmIChpczxIVE1MU2VsZWN0RWxlbWVudD4oY29udGFpbmVyKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGNvbnRhaW5lci0+aXNEb2N1bWVudE5vZGUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCAwY2M0
NTUwZDA4MjAwNDY3OTY3NjA4MGZiZDg4MGFkM2MzYWZiMTcwLi4wNjM3ODljOGMwN2FjZDFjMTE0
MTdlMWQ3ZDc2NWY1ODVmZTYwNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OmFs
dERpc3BsYXlTdHJpbmcoKSBjb25zdAogICAgICAgICByZXR1cm4gZGlzcGxheVN0cmluZyhpbWFn
ZS5mYXN0R2V0QXR0cmlidXRlKGFsdEF0dHIpLCBtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7
CiAgICAgfQogICAgIAotICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQoKm1faW5uZXJOb25TaGFy
ZWROb2RlKSkgeworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqbV9pbm5lck5vblNoYXJl
ZE5vZGUpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oKm1faW5uZXJOb25TaGFyZWROb2RlKTsKICAgICAgICAgcmV0dXJuIGRp
c3BsYXlTdHJpbmcoaW5wdXQuYWx0KCksIG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKTsKICAg
ICB9CkBAIC0zMTcsMTQgKzMxNywxMiBAQCBVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFn
ZVVSTCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIEF0b21pY1N0cmluZyB1
cmxTdHJpbmc7Ci0gICAgaWYgKG1faW5uZXJOb25TaGFyZWROb2RlLT5oYXNUYWdOYW1lKGVtYmVk
VGFnKQotICAgICAgICB8fCBpc0hUTUxJbWFnZUVsZW1lbnQobV9pbm5lck5vblNoYXJlZE5vZGUu
Z2V0KCkpCi0gICAgICAgIHx8IGlzSFRNTElucHV0RWxlbWVudChtX2lubmVyTm9uU2hhcmVkTm9k
ZS5nZXQoKSkKLSAgICAgICAgfHwgbV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUob2Jq
ZWN0VGFnKQotICAgICAgICB8fCBpczxTVkdJbWFnZUVsZW1lbnQ+KG1faW5uZXJOb25TaGFyZWRO
b2RlLmdldCgpKSkKLSAgICAgICAgewotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVt
ZW50KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKTsKLSAgICAgICAgdXJsU3RyaW5nID0gZWxl
bWVudC0+aW1hZ2VTb3VyY2VVUkwoKTsKKyAgICBpZiAoaXM8SFRNTEVtYmVkRWxlbWVudD4oKm1f
aW5uZXJOb25TaGFyZWROb2RlKQorICAgICAgICB8fCBpczxIVE1MSW1hZ2VFbGVtZW50PigqbV9p
bm5lck5vblNoYXJlZE5vZGUpCisgICAgICAgIHx8IGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCptX2lu
bmVyTm9uU2hhcmVkTm9kZSkKKyAgICAgICAgfHwgaXM8SFRNTE9iamVjdEVsZW1lbnQ+KCptX2lu
bmVyTm9uU2hhcmVkTm9kZSkKKyAgICAgICAgfHwgaXM8U1ZHSW1hZ2VFbGVtZW50PigqbV9pbm5l
ck5vblNoYXJlZE5vZGUpKSB7CisgICAgICAgIHVybFN0cmluZyA9IHRvRWxlbWVudCgqbV9pbm5l
ck5vblNoYXJlZE5vZGUpLmltYWdlU291cmNlVVJMKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJl
dHVybiBVUkwoKTsKIApAQCAtMzM2LDcgKzMzNCw3IEBAIFVSTCBIaXRUZXN0UmVzdWx0OjphYnNv
bHV0ZVBERlVSTCgpIGNvbnN0CiAgICAgaWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKICAgICAg
ICAgcmV0dXJuIFVSTCgpOwogCi0gICAgaWYgKCFpc0hUTUxFbWJlZEVsZW1lbnQoKm1faW5uZXJO
b25TaGFyZWROb2RlKSAmJiAhaXNIVE1MT2JqZWN0RWxlbWVudCgqbV9pbm5lck5vblNoYXJlZE5v
ZGUpKQorICAgIGlmICghaXM8SFRNTEVtYmVkRWxlbWVudD4oKm1faW5uZXJOb25TaGFyZWROb2Rl
KSAmJiAhaXM8SFRNTE9iamVjdEVsZW1lbnQ+KCptX2lubmVyTm9uU2hhcmVkTm9kZSkpCiAgICAg
ICAgIHJldHVybiBVUkwoKTsKIAogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIGVsZW1lbnQg
PSB0b0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoKm1faW5uZXJOb25TaGFyZWROb2RlKTsKQEAgLTU1
NiwxMCArNTU0LDEwIEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNDb250ZW50RWRpdGFibGUoKSBj
b25zdAogICAgIGlmICghbV9pbm5lck5vblNoYXJlZE5vZGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmIChpc0hUTUxUZXh0QXJlYUVsZW1lbnQoKm1faW5uZXJOb25TaGFyZWROb2Rl
KSkKKyAgICBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oKm1faW5uZXJOb25TaGFyZWROb2Rl
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KCpt
X2lubmVyTm9uU2hhcmVkTm9kZSkpCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCptX2lu
bmVyTm9uU2hhcmVkTm9kZSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50PigqbV9pbm5lck5vblNoYXJlZE5vZGUpLmlzVGV4dEZpZWxkKCk7CiAKICAgICByZXR1cm4g
bV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNDJkZmJjYTdkZDBiMTAxMjYy
YzgzZmMyOTY1MGIzMGI4NzQwY2I1ZC4uMTlhYTk5YjIyNzNhYTQ3Mzc4YjYwZjU4NTU5MmFhODM2
ZTg0M2U2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAKQEAgLTM1NjksNyArMzU2OSw3IEBAIGlubGluZSBzdGF0aWMgYm9vbCByZXNpemVUZXh0UGVy
bWl0dGVkKFJlbmRlck9iamVjdCogcmVuZGVyKQogICAgICAgICAvLyBHZXQgdGhlIGZpcnN0IG5v
bi1zaGFkb3cgSFRNTEVsZW1lbnQgYW5kIHNlZSBpZiBpdCdzIGFuIGlucHV0LgogICAgICAgICBp
ZiAocmVuZGVyZXItPmVsZW1lbnQoKSAmJiByZW5kZXJlci0+ZWxlbWVudCgpLT5pc0hUTUxFbGVt
ZW50KCkgJiYgIXJlbmRlcmVyLT5lbGVtZW50KCktPmlzSW5TaGFkb3dUcmVlKCkpIHsKICAgICAg
ICAgICAgIGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCgqcmVuZGVy
ZXItPmVsZW1lbnQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gIWlzSFRNTElucHV0RWxlbWVudChl
bGVtZW50KSAmJiAhaXNIVE1MVGV4dEFyZWFFbGVtZW50KGVsZW1lbnQpOworICAgICAgICAgICAg
cmV0dXJuICFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSAmJiAhaXM8SFRNTFRleHRBcmVh
RWxlbWVudD4oZWxlbWVudCk7CiAgICAgICAgIH0KICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJl
ci0+cGFyZW50KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCBlZDdlMDEyZGUwYTUzNzJhMzA4ODFlNTMyMWUzOTJkMDRiMDZmNDJjLi4xM2ExYTRkNzdh
ZjdlZTVlNzhlMDk5MjlhM2Y3OWE0MzJiY2VmOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVk
ZSAiSFRNTEJ1dHRvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKQEAgLTI0NzcsNyArMjQ3OCw3IEBAIGJvb2wgUmVuZGVyQm94OjpzaXplc0xvZ2ljYWxXaWR0
aFRvRml0Q29udGVudChTaXplVHlwZSB3aWR0aFR5cGUpIGNvbnN0CiAgICAgLy8gc3RyZXRjaGlu
ZyBjb2x1bW4gZmxleGJveC4KICAgICAvLyBGSVhNRTogVGhpbmsgYWJvdXQgYmxvY2stZmxvdyBo
ZXJlLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQ3
MwotICAgIGlmIChsb2dpY2FsV2lkdGgudHlwZSgpID09IEF1dG8gJiYgIWlzU3RyZXRjaGluZ0Nv
bHVtbkZsZXhJdGVtKCp0aGlzKSAmJiBlbGVtZW50KCkgJiYgKGlzSFRNTElucHV0RWxlbWVudChl
bGVtZW50KCkpIHx8IGVsZW1lbnQoKS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpIHx8IGVsZW1lbnQo
KS0+aGFzVGFnTmFtZShidXR0b25UYWcpIHx8IGlzSFRNTFRleHRBcmVhRWxlbWVudChlbGVtZW50
KCkpIHx8IGVsZW1lbnQoKS0+aGFzVGFnTmFtZShsZWdlbmRUYWcpKSkKKyAgICBpZiAobG9naWNh
bFdpZHRoLnR5cGUoKSA9PSBBdXRvICYmICFpc1N0cmV0Y2hpbmdDb2x1bW5GbGV4SXRlbSgqdGhp
cykgJiYgZWxlbWVudCgpICYmIChpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KCkpIHx8IGlz
PEhUTUxTZWxlY3RFbGVtZW50PihlbGVtZW50KCkpIHx8IGlzPEhUTUxCdXR0b25FbGVtZW50Pihl
bGVtZW50KCkpIHx8IGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQoKSkgfHwgaXM8SFRN
TExlZ2VuZEVsZW1lbnQ+KGVsZW1lbnQoKSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9IGNvbnRhaW5pbmdCbG9jaygpLT5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0
dG9uLmNwcAppbmRleCAxMzljYjk3MmY1N2EwMDAwOGYxMTEwYjkyOTRhNDBmZjgyOTFkMGY5Li5j
MGMyNTgwM2E1ZmZiODE1NDA2NGY4ZGU0ZTAyMGI2NGJkZGUxZmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgUmVu
ZGVyQnV0dG9uOjpzZXR1cElubmVyU3R5bGUoUmVuZGVyU3R5bGUqIGlubmVyU3R5bGUpCiB2b2lk
IFJlbmRlckJ1dHRvbjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewogICAgIC8vIElmIHdlJ3JlIGFu
IGlucHV0IGVsZW1lbnQsIHdlIG1heSBuZWVkIHRvIGNoYW5nZSBvdXIgYnV0dG9uIHRleHQuCi0g
ICAgaWYgKGlzSFRNTElucHV0RWxlbWVudChmb3JtQ29udHJvbEVsZW1lbnQoKSkpIHsKKyAgICBp
ZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZm9ybUNvbnRyb2xFbGVtZW50KCkpKSB7CiAgICAgICAg
IEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oZm9y
bUNvbnRyb2xFbGVtZW50KCkpOwogICAgICAgICBTdHJpbmcgdmFsdWUgPSBpbnB1dC52YWx1ZVdp
dGhEZWZhdWx0KCk7CiAgICAgICAgIHNldFRleHQodmFsdWUpOwpAQCAtMTc4LDcgKzE3OCw3IEBA
IGJvb2wgUmVuZGVyQnV0dG9uOjpjYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdAogICAg
IC8vIElucHV0IGVsZW1lbnRzIGNhbid0IGhhdmUgZ2VuZXJhdGVkIGNoaWxkcmVuLCBidXQgYnV0
dG9uIGVsZW1lbnRzIGNhbi4gV2UnbGwKICAgICAvLyB3cml0ZSB0aGUgY29kZSBhc3N1bWluZyBh
bnkgb3RoZXIgYnV0dG9uIHR5cGVzIHRoYXQgbWlnaHQgZW1lcmdlIGluIHRoZSBmdXR1cmUKICAg
ICAvLyBjYW4gYWxzbyBoYXZlIGNoaWxkcmVuLgotICAgIHJldHVybiAhaXNIVE1MSW5wdXRFbGVt
ZW50KGZvcm1Db250cm9sRWxlbWVudCgpKTsKKyAgICByZXR1cm4gIWlzPEhUTUxJbnB1dEVsZW1l
bnQ+KGZvcm1Db250cm9sRWxlbWVudCgpKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJCdXR0b246
OmNvbnRyb2xDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFy
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNw
cAppbmRleCBjMDg0NTViMDdiMzcwNDQxNWQ2MTkxZWY4NjJiNjUxMGU0OTExNWYwLi45M2YwNmIy
ZjJkMDUxNWIyMzUyM2ZmZTJlYTlkZGI0N2IwMzQ1YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAg
Ym9vbCBSZW5kZXJEZXRhaWxzTWFya2VyOjppc09wZW4oKSBjb25zdAogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpLT5oYXNUYWdOYW1lKGRldGFpbHNU
YWcpKQogICAgICAgICAgICAgcmV0dXJuICF0b0VsZW1lbnQocmVuZGVyZXItPm5vZGUoKSktPmdl
dEF0dHJpYnV0ZShvcGVuQXR0cikuaXNOdWxsKCk7Ci0gICAgICAgIGlmIChpc0hUTUxJbnB1dEVs
ZW1lbnQocmVuZGVyZXItPm5vZGUoKSkpCisgICAgICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50
PihyZW5kZXJlci0+bm9kZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAKaW5kZXggMjk1MWNmYTlkYjZlMDhhNGYyZDZlMmIzODRmOWI4NzYwMzRjMmVkMS4uYTVj
MmIwNmUwNzJiNDUwM2NhM2FjNGZiN2FiMTQ4OGYzYTcxNDQ5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0yNTUs
NyArMjU1LDcgQEAgSFRNTElucHV0RWxlbWVudCogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnVw
bG9hZEJ1dHRvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlucHV0RWxlbWVudCgpLnNoYWRvd1Jv
b3QoKSk7CiAgICAgTm9kZSogYnV0dG9uTm9kZSA9IGlucHV0RWxlbWVudCgpLnNoYWRvd1Jvb3Qo
KS0+Zmlyc3RDaGlsZCgpOwotICAgIHJldHVybiBidXR0b25Ob2RlICYmIGJ1dHRvbk5vZGUtPmlz
SFRNTEVsZW1lbnQoKSAmJiBpc0hUTUxJbnB1dEVsZW1lbnQoYnV0dG9uTm9kZSkgPyBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50PihidXR0b25Ob2RlKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGJ1
dHRvbk5vZGUgJiYgaXM8SFRNTElucHV0RWxlbWVudD4oYnV0dG9uTm9kZSkgPyBkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50PihidXR0b25Ob2RlKSA6IG51bGxwdHI7CiB9CiAKIFN0cmluZyBSZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbDo6YnV0dG9uVmFsdWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZTg1ODU4MmFjNzRiZGE4MjM0MGUyODUxMDUwNjI3NmU0
NDYzOTZjZi4uNDJmMzI5Y2M2YzE2OGQ3M2UxODE3MGVhNGMxMDc2MzJkMGZmZWVlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC02NTUsNyArNjU1LDcgQEAg
dm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlQWx0VGV4dCgpCiAgICAgaWYgKCFlbGVtZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQoKmVsZW1lbnQoKSkp
CisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KCkpKQogICAgICAgICBtX2Fs
dFRleHQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCgpKS5hbHRUZXh0KCk7
CiAgICAgZWxzZSBpZiAoaXNIVE1MSW1hZ2VFbGVtZW50KCplbGVtZW50KCkpKQogICAgICAgICBt
X2FsdFRleHQgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCgpKS5hbHRUZXh0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggNjJh
ZWRjM2E3MWNjNDZjMjNmZWJlMjE4OGE4NDczZDRkODZmZDAwMy4uYzFlODQ0NTk3MzgyMWIzMjNh
YWI3ZDg4NmI2NjJhYTU3MzQ5ZDgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6dXBk
YXRlRnJvbUVsZW1lbnQoKQogICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0
SXRlbXNbaV07CiAgICAgICAgICAgICBTdHJpbmcgdGV4dDsKICAgICAgICAgICAgIEZvbnQgaXRl
bUZvbnQgPSBzdHlsZSgpLmZvbnQoKTsKLSAgICAgICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVt
ZW50KGVsZW1lbnQpKQorICAgICAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVt
ZW50KSkKICAgICAgICAgICAgICAgICB0ZXh0ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+
KCplbGVtZW50KS50ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7CiAgICAgICAgICAg
ICBlbHNlIGlmIChpc0hUTUxPcHRHcm91cEVsZW1lbnQoZWxlbWVudCkpIHsKICAgICAgICAgICAg
ICAgICB0ZXh0ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKmVsZW1lbnQpLmdyb3Vw
TGFiZWxUZXh0KCk7CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjphZGRG
b2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYK
ICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0RWxlbWVu
dCgpLmxpc3RJdGVtcygpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAg
ICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2ldOwotICAgICAgICBpZiAo
aXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KSAmJiAhZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1D
b250cm9sKCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSAm
JiAhZWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKICAgICAgICAgICAgIHNlbGVj
dEVsZW1lbnQoKS5zZXRBY3RpdmVTZWxlY3Rpb25FbmRJbmRleChpKTsKICAgICAgICAgICAgIHJl
Y3RzLmFwcGVuZChzbmFwcGVkSW50UmVjdChpdGVtQm91bmRpbmdCb3hSZWN0KGFkZGl0aW9uYWxP
ZmZzZXQsIGkpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zODUsNyArMzg1LDcgQEAgdm9p
ZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGl0ZW1U
ZXh0OwotICAgIGJvb2wgaXNPcHRpb25FbGVtZW50ID0gaXNIVE1MT3B0aW9uRWxlbWVudChsaXN0
SXRlbUVsZW1lbnQpOworICAgIGJvb2wgaXNPcHRpb25FbGVtZW50ID0gaXM8SFRNTE9wdGlvbkVs
ZW1lbnQ+KGxpc3RJdGVtRWxlbWVudCk7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVudCkKICAgICAg
ICAgaXRlbVRleHQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVu
dCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOwogICAgIGVsc2UgaWYgKGlzSFRN
TE9wdEdyb3VwRWxlbWVudChsaXN0SXRlbUVsZW1lbnQpKQpAQCAtNDI2LDcgKzQyNiw3IEBAIHZv
aWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgSFRNTEVsZW1lbnQqIGxpc3RJdGVtRWxlbWVudCA9
IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwogCiAgICAgQ29sb3IgYmFja0NvbG9yOwotICAgIGlmIChp
c0hUTUxPcHRpb25FbGVtZW50KGxpc3RJdGVtRWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnNlbGVjdGVkKCkpIHsKKyAgICBpZiAoaXM8SFRN
TE9wdGlvbkVsZW1lbnQ+KGxpc3RJdGVtRWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnNlbGVjdGVkKCkpIHsKICAgICAgICAgaWYgKGZyYW1l
KCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9jdW1lbnQoKS5mb2N1c2Vk
RWxlbWVudCgpID09ICZzZWxlY3RFbGVtZW50KCkpCiAgICAgICAgICAgICBiYWNrQ29sb3IgPSB0
aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAg
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXgg
MzdlZWE1ZWU3MjNiZGY4ZGQ1ZTU5MDUxZTU5OGM5OWI4OWM0NDQyMy4uNmVlMWIzMDEwMTM5NzVm
MmY3OGQ5NjZkODhkNGE2OWY3MThlYjVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBzaXplX3Qgc2VsZWN0
ZWRPcHRpb25Db3VudChjb25zdCBSZW5kZXJNZW51TGlzdCYgcmVuZGVyTWVudUxpc3QpCiAKICAg
ICBzaXplX3QgY291bnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
dGVtczsgKytpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGxpc3RJdGVtc1tp
XSkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbXNbaV0pLnNlbGVjdGVk
KCkpCisgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4obGlzdEl0ZW1zW2ldKSAmJiBk
b3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtc1tpXSkuc2VsZWN0ZWQoKSkKICAg
ICAgICAgICAgICsrY291bnQ7CiAgICAgfQogICAgIHJldHVybiBjb3VudDsKQEAgLTIxNCw3ICsy
MTQsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgoKQogCiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgSFRNTEVsZW1lbnQqIGVs
ZW1lbnQgPSBsaXN0SXRlbXNbaV07Ci0gICAgICAgIGlmICghaXNIVE1MT3B0aW9uRWxlbWVudChl
bGVtZW50KSkKKyAgICAgICAgaWYgKCFpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBTdHJpbmcgdGV4dCA9IGRvd25jYXN0PEhU
TUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJl
bCgpOwpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnNldFRleHRGcm9t
T3B0aW9uKGludCBvcHRpb25JbmRleCkKICAgICBTdHJpbmcgdGV4dCA9IGVtcHR5U3RyaW5nKCk7
CiAgICAgaWYgKGkgPj0gMCAmJiBpIDwgc2l6ZSkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50
ID0gbGlzdEl0ZW1zW2ldOwotICAgICAgICBpZiAoaXNIVE1MT3B0aW9uRWxlbWVudChlbGVtZW50
KSkgeworICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAg
ICAgICAgICB0ZXh0ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KS50ZXh0
SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7CiAgICAgICAgICAgICBtX29wdGlvblN0eWxl
ID0gZWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpOwogICAgICAgICB9CkBAIC00NTIsNyArNDUyLDcg
QEAgU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNv
bnN0CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwogICAgIGlm
IChpc0hUTUxPcHRHcm91cEVsZW1lbnQoZWxlbWVudCkpCiAgICAgICAgIGl0ZW1TdHJpbmcgPSBk
b3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PigqZWxlbWVudCkuZ3JvdXBMYWJlbFRleHQoKTsK
LSAgICBlbHNlIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGVsZW1lbnQpKQorICAgIGVsc2UgaWYg
KGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgaXRlbVN0cmluZyA9IGRv
d25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0
R3JvdXBMYWJlbCgpOwogCiAgICAgYXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIGl0ZW1TdHJp
bmcsICcgJyk7CkBAIC00OTIsNyArNDkyLDcgQEAgYm9vbCBSZW5kZXJNZW51TGlzdDo6aXRlbUlz
RW5hYmxlZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgaWYgKGxpc3RJbmRleCA+PSBs
aXN0SXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSFRNTEVsZW1lbnQq
IGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsKLSAgICBpZiAoIWlzSFRNTE9wdGlvbkVs
ZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgZ3JvdXBFbmFibGVkID0gdHJ1ZTsK
QEAgLTY1NCw3ICs2NTQsNyBAQCBib29sIFJlbmRlck1lbnVMaXN0OjppdGVtSXNTZWxlY3RlZCh1
bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQg
PSBsaXN0SXRlbXNbbGlzdEluZGV4XTsKLSAgICByZXR1cm4gaXNIVE1MT3B0aW9uRWxlbWVudChl
bGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnNlbGVjdGVk
KCk7CisgICAgcmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2Fz
dDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnNlbGVjdGVkKCk7CiB9CiAKIHZvaWQgUmVu
ZGVyTWVudUxpc3Q6OnNldFRleHRGcm9tSXRlbSh1bnNpZ25lZCBsaXN0SW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBmYjVlZTVjZTNmMmFkZTA4ZGRi
NzMwYTQzMzczODNmMjc3MzAwMGRjLi4zMDdiNzhiMTI5Y2RjM2ZhY2JiZDljMTdjY2FjYTM1NDU4
ZmQ5YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEw
MzUsNyArMTAzNSw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3Qg
UmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBOb2RlKiBub2RlID0gb3B0aW9ucy0+aXRlbShpKTsgaSsrKSB7Ci0gICAgICAg
IEFTU0VSVChpc0hUTUxPcHRpb25FbGVtZW50KG5vZGUpKTsKKyAgICAgICAgQVNTRVJUKGlzPEhU
TUxPcHRpb25FbGVtZW50Pihub2RlKSk7CiAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRp
b25FbGVtZW50ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpub2RlKTsKICAgICAgICAg
U3RyaW5nIHZhbHVlID0gb3B0aW9uRWxlbWVudC52YWx1ZSgpOwogICAgICAgICBpZiAoIWlucHV0
LT5pc1ZhbGlkVmFsdWUodmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IDRhMmIzYTRlNTI0YTZmZjFiMTdhZjhjODNlYmFlZDYyYzQxYjAzYWQuLjY3MzE5MDY4N2I5
NmVhYTZhMjIzNDNmNDMxNGI1NzFjNTY2OWJlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTYzNyw3ICs2MzcsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjp2aXNpYmxlUGxh
Y2Vob2xkZXIoRWxlbWVudCogZWxlbWVudCkKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
IHZvaWQgSW50ZXJuYWxzOjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFN0cmluZyYgY29sb3JWYWx1ZSkKIHsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxl
bWVudChlbGVtZW50KSkKKyAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQog
ICAgICAgICByZXR1cm47CiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxl
bWVudC0+dG9JbnB1dEVsZW1lbnQoKTsKICAgICBpZiAoIWlucHV0RWxlbWVudCkKQEAgLTkxMiw3
ICs5MTIsNyBAQCBib29sIEludGVybmFsczo6d2FzTGFzdENoYW5nZVVzZXJFZGl0KEVsZW1lbnQq
IHRleHRGaWVsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCA9IHRleHRGaWVsZC0+dG9JbnB1dEVsZW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGlucHV0RWxlbWVudC0+bGFzdENoYW5nZVdhc1VzZXJFZGl0KCk7CiAKLSAgICBpZiAoaXNI
VE1MVGV4dEFyZWFFbGVtZW50KHRleHRGaWVsZCkpCisgICAgaWYgKGlzPEhUTUxUZXh0QXJlYUVs
ZW1lbnQ+KHRleHRGaWVsZCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGV4dEFyZWFF
bGVtZW50PigqdGV4dEZpZWxkKS5sYXN0Q2hhbmdlV2FzVXNlckVkaXQoKTsKIAogICAgIGVjID0g
SU5WQUxJRF9OT0RFX1RZUEVfRVJSOwpAQCAtMjA4NCw3ICsyMDg0LDcgQEAgdm9pZCBJbnRlcm5h
bHM6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oTm9kZSogbm9kZSkKIAogYm9vbCBJbnRlcm5h
bHM6OmlzU2VsZWN0UG9wdXBWaXNpYmxlKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFpc0hUTUxT
ZWxlY3RFbGVtZW50KG5vZGUpKQorICAgIGlmICghaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KG5vZGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0
ID0gZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KCpub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCA5
YTFmOGY1MGE4Mjc2NGJlY2E1NWIxYmRlZTM2ZTdmNzBhNDljNThiLi5jMzdjZjgwZWRiMGJmYThh
MWJmZGM1NjU5YWFiZWUxYTcxMDkzMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC04NTgsNyArODU4LDcg
QEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoY29uc3QgeG1sQ2hhciog
eG1sTG9jYWxOYW1lLCBjb25zdCB4bWxDaGEKICAgICBwdXNoQ3VycmVudE5vZGUobmV3RWxlbWVu
dC5nZXQoKSk7CiAjZW5kaWYKIAotICAgIGlmIChpc0hUTUxIdG1sRWxlbWVudCgqbmV3RWxlbWVu
dCkpCisgICAgaWYgKGlzPEhUTUxIdG1sRWxlbWVudD4oKm5ld0VsZW1lbnQpKQogICAgICAgICBk
b3duY2FzdDxIVE1MSHRtbEVsZW1lbnQ+KCpuZXdFbGVtZW50KS5pbnNlcnRlZEJ5UGFyc2VyKCk7
CiAKICAgICBpZiAoIW1fcGFyc2luZ0ZyYWdtZW50ICYmIGlzRmlyc3RFbGVtZW50ICYmIGRvY3Vt
ZW50KCktPmZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW0KaW5kZXggMmI2NWJiMGFiNjc0ZmU3NTdmNTIwODIx
OWIzMGQwNzBiN2RjOTVhMy4uMTg1YzY2MzFjZWExY2UxYTU1MTBlYmNhZGI0NzI1NjUxZTU5YzRk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudElPUy5tbQpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
SU9TOjpmb2N1c2VkRWxlbWVudENoYW5nZWQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAo
IWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChl
bGVtZW50KSkKKyAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggMjRkZTY3YTcyMzU4MTNi
YTVlMjIyZTNjNmRjOGZhYTBjMGU3NWFjZi4uOTM2ZjQ1NDFiZWY2Y2MzZmY4Mjc3NTExOGQ2ZDU4
MWIyNjUxZWRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50Ojpmb2N1c2VkRWxlbWVudENoYW5nZWQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAo
IWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChl
bGVtZW50KSkKKyAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggYTY5NDkyYzk2MDg0NGU4
ZDEyY2M2YjMzNjBkZjQ1ZWIyMmE1YTQ0OS4uODg0MDU0OTAzNDI3MWI2MDlhYWI2NTFiN2EyOTcy
NDAzNGFjNzZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNzA1LDcgKzcwNSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAKIHZv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoRWxlbWVudCogZWxl
bWVudCkKIHsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAo
IWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBE
T01IVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBraXQoZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oZWxlbWVudCkpOwpAQCAtNzE1LDcgKzcxNSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50Ojp0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoRWxlbWVudCogZWxlbWVudCkKIAogdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnRleHRGaWVsZERpZEVuZEVkaXRpbmcoRWxlbWVudCogZWxlbWVudCkK
IHsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoIWlzPEhU
TUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBET01IVE1M
SW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBraXQoZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oZWxlbWVudCkpOwpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0
ZXh0RmllbGREaWRFbmRFZGl0aW5nKEVsZW1lbnQqIGVsZW1lbnQpCiAKIHZvaWQgV2ViRWRpdG9y
Q2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoRWxlbWVudCogZWxlbWVudCkKIHsKLSAg
ICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoIWlzPEhUTUxJbnB1
dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKICNpZiAhUExBVEZPUk0oSU9T
KQpAQCAtNzYzLDcgKzc2Myw3IEBAIHN0YXRpYyBTRUwgc2VsZWN0b3JGb3JLZXlFdmVudChLZXli
b2FyZEV2ZW50KiBldmVudCkKIAogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmRvVGV4dEZpZWxkQ29t
bWFuZEZyb21FdmVudChFbGVtZW50KiBlbGVtZW50LCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsK
LSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoIWlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gTk87CiAKICAgICBET01IVE1M
SW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBraXQoZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oZWxlbWVudCkpOwpAQCAtNzc1LDcgKzc3NSw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojpk
b1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCogZWxlbWVudCwgS2V5Ym9hcmRFdmVu
CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVs
ZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkp
CisgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRE9NSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0ga2l0KGRvd25jYXN0
PEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKTsKQEAgLTc4Niw3ICs3ODYsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6dGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChFbGVtZW50KiBlbGVt
ZW50KQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxl
bWVudCogZWxlbWVudCkKIHsKLSAgICBpZiAoIWlzSFRNTFRleHRBcmVhRWxlbWVudChlbGVtZW50
KSkKKyAgICBpZiAoIWlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBET01IVE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0QXJlYUVsZW1lbnQgPSBr
aXQoZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCAwOTJl
NThkN2I0M2ZjYzk0NjA2ZDM4OWMwZjY0N2JkNGU3ODQyOGFhLi45YjlkZTdhNWU3ZjQ3ZGE1NzAz
MmZjZGIyZGYxMjM2Yzk3YWVmYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMzA1LDcgKzMwNSw3IEBAIC0gKERPTUVs
ZW1lbnQgKillbGVtZW50V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZSBpbkZvcm06KERPTUVsZW1l
bnQgKilmb3JtCiBzdGF0aWMgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50RnJvbURPTUVs
ZW1lbnQoRE9NRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBFbGVtZW50KiBub2RlID0gY29yZShl
bGVtZW50KTsKLSAgICByZXR1cm4gbm9kZSAmJiBpc0hUTUxJbnB1dEVsZW1lbnQobm9kZSkgPyBk
b3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG5v
ZGUgJiYgaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgPyBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Pihub2RlKSA6IG51bGxwdHI7CiB9CiAKIC0gKEJPT0wpZWxlbWVudERvZXNBdXRvQ29tcGxl
dGU6KERPTUVsZW1lbnQgKillbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9E
T01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAK
aW5kZXggOGI5ZDUyZWMwZDkwY2U4Y2YzZWU4MWQ0MWYyZmEzZWViMmViOGNlYi4uMDAwZjJhNjA0
YjZiNTAyY2MzZTUxMzNkOGU4OGNhNGFhMzZhOTY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVD
bGFzc2VzLmNwcApAQCAtMTUwNiwxNiArMTUwNiwxNiBAQCBJRE9NRWxlbWVudCogRE9NRWxlbWVu
dDo6Y3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6RWxlbWVudCogZSkKICAgICB9IGVsc2UgaWYgKGUt
Pmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgewogICAgICAgICBET01IVE1MSUZyYW1lRWxlbWVudCog
bmV3RWxlbWVudCA9IG5ldyBET01IVE1MSUZyYW1lRWxlbWVudChlKTsKICAgICAgICAgaHIgPSBu
ZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiopJmRvbUVs
ZW1lbnQpOwotICAgIH0gZWxzZSBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KGUpKSB7CisgICAgfSBl
bHNlIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihlKSkgewogICAgICAgICBET01IVE1MSW5wdXRF
bGVtZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxJbnB1dEVsZW1lbnQoZSk7CiAgICAgICAg
IGhyID0gbmV3RWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01FbGVtZW50LCAodm9pZCoq
KSZkb21FbGVtZW50KTsKLSAgICB9IGVsc2UgaWYgKGlzSFRNTE9wdGlvbkVsZW1lbnQoZSkpIHsK
KyAgICB9IGVsc2UgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlKSkgewogICAgICAgICBET01I
VE1MT3B0aW9uRWxlbWVudCogbmV3RWxlbWVudCA9IG5ldyBET01IVE1MT3B0aW9uRWxlbWVudChl
KTsKICAgICAgICAgaHIgPSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1l
bnQsICh2b2lkKiopJmRvbUVsZW1lbnQpOwogICAgIH0gZWxzZSBpZiAoZS0+aGFzVGFnTmFtZShz
ZWxlY3RUYWcpKSB7CiAgICAgICAgIERPTUhUTUxTZWxlY3RFbGVtZW50KiBuZXdFbGVtZW50ID0g
bmV3IERPTUhUTUxTZWxlY3RFbGVtZW50KGUpOwogICAgICAgICBociA9IG5ld0VsZW1lbnQtPlF1
ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwgKHZvaWQqKikmZG9tRWxlbWVudCk7Ci0gICAg
fSBlbHNlIGlmIChpc0hUTUxUZXh0QXJlYUVsZW1lbnQoZSkpIHsKKyAgICB9IGVsc2UgaWYgKGlz
PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KGUpKSB7CiAgICAgICAgIERPTUhUTUxUZXh0QXJlYUVsZW1l
bnQqIG5ld0VsZW1lbnQgPSBuZXcgRE9NSFRNTFRleHRBcmVhRWxlbWVudChlKTsKICAgICAgICAg
aHIgPSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiop
JmRvbUVsZW1lbnQpOwogICAgIH0gZWxzZSBpZiAoZS0+aXNIVE1MRWxlbWVudCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKaW5kZXggY2M2ZTM0YzQyNmYxOTU3MzQ5YzE4OGYy
YWVhYWZjZDEzZGZiOTRhZS4uN2ZmYWVhYzIxYjk4ODNiYWM5OWUyODk0NTg4YTcyZDhkODI4NTZl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcApAQCAtODU5LDcgKzg1OSw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTE9wdGlvbkVsZW1lbnQ6OnRleHQoCiAg
ICAgKnJlc3VsdCA9IDA7CiAKICAgICBBU1NFUlQobV9lbGVtZW50KTsKLSAgICBBU1NFUlQoaXNI
VE1MT3B0aW9uRWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQoaXM8SFRNTE9wdGlvbkVs
ZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb25FbGVtZW50
ID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCptX2VsZW1lbnQpOwogCiAgICAgKnJlc3Vs
dCA9IEJTdHJpbmcob3B0aW9uRWxlbWVudC50ZXh0KCkpLnJlbGVhc2UoKTsKQEAgLTg5Niw3ICs4
OTYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxPcHRpb25FbGVtZW50Ojps
YWJlbCgKICAgICAqcmVzdWx0ID0gMDsKIAogICAgIEFTU0VSVChtX2VsZW1lbnQpOwotICAgIEFT
U0VSVChpc0hUTUxPcHRpb25FbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChpczxIVE1M
T3B0aW9uRWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlv
bkVsZW1lbnQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm1fZWxlbWVudCk7CiAKICAg
ICAqcmVzdWx0ID0gQlN0cmluZyhvcHRpb25FbGVtZW50LmxhYmVsKCkpLnJlbGVhc2UoKTsKQEAg
LTk5Miw3ICs5OTIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVs
ZW1lbnQ6OmZvcm0oCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CiAgICAgKnJlc3VsdCA9IG51bGxwdHI7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxJ
bnB1dEVsZW1lbnQobV9lbGVtZW50KSk7CisgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpczxIVE1M
SW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVs
ZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKICAgICBDT01Q
dHI8SURPTUVsZW1lbnQ+IGRvbUVsZW1lbnQ7CiAgICAgZG9tRWxlbWVudC5hZG9wdFJlZihET01I
VE1MRWxlbWVudDo6Y3JlYXRlSW5zdGFuY2UoaW5wdXRFbGVtZW50LmZvcm0oKSkpOwpAQCAtMTA3
NCw3ICsxMDc0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVt
ZW50OjpzZXRDaGVja2VkKAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRF
bGVtZW50OjpkaXNhYmxlZCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVz
dWx0KQogewotICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MSW5wdXRFbGVtZW50KG1fZWxl
bWVudCkpOworICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXM8SFRNTElucHV0RWxlbWVudD4obV9l
bGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7CiAgICAgKnJlc3VsdCA9IGlucHV0RWxlbWVu
dC5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSA/IFRSVUUgOiBGQUxTRTsKICAgICByZXR1cm4gU19P
SzsKQEAgLTExMTgsNyArMTExOCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRN
TElucHV0RWxlbWVudDo6c2V0TmFtZSgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRN
TElucHV0RWxlbWVudDo6cmVhZE9ubHkoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJP
T0wqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzSFRNTElucHV0RWxlbWVu
dChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzPEhUTUxJbnB1dEVsZW1l
bnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRv
d25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwogICAgICpyZXN1bHQgPSBpbnB1
dEVsZW1lbnQuaXNSZWFkT25seSgpID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwpA
QCAtMTE4Myw3ICsxMTgzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5w
dXRFbGVtZW50Ojp0eXBlKAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRF
bGVtZW50OjpzZXRUeXBlKCAKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHR5cGUpCiB7Ci0gICAg
QVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxJbnB1dEVsZW1lbnQobV9lbGVtZW50KSk7CisgICAg
QVNTRVJUKG1fZWxlbWVudCAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAg
ICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50PigqbV9lbGVtZW50KTsKICAgICBXVEY6OlN0cmluZyB0eXBlU3RyaW5nKHR5cGUsIFN5c1N0
cmluZ0xlbih0eXBlKSk7CiAgICAgaW5wdXRFbGVtZW50LnNldFR5cGUodHlwZVN0cmluZyk7CkBA
IC0xMjA3LDcgKzEyMDcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1
dEVsZW1lbnQ6OnNldFVzZU1hcCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElu
cHV0RWxlbWVudDo6dmFsdWUoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJl
c3VsdCkKIHsKLSAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzSFRNTElucHV0RWxlbWVudChtX2Vs
ZW1lbnQpKTsKKyAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1f
ZWxlbWVudCkpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0
PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwogICAgIFdURjo6U3RyaW5nIHZhbHVlU3Ry
aW5nID0gaW5wdXRFbGVtZW50LnZhbHVlKCk7CiAgICAgKnJlc3VsdCA9IEJTdHJpbmcodmFsdWVT
dHJpbmcpLnJlbGVhc2UoKTsKQEAgLTEyMTksNyArMTIxOSw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6dmFsdWUoCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKCAKICAgICAgICAgLyogW2luXSAq
LyBCU1RSIHZhbHVlKQogewotICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MSW5wdXRFbGVt
ZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXM8SFRNTElucHV0RWxl
bWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0g
ZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7CiAgICAgaW5wdXRFbGVtZW50
LnNldFZhbHVlKFN0cmluZygoVUNoYXIqKSB2YWx1ZSwgU3lzU3RyaW5nTGVuKHZhbHVlKSkpOwog
ICAgIHJldHVybiBTX09LOwpAQCAtMTIyOSw3ICsxMjI5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZvclVzZXIoCiAgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKLSAgICBBU1NF
UlQoaXNIVE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChpczxIVE1MSW5w
dXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1l
bnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKICAgICBpbnB1dEVs
ZW1lbnQuc2V0VmFsdWVGb3JVc2VyKFN0cmluZyhzdGF0aWNfY2FzdDxVQ2hhcio+KHZhbHVlKSwg
U3lzU3RyaW5nTGVuKHZhbHVlKSkpOwogICAgIHJldHVybiBTX09LOwpAQCAtMTIzNyw3ICsxMjM3
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzZXRW
YWx1ZUZvclVzZXIoCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxl
bWVudDo6c2VsZWN0KCB2b2lkKQogewotICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MSW5w
dXRFbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXM8SFRNTElu
cHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVt
ZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7CiAgICAgaW5wdXRF
bGVtZW50LnNlbGVjdCgpOwogICAgIHJldHVybiBTX09LOwpAQCAtMTI1Miw3ICsxMjUyLDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpjbGljayggdm9p
ZCkKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0U2Vs
ZWN0aW9uU3RhcnQoIAogICAgIC8qIFtpbl0gKi8gbG9uZyBzdGFydCkKIHsKLSAgICBBU1NFUlQo
bV9lbGVtZW50ICYmIGlzSFRNTElucHV0RWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQo
bV9lbGVtZW50ICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJ
bnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpt
X2VsZW1lbnQpOwogICAgIGlucHV0RWxlbWVudC5zZXRTZWxlY3Rpb25TdGFydChzdGFydCk7CiAg
ICAgcmV0dXJuIFNfT0s7CkBAIC0xMjYxLDcgKzEyNjEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydCggCiAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nICpzdGFydCkKIHsKLSAgICBBU1NFUlQobV9lbGVt
ZW50ICYmIGlzSFRNTElucHV0RWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQobV9lbGVt
ZW50ICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJbnB1dEVs
ZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1l
bnQpOwogICAgICpzdGFydCA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydCgpOwogICAgIHJl
dHVybiBTX09LOwpAQCAtMTI3MCw3ICsxMjcwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01IVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydCgKIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKCAKICAgICAvKiBb
aW5dICovIGxvbmcgZW5kKQogewotICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MSW5wdXRF
bGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXM8SFRNTElucHV0
RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50
ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7CiAgICAgaW5wdXRFbGVt
ZW50LnNldFNlbGVjdGlvbkVuZChlbmQpOwogICAgIHJldHVybiBTX09LOwpAQCAtMTI3OSw3ICsx
Mjc5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50Ojpz
ZXRTZWxlY3Rpb25FbmQoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVs
ZW1lbnQ6OnNlbGVjdGlvbkVuZCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBsb25nICplbmQp
CiB7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxJbnB1dEVsZW1lbnQobV9lbGVtZW50
KSk7CisgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpczxIVE1MSW5wdXRFbGVtZW50PihtX2VsZW1l
bnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKICAgICAqZW5kID0gaW5wdXRFbGVtZW50LnNlbGVj
dGlvbkVuZCgpOwogICAgIHJldHVybiBTX09LOwpAQCAtMTI5MSw3ICsxMjkxLDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50Ojppc1RleHRGaWVsZCgKICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9lbGVt
ZW50KTsKLSAgICBBU1NFUlQoaXNIVE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFT
U0VSVChpczxIVE1MSW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVt
ZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50
KTsKICAgICAqcmVzdWx0ID0gaW5wdXRFbGVtZW50LmlzVGV4dEZpZWxkKCkgPyBUUlVFIDogRkFM
U0U7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnJlY3RPblNjcmVlbigKICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIExQUkVDVCByZWN0KQogewogICAgIEFTU0VSVChtX2VsZW1lbnQpOwot
ICAgIEFTU0VSVChpc0hUTUxJbnB1dEVsZW1lbnQobV9lbGVtZW50KSk7CisgICAgQVNTRVJUKGlz
PEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIHJlY3QtPmxlZnQgPSByZWN0LT50
b3AgPSByZWN0LT5yaWdodCA9IHJlY3QtPmJvdHRvbSA9IDA7CiAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBt
X2VsZW1lbnQtPmRvY3VtZW50KCkudmlldygpOwpAQCAtMTMyNyw3ICsxMzI3LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVtZW50OjpyZXBsYWNlQ2hhcmFjdGVy
c0luUmFuZ2UoCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBBU1NFUlQobV9lbGVt
ZW50KTsKLSAgICBBU1NFUlQoaXNIVE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFT
U0VSVChpczxIVE1MSW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVt
ZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50
KTsKIAogICAgIFN0cmluZyBuZXdWYWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZSgpOwpAQCAtMTM0
NCw3ICsxMzQ0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MSW5wdXRFbGVt
ZW50OjpzZWxlY3RlZFJhbmdlKAogICAgIC8qIFtvdXRdICovIGludCogZW5kKQogewogICAgIEFT
U0VSVChtX2VsZW1lbnQpOwotICAgIEFTU0VSVChpc0hUTUxJbnB1dEVsZW1lbnQobV9lbGVtZW50
KSk7CisgICAgQVNTRVJUKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhU
TUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KCptX2VsZW1lbnQpOwogICAgICpzdGFydCA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydCgp
OwogICAgICplbmQgPSBpbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kKCk7CkBAIC0xMzU1LDcgKzEz
NTUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNl
dEF1dG9maWxsZWQoCiAgICAgLyogW2luXSAqLyBCT09MIGZpbGxlZCkKIHsKICAgICBBU1NFUlQo
bV9lbGVtZW50KTsKLSAgICBBU1NFUlQoaXNIVE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCkpOwor
ICAgIEFTU0VSVChpczxIVE1MSW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5w
dXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9l
bGVtZW50KTsKICAgICBpbnB1dEVsZW1lbnQuc2V0QXV0b2ZpbGxlZCghIWZpbGxlZCk7CiAgICAg
cmV0dXJuIFNfT0s7CkBAIC0xMzY1LDcgKzEzNjUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTUhUTUxJbnB1dEVsZW1lbnQ6OmlzQXV0b2ZpbGxlZCgKICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKLSAgICBBU1NF
UlQoaXNIVE1MSW5wdXRFbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChpczxIVE1MSW5w
dXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1l
bnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKICAgICAqcmVzdWx0
ID0gaW5wdXRFbGVtZW50LmlzQXV0b2ZpbGxlZCgpID8gVFJVRSA6IEZBTFNFOwogICAgIHJldHVy
biBTX09LOwpAQCAtMTM4MCw3ICsxMzgwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
T01IVE1MSW5wdXRFbGVtZW50Ojppc1VzZXJFZGl0ZWQoCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAKICAgICAqcmVzdWx0ID0gRkFMU0U7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hU
TUxJbnB1dEVsZW1lbnQobV9lbGVtZW50KSk7CisgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpczxI
VE1MSW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBCT09MIHRleHRGaWVsZCA9IEZBTFNF
OwogICAgIGlmIChGQUlMRUQoaXNUZXh0RmllbGQoJnRleHRGaWVsZCkpIHx8ICF0ZXh0RmllbGQp
CiAgICAgICAgIHJldHVybiBTX09LOwpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01IVE1MVGV4dEFyZWFFbGVtZW50Ojpmb3JtKAogICAgIGlmICghcmVz
dWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSAwOwotICAgIEFT
U0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MVGV4dEFyZWFFbGVtZW50KG1fZWxlbWVudCkpOworICAg
IEFTU0VSVChtX2VsZW1lbnQgJiYgaXM8SFRNTFRleHRBcmVhRWxlbWVudD4obV9lbGVtZW50KSk7
CiAgICAgSFRNTFRleHRBcmVhRWxlbWVudCYgdGV4dGFyZWFFbGVtZW50ID0gZG93bmNhc3Q8SFRN
TFRleHRBcmVhRWxlbWVudD4oKm1fZWxlbWVudCk7CiAgICAgQ09NUHRyPElET01FbGVtZW50PiBk
b21FbGVtZW50OwogICAgIGRvbUVsZW1lbnQuYWRvcHRSZWYoRE9NSFRNTEVsZW1lbnQ6OmNyZWF0
ZUluc3RhbmNlKHRleHRhcmVhRWxlbWVudC5mb3JtKCkpKTsKQEAgLTE1NDQsNyArMTU0NCw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6dHlwZSgK
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsdWUo
IAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKIHsKLSAgICBBU1NF
UlQobV9lbGVtZW50ICYmIGlzSFRNTFRleHRBcmVhRWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBB
U1NFUlQobV9lbGVtZW50ICYmIGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG1fZWxlbWVudCkpOwog
ICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQmIHRleHRhcmVhRWxlbWVudCA9IGRvd25jYXN0PEhUTUxU
ZXh0QXJlYUVsZW1lbnQ+KCptX2VsZW1lbnQpOwogICAgIFdURjo6U3RyaW5nIHZhbHVlU3RyaW5n
ID0gdGV4dGFyZWFFbGVtZW50LnZhbHVlKCk7CiAgICAgKnJlc3VsdCA9IEJTdHJpbmcodmFsdWVT
dHJpbmcpLnJlbGVhc2UoKTsKQEAgLTE1NTYsNyArMTU1Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsdWUoCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlKCAKICAgICAgICAgLyog
W2luXSAqLyBCU1RSIHZhbHVlKQogewotICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MVGV4
dEFyZWFFbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXM8SFRN
TFRleHRBcmVhRWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTFRleHRBcmVhRWxlbWVudCYg
dGV4dGFyZWFFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oKm1fZWxlbWVu
dCk7CiAgICAgdGV4dGFyZWFFbGVtZW50LnNldFZhbHVlKFN0cmluZygoVUNoYXIqKSB2YWx1ZSwg
U3lzU3RyaW5nTGVuKHZhbHVlKSkpOwogICAgIHJldHVybiBTX09LOwpAQCAtMTU2NCw3ICsxNTY0
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MVGV4dEFyZWFFbGVtZW50Ojpz
ZXRWYWx1ZSgKICAgICAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSFRNTFRleHRBcmVh
RWxlbWVudDo6c2VsZWN0KCB2b2lkKQogewotICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXNIVE1M
VGV4dEFyZWFFbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXM8
SFRNTFRleHRBcmVhRWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTFRleHRBcmVhRWxlbWVu
dCYgdGV4dGFyZWFFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oKm1fZWxl
bWVudCk7CiAgICAgdGV4dGFyZWFFbGVtZW50LnNlbGVjdCgpOwogICAgIHJldHVybiBTX09LOwpA
QCAtMTU3OSw3ICsxNTc5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MVGV4
dEFyZWFFbGVtZW50Ojppc1VzZXJFZGl0ZWQoCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAK
ICAgICAqcmVzdWx0ID0gRkFMU0U7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxUZXh0
QXJlYUVsZW1lbnQobV9lbGVtZW50KSk7CisgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpczxIVE1M
VGV4dEFyZWFFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBpZiAoZG93bmNhc3Q8SFRNTFRleHRB
cmVhRWxlbWVudD4oKm1fZWxlbWVudCkubGFzdENoYW5nZVdhc1VzZXJFZGl0KCkpCiAgICAgICAg
ICpyZXN1bHQgPSBUUlVFOwogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmlu
ZGV4IDhjNmM0NWMzMjljOTgyZTNhMzUzZDE1MGVlNjE4ZDVhMGNkOGM5YjIuLmQ1MGJhZmQzZGE5
NzA5NzI3NGY2Y2E2NTE4ODI3NzY5MzkyMjRkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAg
LTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50RnJv
bURPTUVsZW1lbnQoSURPTUVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIEVsZW1lbnQqIGVsZTsK
ICAgICAgICAgaHIgPSBlbGVQcml2LT5jb3JlRWxlbWVudCgodm9pZCoqKSZlbGUpOwogICAgICAg
ICBlbGVQcml2LT5SZWxlYXNlKCk7Ci0gICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIGVsZSAm
JiBpc0hUTUxJbnB1dEVsZW1lbnQoZWxlKSkKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYg
ZWxlICYmIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZSkpCiAgICAgICAgICAgICByZXR1cm4gZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oZWxlKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCBj
NjEyYzJjMGJhM2IyZjAwM2JmYWRmOGQyNWVlNWRlNzYwNGYzMjRmLi5jZWQ5MGFjNmUxYWU0ZTFh
YWU5ZThkNjFkYzhkMmM3NjAwZTk2ZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBQYXNzUmVmUHRyPEluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6dmlzaWJsZVJh
bmdlKCkgYwogCiB2b2lkIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0SFRNTElucHV0RWxl
bWVudFZhbHVlRm9yVXNlcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNIVE1M
SW5wdXRFbGVtZW50KCptX25vZGUpKQorICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4oKm1f
bm9kZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KCptX25vZGUpLnNldFZhbHVlRm9yVXNlcih2YWx1ZSk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnNldEhUTUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVz
ZXIoY29uc3QgU3RyaW5nJiB2YWwKIAogYm9vbCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omlz
SFRNTElucHV0RWxlbWVudEF1dG9maWxsZWQoKSBjb25zdAogewotICAgIGlmICghaXNIVE1MSW5w
dXRFbGVtZW50KCptX25vZGUpKQorICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4oKm1fbm9k
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oKm1fbm9kZSkuaXNBdXRvZmlsbGVkKCk7CkBAIC0yMTUsNyArMjE1LDcg
QEAgYm9vbCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzSFRNTElucHV0RWxlbWVudEF1dG9m
aWxsZWQoKSBjb25zdAogCiB2b2lkIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6c2V0SFRNTElu
cHV0RWxlbWVudEF1dG9maWxsZWQoYm9vbCBmaWxsZWQpCiB7Ci0gICAgaWYgKCFpc0hUTUxJbnB1
dEVsZW1lbnQoKm1fbm9kZSkpCisgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PigqbV9ub2Rl
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1f
bm9kZSkuc2V0QXV0b2ZpbGxlZChmaWxsZWQpOwpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpzZXRIVE1MSW5wdXRFbGVtZW50QXV0b2ZpbGxlZChib29s
IGZpbGxlZCkKIAogYm9vbCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxJbnB1dEVsZW1l
bnRMYXN0Q2hhbmdlV2FzVXNlckVkaXQoKQogewotICAgIGlmICghaXNIVE1MSW5wdXRFbGVtZW50
KCptX25vZGUpKQorICAgIGlmICghaXM8SFRNTElucHV0RWxlbWVudD4oKm1fbm9kZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
PigqbV9ub2RlKS5sYXN0Q2hhbmdlV2FzVXNlckVkaXQoKTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBi
b29sIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbElucHV0RWxlbWVudExhc3RDaGFuZ2VX
YXNVc2VyRWRpdCgpCiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sVGV4dEFy
ZWFFbGVtZW50TGFzdENoYW5nZVdhc1VzZXJFZGl0KCkKIHsKLSAgICBpZiAoIWlzSFRNTFRleHRB
cmVhRWxlbWVudCgqbV9ub2RlKSkKKyAgICBpZiAoIWlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCpt
X25vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TFRleHRBcmVhRWxlbWVudD4oKm1fbm9kZSkubGFzdENoYW5nZVdhc1VzZXJFZGl0KCk7CkBAIC0y
MzksNyArMjM5LDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxUZXh0QXJl
YUVsZW1lbnRMYXN0Q2hhbmdlV2FzVXNlckVkaXQoKQogCiBib29sIEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTo6aXNUZXh0RmllbGQoKSBjb25zdAogewotICAgIHJldHVybiBpc0hUTUxJbnB1dEVs
ZW1lbnQoKm1fbm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fbm9kZSkuaXNU
ZXh0KCk7CisgICAgcmV0dXJuIGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCptX25vZGUpICYmIGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX25vZGUpLmlzVGV4dCgpOwogfQogCiBQYXNzUmVmUHRy
PEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1s
VGFibGVDZWxsRWxlbWVudENlbGxBYm92ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXgg
YjUxNzYzZWE1MGQ3MTQ0NDRjNzM2ZThmMTBlMzRhMjYzOGVmZGQyOS4uYzJkNTExMDc5NWVhMjBm
ZDYyODQwODM4MTQ0YmJjOWU1NWVlMjU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAt
MTc4LDcgKzE3OCw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkRWxlbWVudENoYW5n
ZWQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVy
bjsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoIWlzPEhU
TUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBIVE1MSW5w
dXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZWxl
bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMTIxNDE3ZTlkYTYwYTg1YjMzNzA5
ZWVjOTA0YzYxYWNhZjYwZWU5ZC4uNGI1MjlhOTdlODA4YWViNDNhMjNlZWY2NWNlZWFlMWIwNGY0
N2U1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCop
CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoRWxlbWVu
dCogZWxlbWVudCkKIHsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChlbGVtZW50KSkKKyAg
ICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZWxlbWVu
dC0+ZG9jdW1lbnQoKS5mcmFtZSgpKTsKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6dGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqIGVsZW1lbnQpCiAKIHZv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RmllbGREaWRFbmRFZGl0aW5nKEVsZW1lbnQqIGVsZW1l
bnQpCiB7Ci0gICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFp
czxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2Vi
RnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmVsZW1lbnQtPmRvY3Vt
ZW50KCkuZnJhbWUoKSk7CkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OnRleHRGaWVsZERpZEVuZEVkaXRpbmcoRWxlbWVudCogZWxlbWVudCkKIAogdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChFbGVtZW50KiBlbGVtZW50KQogewot
ICAgIGlmICghaXNIVE1MSW5wdXRFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmICghaXM8SFRNTElu
cHV0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaW5pdGlh
dGVkQnlVc2VyVHlwaW5nID0gVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdV
c2VyVHlwaW5nR2VzdHVyZSgpICYmIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yOjpmb2N1c2Vk
RWxlbWVudEF0R2VzdHVyZVN0YXJ0KCkgPT0gZWxlbWVudDsKQEAgLTMzMCw3ICszMzAsNyBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4dEZpZWxkKEVsZW1lbnQqIGVs
ZW1lbnQpCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShF
bGVtZW50KiBlbGVtZW50KQogewotICAgIGlmICghaXNIVE1MVGV4dEFyZWFFbGVtZW50KGVsZW1l
bnQpKQorICAgIGlmICghaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZy
YW1lKCplbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpOwpAQCAtMzkzLDcgKzM5Myw3IEBAIHN0
YXRpYyBBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50OjpJbnB1dEZpZWxkQWN0aW9uIHRv
SW5wdXRGaWVsZEFjdGlvbihXS0luCiAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojpkb1RleHRGaWVs
ZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCogZWxlbWVudCwgS2V5Ym9hcmRFdmVudCogZXZlbnQp
CiB7Ci0gICAgaWYgKCFpc0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFpczxI
VE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
V0tJbnB1dEZpZWxkQWN0aW9uVHlwZSBhY3Rpb25UeXBlID0gc3RhdGljX2Nhc3Q8V0tJbnB1dEZp
ZWxkQWN0aW9uVHlwZT4oMCk7CkBAIC00MDgsNyArNDA4LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGll
bnQ6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiBlbGVtZW50LCBLZXlib2Fy
ZEV2ZW4KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRleHRXaWxsQmVEZWxldGVkSW5UZXh0Rmll
bGQoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBpZiAoIWlzSFRNTElucHV0RWxlbWVudChlbGVt
ZW50KSkKKyAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFt
ZSgqZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDIwNTk5ZDc5M2QzZTZmMmMxNzBmYmRj
ZDRlM2VkYjkyZGQ2M2MzNjkuLjM3MmRlNDNlMmFmNGE3MDg1ZDQ4MmJjMjgyMmFjZjRmYzhkZTk2
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cApAQCAtNjMzLDcgKzYzMyw3IEBAIGJvb2wgV2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUNvbnRy
b2xzKCkgY29uc3QKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVt
ZW50KCk7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpKSB7CiAgICAgICAg
IGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQobm9kZSkgfHwgaXNIVE1MU2VsZWN0RWxlbWVudChu
b2RlKSB8fCBpc0hUTUxUZXh0QXJlYUVsZW1lbnQobm9kZSkpCisgICAgICAgIGlmIChpczxIVE1M
SW5wdXRFbGVtZW50Pihub2RlKSB8fCBpczxIVE1MU2VsZWN0RWxlbWVudD4obm9kZSkgfHwgaXM8
SFRNTFRleHRBcmVhRWxlbWVudD4obm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGI0YWYwMjA2NWU0MDkzYzgwYzBiY2Yz
ZjI4NjNlYWUzZmY3M2QyNmYuLmU3YWYxYWQ2NjJiY2QzN2U0ZGU4MzlhMTY2Y2UzMTg0ODQzM2Q4
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KQEAgLTYxMiw3ICs2MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEFzc2lzdGVk
Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKCFtX2Fzc2lzdGVkTm9k
ZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChpc0hUTUxJbnB1dEVsZW1lbnQoKm1fYXNzaXN0
ZWROb2RlKSkgeworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqbV9hc3Npc3RlZE5vZGUp
KSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50PigqbV9hc3Npc3RlZE5vZGUpOwogICAgICAgICBlbGVtZW50LnNldFZhbHVlKHZh
bHVlLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOwogICAgIH0KQEAgLTYyMyw3ICs2MjMs
NyBAQCB2b2lkIFdlYlBhZ2U6OnNldEFzc2lzdGVkTm9kZVZhbHVlQXNOdW1iZXIoZG91YmxlIHZh
bHVlKQogewogICAgIGlmICghbV9hc3Npc3RlZE5vZGUpCiAgICAgICAgIHJldHVybjsKLSAgICBp
ZiAoaXNIVE1MSW5wdXRFbGVtZW50KCptX2Fzc2lzdGVkTm9kZSkpIHsKKyAgICBpZiAoaXM8SFRN
TElucHV0RWxlbWVudD4oKm1fYXNzaXN0ZWROb2RlKSkgewogICAgICAgICBIVE1MSW5wdXRFbGVt
ZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fYXNzaXN0ZWROb2Rl
KTsKICAgICAgICAgZWxlbWVudC5zZXRWYWx1ZUFzTnVtYmVyKHZhbHVlLCBBU1NFUlRfTk9fRVhD
RVBUSU9OLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOwogICAgIH0KQEAgLTYzMSw3ICs2
MzEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEFzc2lzdGVkTm9kZVZhbHVlQXNOdW1iZXIoZG91Ymxl
IHZhbHVlKQogCiB2b2lkIFdlYlBhZ2U6OnNldEFzc2lzdGVkTm9kZVNlbGVjdGVkSW5kZXgodWlu
dDMyX3QgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbikKIHsKLSAgICBpZiAoIW1f
YXNzaXN0ZWROb2RlIHx8ICFpc0hUTUxTZWxlY3RFbGVtZW50KCptX2Fzc2lzdGVkTm9kZSkpCisg
ICAgaWYgKCFtX2Fzc2lzdGVkTm9kZSB8fCAhaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KCptX2Fzc2lz
dGVkTm9kZSkpCiAgICAgICAgIHJldHVybjsKICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0
ID0gZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KCptX2Fzc2lzdGVkTm9kZSk7CiAgICAgc2Vs
ZWN0Lm9wdGlvblNlbGVjdGVkQnlVc2VyKGluZGV4LCB0cnVlLCBhbGxvd011bHRpcGxlU2VsZWN0
aW9uKTsKQEAgLTE5OTAsMTEgKzE5OTAsMTEgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9u
T25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKIAogc3RhdGljIGlubGluZSBib29sIGlzQXNzaXN0
YWJsZU5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoaXNIVE1MU2VsZWN0RWxlbWVudChub2Rl
KSkKKyAgICBpZiAoaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAoaXNIVE1MVGV4dEFyZWFFbGVtZW50KG5vZGUpKQorICAgIGlmIChpczxI
VE1MVGV4dEFyZWFFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuICFkb3duY2FzdDxIVE1M
VGV4dEFyZWFFbGVtZW50Pigqbm9kZSkuaXNSZWFkT25seU5vZGUoKTsKLSAgICBpZiAoaXNIVE1M
SW5wdXRFbGVtZW50KG5vZGUpKSB7CisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUp
KSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgIHJldHVybiAhZWxlbWVudC5pc1JlYWRPbmx5Tm9k
ZSgpICYmIChlbGVtZW50LmlzVGV4dEZpZWxkKCkgfHwgZWxlbWVudC5pc0RhdGVGaWVsZCgpIHx8
IGVsZW1lbnQuaXNEYXRlVGltZUxvY2FsRmllbGQoKSB8fCBlbGVtZW50LmlzTW9udGhGaWVsZCgp
IHx8IGVsZW1lbnQuaXNUaW1lRmllbGQoKSk7CiAgICAgfQpAQCAtMjA2Niw3ICsyMDY2LDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbiYgaW5mb3JtYXRpb24pCiAgICAgaW5mb3JtYXRpb24uaGFzTmV4dE5vZGUgPSBoYXNG
b2N1c2FibGVFbGVtZW50KG1fYXNzaXN0ZWROb2RlLmdldCgpLCBtX3BhZ2UuZ2V0KCksIHRydWUp
OwogICAgIGluZm9ybWF0aW9uLmhhc1ByZXZpb3VzTm9kZSA9IGhhc0ZvY3VzYWJsZUVsZW1lbnQo
bV9hc3Npc3RlZE5vZGUuZ2V0KCksIG1fcGFnZS5nZXQoKSwgZmFsc2UpOwogCi0gICAgaWYgKGlz
SFRNTFNlbGVjdEVsZW1lbnQoKm1fYXNzaXN0ZWROb2RlKSkgeworICAgIGlmIChpczxIVE1MU2Vs
ZWN0RWxlbWVudD4oKm1fYXNzaXN0ZWROb2RlKSkgewogICAgICAgICBIVE1MU2VsZWN0RWxlbWVu
dCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PigqbV9hc3Npc3RlZE5vZGUp
OwogICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IElucHV0VHlwZTo6U2VsZWN0Owog
ICAgICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgaXRlbXMgPSBlbGVtZW50Lmxpc3RJ
dGVtcygpOwpAQCAtMjA3Nyw3ICsyMDc3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRBc3Npc3RlZE5v
ZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24pCiAgICAg
ICAgIC8vIElmIGEgc2VsZWN0IGRvZXMgbm90IGhhdmUgZ3JvdXBzLCBhbGwgdGhlIG9wdGlvbiBl
bGVtZW50cyBoYXZlIGdyb3VwIElEIDAuCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgewogICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGl0ZW0gPSBpdGVtc1tpXTsK
LSAgICAgICAgICAgIGlmIChpc0hUTUxPcHRpb25FbGVtZW50KGl0ZW0pKSB7CisgICAgICAgICAg
ICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW0pKSB7CiAgICAgICAgICAgICAgICAgSFRN
TE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqaXRl
bSk7CiAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uc2VsZWN0T3B0aW9ucy5hcHBlbmQoT3B0
aW9uSXRlbShvcHRpb24udGV4dCgpLCBmYWxzZSwgcGFyZW50R3JvdXBJRCwgb3B0aW9uLnNlbGVj
dGVkKCksIG9wdGlvbi5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6ZGlzYWJs
ZWRBdHRyKSkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0hUTUxPcHRHcm91cEVsZW1lbnQo
aXRlbSkpIHsKQEAgLTIwODgsMTQgKzIwODgsMTQgQEAgdm9pZCBXZWJQYWdlOjpnZXRBc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24pCiAg
ICAgICAgIH0KICAgICAgICAgaW5mb3JtYXRpb24uc2VsZWN0ZWRJbmRleCA9IGVsZW1lbnQuc2Vs
ZWN0ZWRJbmRleCgpOwogICAgICAgICBpbmZvcm1hdGlvbi5pc011bHRpU2VsZWN0ID0gZWxlbWVu
dC5tdWx0aXBsZSgpOwotICAgIH0gZWxzZSBpZiAoaXNIVE1MVGV4dEFyZWFFbGVtZW50KCptX2Fz
c2lzdGVkTm9kZSkpIHsKKyAgICB9IGVsc2UgaWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCpt
X2Fzc2lzdGVkTm9kZSkpIHsKICAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCYgZWxlbWVudCA9
IGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCptX2Fzc2lzdGVkTm9kZSk7CiAgICAgICAg
IGluZm9ybWF0aW9uLmF1dG9jYXBpdGFsaXplVHlwZSA9IHN0YXRpY19jYXN0PFdlYkF1dG9jYXBp
dGFsaXplVHlwZT4oZWxlbWVudC5hdXRvY2FwaXRhbGl6ZVR5cGUoKSk7CiAgICAgICAgIGluZm9y
bWF0aW9uLmlzQXV0b2NvcnJlY3QgPSBlbGVtZW50LmF1dG9jb3JyZWN0KCk7CiAgICAgICAgIGlu
Zm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBlOjpUZXh0QXJlYTsKICAgICAgICAgaW5m
b3JtYXRpb24uaXNSZWFkT25seSA9IGVsZW1lbnQuaXNSZWFkT25seSgpOwogICAgICAgICBpbmZv
cm1hdGlvbi52YWx1ZSA9IGVsZW1lbnQudmFsdWUoKTsKLSAgICB9IGVsc2UgaWYgKGlzSFRNTElu
cHV0RWxlbWVudCgqbV9hc3Npc3RlZE5vZGUpKSB7CisgICAgfSBlbHNlIGlmIChpczxIVE1MSW5w
dXRFbGVtZW50PigqbV9hc3Npc3RlZE5vZGUpKSB7CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQm
IGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9hc3Npc3RlZE5vZGUpOwog
ICAgICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBlbGVtZW50LmZvcm0oKTsKICAgICAgICAg
aWYgKGZvcm0pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>