<?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>139587</bug_id>
          
          <creation_ts>2014-12-12 08:42:05 -0800</creation_ts>
          <short_desc>Replace PassRef with Ref/Ref&amp;&amp; across the board.</short_desc>
          <delta_ts>2014-12-15 09:01:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1054834</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-12 08:42:05 -0800</bug_when>
    <thetext>If we allow Ref to become &quot;invalid&quot; after moving out of it, we don&apos;t need the PassRef class at all.
Ref&lt;T&gt; for return values, Ref&lt;T&gt;&amp;&amp; for arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054835</commentid>
    <comment_count>1</comment_count>
      <attachid>243199</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-12 08:43:24 -0800</bug_when>
    <thetext>Created attachment 243199
Snack for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054838</commentid>
    <comment_count>2</comment_count>
      <attachid>243200</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-12 09:13:48 -0800</bug_when>
    <thetext>Created attachment 243200
Snack for EWS II</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054839</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-12 09:16:56 -0800</bug_when>
    <thetext>Attachment 243200 did not pass style-queue:


ERROR: Source/WTF/wtf/PassRefPtr.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/Font.cpp:218:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/style/DataRef.h:33:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Ref.h:104:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Ref.h:109:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Ref.h:120:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/text/WTFString.h:118:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 7 in 582 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054862</commentid>
    <comment_count>4</comment_count>
      <attachid>243207</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-12 11:11:33 -0800</bug_when>
    <thetext>Created attachment 243207
Potentially a patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054863</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-12 11:15:16 -0800</bug_when>
    <thetext>Attachment 243207 did not pass style-queue:


ERROR: Source/WTF/wtf/PassRefPtr.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/style/DataRef.h:33:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Ref.h:104:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Ref.h:109:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/text/WTFString.h:118:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 5 in 599 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055299</commentid>
    <comment_count>6</comment_count>
      <attachid>243220</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-12 14:57:34 -0800</bug_when>
    <thetext>Created attachment 243220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055300</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-12 15:00:48 -0800</bug_when>
    <thetext>Attachment 243220 did not pass style-queue:


ERROR: Source/WTF/wtf/PassRefPtr.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/style/DataRef.h:33:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Ref.h:105:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Ref.h:110:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/text/WTFString.h:118:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 5 in 599 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055461</commentid>
    <comment_count>8</comment_count>
      <attachid>243220</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-12-13 18:56:17 -0800</bug_when>
    <thetext>Comment on attachment 243220
Patch

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

Nice.

If we forget to use WTF::move when passing a Ref to a Ref&amp;&amp; argument, what happens? Do we get a compilation error?

I’m also a bit confused about why we have to use WTF::move to when assigning to a Ref from a Ref&amp;&amp; argument. What does the WTF::move accomplish again? Same question but about the case where we are passing a Ref&amp;&amp; argument into another function that takes a Ref&amp;&amp;. I think we have a *lot* of WTF::move that we could remove now that we are using Ref&amp;&amp; instead of PassRef, unless I’m mixed up about something.

&gt; Source/WTF/wtf/text/WTFString.h:118
&gt; -    String(PassRef&lt;StringImpl&gt;&amp;&amp; impl) : m_impl(std::forward&lt;PassRef&lt;StringImpl&gt;&gt;(impl)) { }
&gt; +    String(Ref&lt;StringImpl&gt;&amp;&amp; impl) : m_impl(std::forward&lt;Ref&lt;StringImpl&gt;&gt;(impl)) { }

I would have used WTF::move here. Is std::forward better for some reason? I was under the impression that std::forward typically only was needed when there were templates involved and the precise type was not known.

&gt; Source/WTF/wtf/text/WTFString.h:515
&gt; -    : m_impl(vector.size() ? StringImpl::create(vector.data(), vector.size()) : *StringImpl::empty())
&gt; +    : m_impl(vector.size() ? StringImpl::create(vector.data(), vector.size()) : Ref&lt;StringImpl&gt;(*StringImpl::empty()))

Explicit construction here is annoying; I see it’s needed in a few places. More on this in a comment below.

&gt; Source/WebCore/css/CSSFunctionValue.h:43
&gt; +    static Ref&lt;CSSFunctionValue&gt; create(String name, PassRefPtr&lt;CSSValueList&gt; args)

Peculiar that this uses String. I would have expected const String&amp; and I was wondering if String is used whether we also should be doing WTF::move on the String when passing it along.

&gt; Source/WebCore/platform/graphics/Font.cpp:221
&gt; +    FontGlyphsCacheEntry(FontGlyphsCacheKey&amp;&amp; k, Ref&lt;FontGlyphs&gt;&amp;&amp; g)
&gt; +        : key(WTF::move(k))
&gt; +        , glyphs(WTF::move(g))
&gt; +    { }

We should just dump constructors like this from structs and use FontGlyphsCacheEntry{ x, y } syntax instead of a constructor.

&gt; Source/WebCore/rendering/RenderScrollbarPart.h:38
&gt; +    RenderScrollbarPart(Document&amp;, Ref&lt;RenderStyle&gt;&amp;&amp;, RenderScrollbar* = 0, ScrollbarPart = NoPart);

Missed a chance to nullptr-ify here.

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:258
&gt; -    Ref&lt;MutableStyleProperties&gt; mutableStyle(style-&gt;isMutable() ? static_cast&lt;MutableStyleProperties&amp;&gt;(*style) : style-&gt;mutableCopy());
&gt; +    Ref&lt;MutableStyleProperties&gt; mutableStyle(style-&gt;isMutable() ? Ref&lt;MutableStyleProperties&gt;(static_cast&lt;MutableStyleProperties&amp;&gt;(*style)) : style-&gt;mutableCopy());

We were getting away without the cast before. Why do we need it now?

If this was going to happen a lot, I would suggest providing a template function to wrap in a Ref like this, so we don’t have to repeat the type names such as MutableStyleProperties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055480</commentid>
    <comment_count>9</comment_count>
      <attachid>243220</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-14 00:20:33 -0800</bug_when>
    <thetext>Comment on attachment 243220
Patch

Clearing flags on attachment: 243220

Committed r177259: &lt;http://trac.webkit.org/changeset/177259&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055481</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-14 00:20:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055482</commentid>
    <comment_count>11</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-14 00:44:00 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 243220 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=243220&amp;action=review
&gt; 
&gt; Nice.
&gt; 
&gt; If we forget to use WTF::move when passing a Ref to a Ref&amp;&amp; argument, what
&gt; happens? Do we get a compilation error?

We do. You either have to WTF::move(), or .copyRef() the Ref, in order to pass it to a Ref&amp;&amp; argument.

&gt; I’m also a bit confused about why we have to use WTF::move to when assigning
&gt; to a Ref from a Ref&amp;&amp; argument. What does the WTF::move accomplish again?
&gt; Same question but about the case where we are passing a Ref&amp;&amp; argument into
&gt; another function that takes a Ref&amp;&amp;. I think we have a *lot* of WTF::move
&gt; that we could remove now that we are using Ref&amp;&amp; instead of PassRef, unless
&gt; I’m mixed up about something.

AFAICT that is still necessary.

&gt; &gt; Source/WTF/wtf/text/WTFString.h:118
&gt; &gt; -    String(PassRef&lt;StringImpl&gt;&amp;&amp; impl) : m_impl(std::forward&lt;PassRef&lt;StringImpl&gt;&gt;(impl)) { }
&gt; &gt; +    String(Ref&lt;StringImpl&gt;&amp;&amp; impl) : m_impl(std::forward&lt;Ref&lt;StringImpl&gt;&gt;(impl)) { }
&gt; 
&gt; I would have used WTF::move here. Is std::forward better for some reason? I
&gt; was under the impression that std::forward typically only was needed when
&gt; there were templates involved and the precise type was not known.

&gt; 
&gt; &gt; Source/WebCore/css/CSSFunctionValue.h:43
&gt; &gt; +    static Ref&lt;CSSFunctionValue&gt; create(String name, PassRefPtr&lt;CSSValueList&gt; args)
&gt; 
&gt; Peculiar that this uses String. I would have expected const String&amp; and I
&gt; was wondering if String is used whether we also should be doing WTF::move on
&gt; the String when passing it along.

Will tweak.

&gt; &gt; Source/WebCore/platform/graphics/Font.cpp:221
&gt; &gt; +    FontGlyphsCacheEntry(FontGlyphsCacheKey&amp;&amp; k, Ref&lt;FontGlyphs&gt;&amp;&amp; g)
&gt; &gt; +        : key(WTF::move(k))
&gt; &gt; +        , glyphs(WTF::move(g))
&gt; &gt; +    { }
&gt; 
&gt; We should just dump constructors like this from structs and use
&gt; FontGlyphsCacheEntry{ x, y } syntax instead of a constructor.

Will tweak.

&gt; &gt; Source/WebCore/rendering/RenderScrollbarPart.h:38
&gt; &gt; +    RenderScrollbarPart(Document&amp;, Ref&lt;RenderStyle&gt;&amp;&amp;, RenderScrollbar* = 0, ScrollbarPart = NoPart);
&gt; 
&gt; Missed a chance to nullptr-ify here.

Will tweak.

&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:258
&gt; &gt; -    Ref&lt;MutableStyleProperties&gt; mutableStyle(style-&gt;isMutable() ? static_cast&lt;MutableStyleProperties&amp;&gt;(*style) : style-&gt;mutableCopy());
&gt; &gt; +    Ref&lt;MutableStyleProperties&gt; mutableStyle(style-&gt;isMutable() ? Ref&lt;MutableStyleProperties&gt;(static_cast&lt;MutableStyleProperties&amp;&gt;(*style)) : style-&gt;mutableCopy());
&gt; 
&gt; We were getting away without the cast before. Why do we need it now?

Because Chris added an operator T&amp; to Ref, so now that ternary becomes ambiguous.

&gt; 
&gt; If this was going to happen a lot, I would suggest providing a template
&gt; function to wrap in a Ref like this, so we don’t have to repeat the type
&gt; names such as MutableStyleProperties.

I don&apos;t think it&apos;ll happen a lot, though that&apos;s not a bad idea either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055626</commentid>
    <comment_count>12</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-15 09:01:28 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 243220 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=243220&amp;action=review
&gt; &gt; 
&gt; &gt; Nice.
&gt; &gt; 
&gt; &gt; If we forget to use WTF::move when passing a Ref to a Ref&amp;&amp; argument, what
&gt; &gt; happens? Do we get a compilation error?
&gt; 
&gt; We do. You either have to WTF::move(), or .copyRef() the Ref, in order to
&gt; pass it to a Ref&amp;&amp; argument.
&gt; 
&gt; &gt; I’m also a bit confused about why we have to use WTF::move to when assigning
&gt; &gt; to a Ref from a Ref&amp;&amp; argument. What does the WTF::move accomplish again?
&gt; &gt; Same question but about the case where we are passing a Ref&amp;&amp; argument into
&gt; &gt; another function that takes a Ref&amp;&amp;. I think we have a *lot* of WTF::move
&gt; &gt; that we could remove now that we are using Ref&amp;&amp; instead of PassRef, unless
&gt; &gt; I’m mixed up about something.
&gt; 
&gt; AFAICT that is still necessary.

Anything that has a name is considered an lvalue, even if it&apos;s an rvalue reference.

&gt; 
&gt; &gt; &gt; Source/WTF/wtf/text/WTFString.h:118
&gt; &gt; &gt; -    String(PassRef&lt;StringImpl&gt;&amp;&amp; impl) : m_impl(std::forward&lt;PassRef&lt;StringImpl&gt;&gt;(impl)) { }
&gt; &gt; &gt; +    String(Ref&lt;StringImpl&gt;&amp;&amp; impl) : m_impl(std::forward&lt;Ref&lt;StringImpl&gt;&gt;(impl)) { }
&gt; &gt; 
&gt; &gt; I would have used WTF::move here. Is std::forward better for some reason? I
&gt; &gt; was under the impression that std::forward typically only was needed when
&gt; &gt; there were templates involved and the precise type was not known.

Yes, WTF::forward should only be used when the parameter is a &quot;forwarding reference&quot;. (T&amp;&amp; where T is a template parameter).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243199</attachid>
            <date>2014-12-12 08:43:24 -0800</date>
            <delta_ts>2014-12-12 09:13:48 -0800</delta_ts>
            <desc>Snack for EWS</desc>
            <filename>ews-139587.diff</filename>
            <type>text/plain</type>
            <size>540267</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKaW5kZXggNjc3
N2YxNi4uZTA4MTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
Zmllci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgV1RGOjpUaHJlYWRTcGVjaWZpYzsKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKFZN
KiB2bSwgY29uc3QgY2hhciogYykKK1JlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQoVk0q
IHZtLCBjb25zdCBjaGFyKiBjKQogewogICAgIEFTU0VSVChjKTsKICAgICBBU1NFUlQoY1swXSk7
CkBAIC00OCwxMiArNDgsMTIgQEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQo
Vk0qIHZtLCBjb25zdCBjaGFyKiBjKQogICAgIHJldHVybiAqQXRvbWljU3RyaW5nOjphZGQoYyk7
CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgY2hhciogYykKK1JlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjKQogewogICAgIHJldHVybiBhZGQoJmV4ZWMtPnZtKCks
IGMpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZDgoVk0qIHZtLCBj
b25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkKK1JlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjph
ZGQ4KFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKGxlbmd0
aCA9PSAxKSB7CiAgICAgICAgIFVDaGFyIGMgPSBzWzBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IGQ5ZmUyMGQuLjAxMzJkMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTk3LDggKzk3LDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0
cmluZ0ltcGwqIGIpIHsgcmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0KIAogICAgIC8vIE9ubHkgdG8g
YmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZGQoVk0qLCBjb25zdCBjaGFyKik7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIGNv
bnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGFkZChWTSosIGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7CiAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIApAQCAtMTExLDEyICsxMTEsMTIgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBJZGVudGlm
aWVyJiBiKSB7IHJldHVybiBhLm1fc3RyaW5nLmltcGwoKSA9PSBiLm1fc3RyaW5nLmltcGwoKTsg
fQogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IExDaGFy
KiBiKSB7IHJldHVybiBlcXVhbChhLm1fc3RyaW5nLmltcGwoKSwgYik7IH0KIAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZGQoVk0qLCBjb25z
dCBUKiwgaW50IGxlbmd0aCk7Ci0gICAgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkOChW
TSosIGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKFZNKiwgY29uc3QgVCosIGludCBsZW5ndGgpOwor
ICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkOChWTSosIGNvbnN0IFVDaGFyKiwgaW50IGxl
bmd0aCk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJv
b2wgY2FuVXNlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFQpOwogCi0gICAgc3RhdGljIFBhc3NSZWY8
U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKTsKLSAgICBzdGF0aWMgUGFz
c1JlZjxTdHJpbmdJbXBsPiBhZGQoVk0qLCBTdHJpbmdJbXBsKik7CisgICAgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCopOworICAgIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gYWRkKFZNKiwgU3RyaW5nSW1wbCopOwogCiAjaWZuZGVmIE5ERUJVRwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKEV4ZWNTdGF0ZSopOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHRlbXBsYXRlIDw+IEFMV0FZU19J
TkxJTkUgYm9vbCBJZGVudGlmaWVyOjpjYW5Vc2VTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoVUNoYXIg
YykKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1QYXNzUmVmPFN0cmluZ0ltcGw+IElkZW50
aWZpZXI6OmFkZChWTSogdm0sIGNvbnN0IFQqIHMsIGludCBsZW5ndGgpCitSZWY8U3RyaW5nSW1w
bD4gSWRlbnRpZmllcjo6YWRkKFZNKiB2bSwgY29uc3QgVCogcywgaW50IGxlbmd0aCkKIHsKICAg
ICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAgVCBjID0gc1swXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCmluZGV4IGVmYzNkM2Mu
Ljc0NzJkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIGlubGluZSBJZGVudGlmaWVyOjpJZGVu
dGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiAjZW5k
aWYKIH0KIAotaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKEV4ZWNT
dGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcikKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gSWRlbnRp
Zmllcjo6YWRkKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcikKIHsKICNpZm5kZWYgTkRF
QlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhlYyk7CiAjZW5kaWYKICAg
ICByZXR1cm4gKkF0b21pY1N0cmluZzo6YWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoKmV4ZWMs
IHIpOwogfQotaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKFZNKiB2
bSwgU3RyaW5nSW1wbCogcikKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRk
KFZNKiB2bSwgU3RyaW5nSW1wbCogcikKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tDdXJy
ZW50QXRvbWljU3RyaW5nVGFibGUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFz
c1JlZi5oIGIvU291cmNlL1dURi93dGYvUGFzc1JlZi5oCmluZGV4IDI2ZDE0ZDQuLjMxYzQ4N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QYXNzUmVmLmgKQEAgLTEsMTU0ICsxIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMy0y
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5k
ZWYgV1RGX1Bhc3NSZWZfaAotI2RlZmluZSBXVEZfUGFzc1JlZl9oCi0KLSNpbmNsdWRlICJBc3Nl
cnRpb25zLmgiCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi1uYW1l
c3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZjsKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBSZWY7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWZQdHI7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFBhc3NSZWY8VD4gYWRvcHRSZWYoVCYpOwotCi1pbmxpbmUgdm9pZCBhZG9w
dGVkKGNvbnN0IHZvaWQqKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1Jl
ZiB7Ci1wdWJsaWM6Ci0gICAgUGFzc1JlZihUJik7Ci0gICAgUGFzc1JlZihQYXNzUmVmJiYpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWYoY29uc3QgUmVmPFU+Jik7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gUGFzc1JlZihQYXNzUmVmPFU+KTsKLQotICAgIGNvbnN0IFQmIGdl
dCgpIGNvbnN0OwotICAgIFQmIGdldCgpOwotCi0gICAgY29uc3QgVCogcHRyKCkgY29uc3Q7Ci0g
ICAgVCogcHRyKCk7Ci0KLSAgICBUJiBsZWFrUmVmKCkgV0FSTl9VTlVTRURfUkVUVVJOOwotCi0g
ICAgflBhc3NSZWYoKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgUGFzc1JlZiBhZG9wdFJlZjxU
PihUJik7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgY2xhc3MgUGFzc1JlZjsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgY2xhc3MgUGFzc1JlZlB0cjsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgY2xhc3MgUmVmOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IGZyaWVuZCBjbGFzcyBSZWZQdHI7Ci0KLSAgICBlbnVtIEFkb3B0VGFnIHsgQWRvcHQg
fTsKLSAgICBQYXNzUmVmKFQmLCBBZG9wdFRhZyk7Ci0KLSAgICBUKiBtX3B0cjsKLSAgICBib29s
IG1fZ2F2ZVVwUmVmZXJlbmNlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBh
c3NSZWY8VD46OlBhc3NSZWYoVCYgcmVmZXJlbmNlKQotICAgIDogbV9wdHIoJnJlZmVyZW5jZSkK
LXsKLSAgICBtX3B0ci0+cmVmKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQ
YXNzUmVmPFQ+OjpQYXNzUmVmKFBhc3NSZWYmJiBvdGhlcikKLSAgICA6IG1fcHRyKCZvdGhlci5s
ZWFrUmVmKCkpCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1l
IFU+IGlubGluZSBQYXNzUmVmPFQ+OjpQYXNzUmVmKFBhc3NSZWY8VT4gb3RoZXIpCi0gICAgOiBt
X3B0cigmb3RoZXIubGVha1JlZigpKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZjxUPjo6UGFzc1JlZihjb25zdCBSZWY8VT4m
IG90aGVyKQotICAgIDogbV9wdHIoc3RhdGljX2Nhc3Q8VCo+KGNvbnN0X2Nhc3Q8VSo+KG90aGVy
LnB0cigpKSkpCi17Ci0gICAgQVNTRVJUKG1fcHRyKTsKLSAgICBtX3B0ci0+cmVmKCk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFBhc3NSZWY8VD46On5QYXNzUmVmKCkKLXsKLSAgICBpZiAo
bV9wdHIpCi0gICAgICAgIG1fcHRyLT5kZXJlZigpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgY29uc3QgVCYgUGFzc1JlZjxUPjo6Z2V0KCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV9wdHIpOwotICAgIHJldHVybiAqbV9wdHI7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBUJiBQYXNzUmVmPFQ+OjpnZXQoKQotewotICAgIEFTU0VSVChtX3B0cik7Ci0gICAgcmV0
dXJuICptX3B0cjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCogUGFzc1JlZjxU
Pjo6cHRyKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9wdHIpOwotICAgIHJldHVybiBtX3B0cjsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCogUGFzc1JlZjxUPjo6cHRyKCkKLXsKLSAgICBB
U1NFUlQobV9wdHIpOwotICAgIHJldHVybiBtX3B0cjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIFQmIFBhc3NSZWY8VD46OmxlYWtSZWYoKQotewotICAgIEFTU0VSVChtX3B0cik7
Ci0gICAgVCogbGVha2VkUHRyID0gbV9wdHI7Ci0gICAgbV9wdHIgPSBudWxscHRyOwotICAgIHJl
dHVybiAqbGVha2VkUHRyOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1Jl
ZjxUPjo6UGFzc1JlZihUJiByZWZlcmVuY2UsIEFkb3B0VGFnKQotICAgIDogbV9wdHIoJnJlZmVy
ZW5jZSkKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWY8VD4gYWRv
cHRSZWYoVCYgcmVmZXJlbmNlKQotewotICAgIGFkb3B0ZWQoJnJlZmVyZW5jZSk7Ci0gICAgcmV0
dXJuIFBhc3NSZWY8VD4ocmVmZXJlbmNlLCBQYXNzUmVmPFQ+OjpBZG9wdCk7Ci19Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGlubGluZSBQYXNzUmVmPFQ+IGNyZWF0
ZVJlZkNvdW50ZWQoQXJncyYmLi4uIGFyZ3MpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RG
Ci0KLXVzaW5nIFdURjo6UGFzc1JlZjsKLXVzaW5nIFdURjo6YWRvcHRSZWY7Ci11c2luZyBXVEY6
OmNyZWF0ZVJlZkNvdW50ZWQ7Ci0KLSNlbmRpZiAvLyBXVEZfUGFzc1JlZl9oCisvLyBEZWxldGUg
bWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYXNzUmVmUHRyLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QYXNzUmVmUHRyLmgKaW5kZXggNmY4MDRhMC4uZGQzNzhlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGFzc1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWZQdHIu
aApAQCAtMjIsMTAgKzIyLDEyIEBACiAjZGVmaW5lIFdURl9QYXNzUmVmUHRyX2gKIAogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZi5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBSZWZQdHI7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNzUmVmUHRyPFQ+IGFkb3B0UmVmKFQqKTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFMV0FZU19JTkxJTkUgdm9pZCByZWZJZk5vdE51bGwo
VCogcHRyKQpAQCAtNTYsNyArNTgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgQUxXQVlT
X0lOTElORSB+UGFzc1JlZlB0cigpIHsgZGVyZWZJZk5vdE51bGwobV9wdHIpOyB9CiAKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUGFzc1JlZlB0cihjb25zdCBSZWZQdHI8VT4mKTsKLSAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUGFzc1JlZlB0cihQYXNzUmVmPFU+IHJlZmVyZW5j
ZSkgOiBtX3B0cigmcmVmZXJlbmNlLmxlYWtSZWYoKSkgeyB9CisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IFBhc3NSZWZQdHIoUmVmPFU+JiYgcmVmZXJlbmNlKSA6IG1fcHRyKCZyZWZlcmVu
Y2UubGVha1JlZigpKSB7IH0KIAogICAgICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0
cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaCBiL1NvdXJjZS9XVEYvd3Rm
L1JlZi5oCmluZGV4IDY1NDg1YjEuLmI5YmE3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1JlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDQ5ICszMSw5OCBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZjsKK2lubGlu
ZSB2b2lkIGFkb3B0ZWQoY29uc3Qgdm9pZCopIHsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBSZWY7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBSZWY8VD4gYWRvcHRSZWYoVCYpOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWYgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlZikKIHB1YmxpYzoKLSAgICBSZWYoVCYgb2JqZWN0KSA6IG1fcHRyKCZvYmplY3QpIHsgbV9w
dHItPnJlZigpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmKFBhc3NSZWY8VT4gcmVm
ZXJlbmNlKSA6IG1fcHRyKCZyZWZlcmVuY2UubGVha1JlZigpKSB7IH0KKyAgICB+UmVmKCkKKyAg
ICB7CisgICAgICAgIGlmIChtX3B0cikKKyAgICAgICAgICAgIG1fcHRyLT5kZXJlZigpOworICAg
IH0KKworICAgIFJlZihUJiBvYmplY3QpCisgICAgICAgIDogbV9wdHIoJm9iamVjdCkKKyAgICB7
CisgICAgICAgIG1fcHRyLT5yZWYoKTsKKyAgICB9CiAKLSAgICB+UmVmKCkgeyBtX3B0ci0+ZGVy
ZWYoKTsgfQorICAgIFJlZihSZWYmJiBvdGhlcikKKyAgICAgICAgOiBtX3B0cigmb3RoZXIubGVh
a1JlZigpKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIFJl
ZihSZWY8VT4mJiBvdGhlcikKKyAgICAgICAgOiBtX3B0cigmb3RoZXIubGVha1JlZigpKQorICAg
IHsKKyAgICB9CiAKICAgICBSZWYmIG9wZXJhdG9yPShUJiBvYmplY3QpCiAgICAgeworICAgICAg
ICBBU1NFUlQobV9wdHIpOwogICAgICAgICBvYmplY3QucmVmKCk7CiAgICAgICAgIG1fcHRyLT5k
ZXJlZigpOwogICAgICAgICBtX3B0ciA9ICZvYmplY3Q7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmJiBvcGVyYXRvcj0oUGFzc1JlZjxV
PiByZWZlcmVuY2UpCisKKyAgICBSZWYmIG9wZXJhdG9yPShSZWYmJiByZWZlcmVuY2UpCisgICAg
eworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICBtX3B0ci0+ZGVyZWYoKTsKKyAgICAg
ICAgbV9wdHIgPSAmcmVmZXJlbmNlLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZiYgb3BlcmF0b3I9KFJlZjxVPiYm
IHJlZmVyZW5jZSkKICAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7CiAgICAgICAgIG1fcHRy
LT5kZXJlZigpOwogICAgICAgICBtX3B0ciA9ICZyZWZlcmVuY2UubGVha1JlZigpOwogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIG1fcHRyOyB9
CisgICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJu
IG1fcHRyOyB9CisgICAgVCogb3BlcmF0b3ItPigpIHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1f
cHRyOyB9CisKKyAgICBjb25zdCBUKiBwdHIoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJldHVy
biBtX3B0cjsgfQorICAgIFQqIHB0cigpIHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9
CiAKLSAgICBjb25zdCBUKiBwdHIoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotICAgIFQqIHB0
cigpIHsgcmV0dXJuIG1fcHRyOyB9CisgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQo
bV9wdHIpOyByZXR1cm4gKm1fcHRyOyB9CisgICAgVCYgZ2V0KCkgeyBBU1NFUlQobV9wdHIpOyBy
ZXR1cm4gKm1fcHRyOyB9CiAKLSAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqbV9w
dHI7IH0KLSAgICBUJiBnZXQoKSB7IHJldHVybiAqbV9wdHI7IH0KKyAgICBvcGVyYXRvciBUJigp
IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQorICAgIG9wZXJhdG9yIGNvbnN0IFQm
KCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gKm1fcHRyOyB9CiAKLSAgICBvcGVyYXRv
ciBUJigpIHsgcmV0dXJuICptX3B0cjsgfQotICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3Qg
eyByZXR1cm4gKm1fcHRyOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmPFQ+IHJlcGxh
Y2UoUmVmPFU+JiYpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IFBhc3NSZWY8VD4gcmVwbGFjZShQYXNzUmVmPFU+KSBXQVJOX1VOVVNFRF9SRVRVUk47Cisg
ICAgUmVmIGNvcHlSZWYoKSBXQVJOX1VOVVNFRF9SRVRVUk4KKyAgICB7CisgICAgICAgIHJldHVy
biBSZWYoKm1fcHRyKTsKKyAgICB9CisKKyAgICBUJiBsZWFrUmVmKCkgV0FSTl9VTlVTRURfUkVU
VVJOCisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICBUKiBtb3ZlZFB0ciA9
IG1fcHRyOworICAgICAgICBtX3B0ciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiAqbW92ZWRQ
dHI7CisgICAgfQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBSZWYgYWRvcHRSZWY8VD4oVCYpOwor
CisgICAgZW51bSBBZG9wdFRhZyB7IEFkb3B0IH07CisgICAgUmVmKFQmIG9iamVjdCwgQWRvcHRU
YWcpIDogbV9wdHIoJm9iamVjdCkgeyB9CisKICAgICBUKiBtX3B0cjsKIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmPFQ+IFJlZjxU
Pjo6cmVwbGFjZShQYXNzUmVmPFU+IHJlZmVyZW5jZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZWY8VD4gUmVmPFQ+OjpyZXBsYWNlKFJlZjxVPiYm
IHJlZmVyZW5jZSkKIHsKICAgICBhdXRvIG9sZFJlZmVyZW5jZSA9IGFkb3B0UmVmKCptX3B0cik7
CiAgICAgbV9wdHIgPSAmcmVmZXJlbmNlLmxlYWtSZWYoKTsKQEAgLTg2LDYgKzEzNSwxNCBAQCBz
dHJ1Y3QgR2V0UHRySGVscGVyPFJlZjxUPj4gewogICAgIHN0YXRpYyBUKiBnZXRQdHIoY29uc3Qg
UmVmPFQ+JiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQqPihwLnB0cigpKTsgfQogfTsKIAordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBSZWY8VD4gYWRvcHRSZWYoVCYgcmVmZXJlbmNlKQor
eworICAgIGFkb3B0ZWQoJnJlZmVyZW5jZSk7CisgICAgcmV0dXJuIFJlZjxUPihyZWZlcmVuY2Us
IFJlZjxUPjo6QWRvcHQpOworCit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6
OlJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL1JlZkNvdW50ZXIuaAppbmRleCBmYmZkZmZlLi5hMTA2OTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRl
ci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVm
Q291bnRlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gPSBbXSgpIHsgfSk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIH5SZWZDb3VudGVyKCk7CiAKLSAgICBQYXNzUmVmPENvdW50PiBjb3VudCgpIGNv
bnN0CisgICAgUmVmPENvdW50PiBjb3VudCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
Km1fY291bnQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmggYi9T
b3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCA1ZGU1YzczLi43NmQ2MWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApA
QCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gU2VlIGNvbW1lbnRz
IGluIFBhc3NSZWZQdHIuaCBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgdGFrZXMgYSBj
b25zdCByZWZlcmVuY2UuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0cihjb25z
dCBQYXNzUmVmUHRyPFU+Jik7CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRy
KFBhc3NSZWY8VT4mJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0cihSZWY8
VT4mJik7CiAKICAgICAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hpY2ggYXJl
IG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCiAgICAgICAg
IFJlZlB0cihIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fcHRyKGhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpKSB7IH0KQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IAogICAgICAgICB2b2lkIGNsZWFyKCk7CiAgICAgICAgIFBhc3NSZWZQdHI8VD4gcmVsZWFzZSgp
IHsgUGFzc1JlZlB0cjxUPiB0bXAgPSBhZG9wdFJlZihtX3B0cik7IG1fcHRyID0gbnVsbHB0cjsg
cmV0dXJuIHRtcDsgfQotICAgICAgICBQYXNzUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NF
UlQobV9wdHIpOyBQYXNzUmVmPFQ+IHRtcCA9IGFkb3B0UmVmKCptX3B0cik7IG1fcHRyID0gbnVs
bHB0cjsgcmV0dXJuIHRtcDsgfQorICAgICAgICBSZWY8VD4gcmVsZWFzZU5vbk51bGwoKSB7IEFT
U0VSVChtX3B0cik7IFJlZjxUPiB0bXAoYWRvcHRSZWYoKm1fcHRyKSk7IG1fcHRyID0gbnVsbHB0
cjsgcmV0dXJuIHRtcDsgfQogCiAgICAgICAgIFQqIGxlYWtSZWYoKSBXQVJOX1VOVVNFRF9SRVRV
Uk47CiAKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mKTsKICAg
ICAgICAgUmVmUHRyJiBvcGVyYXRvcj0oUmVmUHRyJiYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShSZWZQdHI8VT4mJik7Ci0gICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KFBhc3NSZWY8VT4pOworICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShSZWY8VT4mJik7CiAKICAgICAgICAg
dm9pZCBzd2FwKFJlZlB0ciYpOwogCkBAIC05Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgIHsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBpbmxpbmUgUmVmUHRyPFQ+OjpSZWZQdHIoUGFzc1JlZjxVPiYmIHJlZmVyZW5jZSkKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRy
PFQ+OjpSZWZQdHIoUmVmPFU+JiYgcmVmZXJlbmNlKQogICAgICAgICA6IG1fcHRyKCZyZWZlcmVu
Y2UubGVha1JlZigpKQogICAgIHsKICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46
Om9wZXJhdG9yPShQYXNzUmVmPFU+IHJlZmVyZW5jZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9wZXJh
dG9yPShSZWY8VT4mJiByZWZlcmVuY2UpCiAgICAgewogICAgICAgICBSZWZQdHIgcHRyID0gV1RG
Ojptb3ZlKHJlZmVyZW5jZSk7CiAgICAgICAgIHN3YXAocHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nLmNwcAppbmRleCA2YjI3NjBkLi4wNjI5MGMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmcuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEhh
c2hTZXQ8U3RyaW5nSW1wbCo+JiBzdHJpbmdUYWJsZSgpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgotc3RhdGljIGlubGluZSBQYXNzUmVmPFN0cmlu
Z0ltcGw+IGFkZFRvU3RyaW5nVGFibGUoY29uc3QgVCYgdmFsdWUpCitzdGF0aWMgaW5saW5lIFJl
ZjxTdHJpbmdJbXBsPiBhZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQogewogICAgIEF0
b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKIApAQCAtODEsNyArODEsOSBAQCBzdGF0aWMg
aW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkVG9TdHJpbmdUYWJsZShjb25zdCBUJiB2YWx1
ZSkKIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3ZSBu
ZWVkIHRvIGFkb3B0IGl0LgogICAgIC8vIFRoZSBib29sZWFuIGluIHRoZSBwYWlyIHRlbGxzIHVz
IGlmIHRoYXQgaXMgc28uCi0gICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRS
ZWYoKiphZGRSZXN1bHQuaXRlcmF0b3IpIDogKiphZGRSZXN1bHQuaXRlcmF0b3I7CisgICAgaWYg
KGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKiphZGRSZXN1
bHQuaXRlcmF0b3IpOworICAgIHJldHVybiAqKmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0KIAogc3Ry
dWN0IENTdHJpbmdUcmFuc2xhdG9yIHsKQEAgLTI0Nyw3ICsyNDksNyBAQCBSZWZQdHI8U3RyaW5n
SW1wbD4gQXRvbWljU3RyaW5nOjphZGQoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxVQ2hhckJ1ZmZlciwgVUNoYXJCdWZmZXJUcmFu
c2xhdG9yPihidWZmZXIpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IEF0b21pY1N0cmluZzo6
YWRkKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFz
aCkKK1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZChjb25zdCBVQ2hhciogcywgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpCiB7CiAgICAgQVNTRVJUKHMpOwog
ICAgIEFTU0VSVChleGlzdGluZ0hhc2gpOwpAQCAtMzg3LDcgKzM4OSw3IEBAIFJlZlB0cjxTdHJp
bmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZChjb25zdCBMQ2hhciogcywgdW5zaWduZWQgbGVuZ3Ro
KQogICAgIHJldHVybiBhZGRUb1N0cmluZ1RhYmxlPExDaGFyQnVmZmVyLCBMQ2hhckJ1ZmZlclRy
YW5zbGF0b3I+KGJ1ZmZlcik7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5n
OjphZGRGcm9tTGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQorUmVmPFN0cmluZ0ltcGw+IEF0b21pY1N0cmluZzo6YWRkRnJvbUxpdGVyYWxEYXRhKGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBBU1NFUlQoY2hh
cmFjdGVycyk7CiAgICAgQVNTRVJUKGxlbmd0aCk7CkBAIC0zOTYsNyArMzk4LDcgQEAgUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZEZyb21MaXRlcmFsRGF0YShjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzLCB1bnMKICAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxDaGFyQnVmZmVy
LCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvcj4oYnVmZmVyKTsKIH0KIAotUGFz
c1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKFN0cmluZ0ltcGwmIHN0
cmluZykKK1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKFN0cmluZ0lt
cGwmIHN0cmluZykKIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
ICpTdHJpbmdJbXBsOjplbXB0eSgpOwpAQCAtNDE0LDcgKzQxNiw3IEBAIFBhc3NSZWY8U3RyaW5n
SW1wbD4gQXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiAgICAg
cmV0dXJuICoqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IEF0
b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmIHN0cmluZ1RhYmxlLCBT
dHJpbmdJbXBsJiBzdHJpbmcpCitSZWY8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nOjphZGRTbG93
Q2FzZShBdG9taWNTdHJpbmdUYWJsZSYgc3RyaW5nVGFibGUsIFN0cmluZ0ltcGwmIHN0cmluZykK
IHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuICpTdHJpbmdJbXBs
OjplbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
aCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXggMjE5ZjhiODllLi5h
NzkwNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTE3OCw3ICsxNzgsNyBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWZQdHI8U3RyaW5n
SW1wbD4gYWRkKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxTdHJpbmdJ
bXBsPiBhZGQoY29uc3QgY2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZGQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9OwotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CisgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciopOwogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJp
bmdJbXBsKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCogc3RyaW5nKQpA
QCAtMTg5LDcgKzE4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICByZXR1cm4gYWRk
U2xvd0Nhc2UoKnN0cmluZyk7CiAgICAgfQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0
aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICNpZiBVU0UoQ0YpCiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKENGU3RyaW5nUmVmKTsKICNlbmRp
ZgpAQCAtMjE0LDggKzIxNCw4IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAg
ICAgCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+
IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwmKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3Rh
dGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmLCBT
dHJpbmdJbXBsJik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1RhYmxlJiwg
U3RyaW5nSW1wbCYpOwogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9taWNT
dHJpbmdJbXBsKiBmaW5kU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDFmODQyOTIu
LmQwNGM0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTM0LDE5ICsxMzQs
MTkgQEAgdm9pZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiAg
ICAgZmFzdEZyZWUoc3RyaW5nSW1wbCk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGxlbmd0aCwgIlVzZSBTdHJpbmdJbXBsOjplbXB0eSgpIHRvIGNyZWF0ZSBhbiBl
bXB0eSBzdHJpbmciKTsKICAgICBBU1NFUlQoY2hhcmFjdGVyc0FyZUFsbEFTQ0lJPExDaGFyPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCkpOwogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nKSk7CiB9
CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoY29u
c3QgY2hhciogY2hhcmFjdGVycykKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVG
cm9tTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQogewogICAgIHJldHVybiBjcmVhdGVG
cm9tTGl0ZXJhbChjaGFyYWN0ZXJzLCBzdHJsZW4oY2hhcmFjdGVycykpOwogfQogCi1QYXNzUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuICplbXB0eSgpOwpA
QCAtMTU0LDcgKzE1NCw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RyaW5nSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIENvbnN0cnVjdFdpdGhv
dXRDb3B5aW5nKSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
K1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBM
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQog
ICAgICAgICByZXR1cm4gKmVtcHR5KCk7CkBAIC0xNjMsNyArMTYzLDcgQEAgUGFzc1JlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBMQ2hhciogY2hh
cmFjdGVycywgdW4KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIFBh
c3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFs
KHVuc2lnbmVkIGxlbmd0aCwgQ2hhclR5cGUqJiBkYXRhKQoraW5saW5lIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQgbGVuZ3Ro
LCBDaGFyVHlwZSomIGRhdGEpCiB7CiAgICAgaWYgKCFsZW5ndGgpIHsKICAgICAgICAgZGF0YSA9
IDA7CkBAIC0xNzMsNyArMTczLDcgQEAgaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsKHVuc2lnbmVkIGxlbmcKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkodW5zaWduZWQgbGVu
Z3RoLCBDaGFyVHlwZSomIGRhdGEpCitpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkIGxlbmd0aCwgQ2hh
clR5cGUqJiBkYXRhKQogewogICAgIEFTU0VSVChsZW5ndGgpOwogCkBAIC0xODgsMTggKzE4OCwx
OCBAQCBpbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRp
YWxpemVkSW50ZXJuYWxOb25FbXB0eSh1bnNpZwogICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5h
bDxDaGFyVHlwZT4oc3RyaW5nLCBsZW5ndGgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRh
dGEpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlVW5pbml0aWFs
aXplZEludGVybmFsKGxlbmd0aCwgZGF0YSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0
YSkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGVVbmluaXRpYWxp
emVkSW50ZXJuYWwobGVuZ3RoLCBkYXRhKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgotaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZUlu
dGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxl
bmd0aCwgQ2hhclR5cGUqJiBkYXRhKQoraW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
OjpyZWFsbG9jYXRlSW50ZXJuYWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5hbFN0cmlu
ZywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCiB7ICAgCiAgICAgQVNTRVJUKG9y
aWdpbmFsU3RyaW5nLT5oYXNPbmVSZWYoKSk7CiAgICAgQVNTRVJUKG9yaWdpbmFsU3RyaW5nLT5i
dWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJJbnRlcm5hbCk7CkBAIC0yMjAsMjAgKzIyMCwyMCBA
QCBpbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlSW50ZXJu
YWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPgogICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxD
aGFyVHlwZT4oc3RyaW5nLCBsZW5ndGgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnJlYWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5hbFN0cmluZywg
dW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6cmVhbGxvY2F0ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNp
Z25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKIHsKICAgICBBU1NFUlQob3JpZ2luYWxTdHJpbmct
PmlzOEJpdCgpKTsKICAgICByZXR1cm4gcmVhbGxvY2F0ZUludGVybmFsKG9yaWdpbmFsU3RyaW5n
LCBsZW5ndGgsIGRhdGEpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJl
YWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQg
bGVuZ3RoLCBVQ2hhciomIGRhdGEpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxv
Y2F0ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5n
dGgsIFVDaGFyKiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIW9yaWdpbmFsU3RyaW5nLT5pczhCaXQo
KSk7CiAgICAgcmV0dXJuIHJlYWxsb2NhdGVJbnRlcm5hbChvcmlnaW5hbFN0cmluZywgbGVuZ3Ro
LCBkYXRhKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIFBhc3NS
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWNoYXJhY3RlcnMgfHwgIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuICplbXB0eSgpOwpAQCAtMjQ0LDE3ICsyNDQsMTcgQEAgaW5saW5lIFBhc3NSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqIGNoYXJh
Y3RlcnMKICAgICByZXR1cm4gc3RyaW5nOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OmNyZWF0ZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQor
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChjaGFyYWN0
ZXJzLCBsZW5ndGgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0
ZShjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQogewogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChjaGFyYWN0ZXJzLCBsZW5ndGgp
OwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3Np
YmxlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWNoYXJhY3RlcnMgfHwgIWxlbmd0
aCkKICAgICAgICAgcmV0dXJuICplbXB0eSgpOwpAQCAtMjcxLDEyICsyNzEsMTIgQEAgUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hh
ciogY2hhcmFjdGVycywgdW4KICAgICByZXR1cm4gc3RyaW5nLnJlbGVhc2VOb25OdWxsKCk7CiB9
CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUo
Y29uc3QgVUNoYXIqIHN0cmluZykKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGU4
Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciogc3RyaW5nKQogewogICAgIHJldHVybiBTdHJpbmdJ
bXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShzdHJpbmcsIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRT
dHJpbmcoc3RyaW5nKSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3Jl
YXRlKGNvbnN0IExDaGFyKiBzdHJpbmcpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3Jl
YXRlKGNvbnN0IExDaGFyKiBzdHJpbmcpCiB7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJl
dHVybiAqZW1wdHkoKTsKQEAgLTMwOSw3ICszMDksNyBAQCBib29sIFN0cmluZ0ltcGw6OmNvbnRh
aW5zT25seVdoaXRlc3BhY2UoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OnN1YnN0cmluZyh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVu
Z3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN1YnN0cmluZyh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmIChzdGFydCA+PSBtX2xlbmd0aCkKICAgICAg
ICAgcmV0dXJuICplbXB0eSgpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIFVDaGFyMzIgU3RyaW5nSW1w
bDo6Y2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCBpKQogICAgIHJldHVybiAwOwogfQogCi1Q
YXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omxvd2VyKCkKK1JlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpsb3dlcigpCiB7CiAgICAgLy8gTm90ZTogVGhpcyBpcyBhIGhvdCBmdW5jdGlv
biBpbiB0aGUgRHJvbWFlbyBiZW5jaG1hcmssIHNwZWNpZmljYWxseSB0aGUKICAgICAvLyBuby1v
cCBjb2RlIHBhdGggdXAgdGhyb3VnaCB0aGUgZmlyc3QgJ3JldHVybicgc3RhdGVtZW50LgpAQCAt
NDE3LDcgKzQxNyw3IEBAIFNsb3dQYXRoOgogICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2VOb25O
dWxsKCk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoKQorUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnVwcGVyKCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGNvdWxkIGJlIG9wdGltaXplZCBmb3Igbm8tb3AgY2FzZXMgdGhlIHdheSBsb3dlcigpIGlzLAog
ICAgIC8vIGJ1dCBpbiBlbXBpcmljYWwgdGVzdGluZywgZmV3IGFjdHVhbCBjYWxscyB0byB1cHBl
cigpIGFyZSBuby1vcHMsIHNvCkBAIC01MjksNyArNTI5LDcgQEAgc3RhdGljIGlubGluZSBib29s
IG5lZWRzVHVya2lzaENhc2luZ1J1bGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRp
ZmllcikKICAgICAgICAgJiYgKGxvY2FsZUlkZW50aWZpZXIubGVuZ3RoKCkgPT0gMiB8fCBsb2Nh
bGVJZGVudGlmaWVyWzJdID09ICctJyk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6bG93ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQorUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omxvd2VyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRl
bnRpZmllcikKIHsKICAgICAvLyBVc2UgdGhlIG1vcmUtb3B0aW1pemVkIGNvZGUgcGF0aCBtb3N0
IG9mIHRoZSB0aW1lLgogICAgIC8vIEFzc3VtaW5nIGhlcmUgdGhhdCB0aGUgb25seSBsb2NhbGUt
c3BlY2lmaWMgbG93ZXJjYXNpbmcgaXMgdGhlIFR1cmtpc2ggY2FzaW5nIHJ1bGVzLgpAQCAtNTY1
LDcgKzU2NSw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6bG93ZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQogICAgIHJldHVybiBuZXdTdHJpbmcucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBl
cihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCitSZWY8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6dXBwZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQog
ewogICAgIC8vIFVzZSB0aGUgbW9yZS1vcHRpbWl6ZWQgY29kZSBwYXRoIG1vc3Qgb2YgdGhlIHRp
bWUuCiAgICAgLy8gQXNzdW1pbmcgaGVyZSB0aGF0IHRoZSBvbmx5IGxvY2FsZS1zcGVjaWZpYyBs
b3dlcmNhc2luZyBpcyB0aGUgVHVya2lzaCBjYXNpbmcgcnVsZXMsCkBAIC01OTYsNyArNTk2LDcg
QEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBlcihjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZUlkZW50aWZpZXIpCiAgICAgcmV0dXJuIG5ld1N0cmluZy5yZWxlYXNlTm9uTnVs
bCgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZpbGwoVUNoYXIgY2hh
cmFjdGVyKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZpbGwoVUNoYXIgY2hhcmFjdGVy
KQogewogICAgIGlmICghKGNoYXJhY3RlciAmIH4weDdGKSkgewogICAgICAgICBMQ2hhciogZGF0
YTsKQEAgLTYxMiw3ICs2MTIsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZp
bGwoVUNoYXIgY2hhcmFjdGVyKQogICAgIHJldHVybiBuZXdJbXBsOwogfQogCi1QYXNzUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZvbGRDYXNlKCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpmb2xkQ2FzZSgpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IHRoaXMgZnVuY3Rp
b24gaGF2ZSBhIHByZWZsaWdodCBsaWtlIHRoZSBvbmUgaW4gU3RyaW5nSW1wbDo6bG93ZXI/CiAK
QEAgLTY3MCw3ICs2NzAsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZvbGRD
YXNlKCkKICAgICByZXR1cm4gbmV3SW1wbC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1QYXNzUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkKK1JlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpCiB7CiAgICAg
aWYgKGlzOEJpdCgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGZhaWxpbmdJbmRleDsKQEAgLTY4NSw3
ICs2ODUsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkKIAogU2xvd1BhdGg6CiAgICAgICAgIExDaGFyKiBkYXRhODsKLSAgICAgICAg
UGFzc1JlZjxTdHJpbmdJbXBsPiBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFs
Tm9uRW1wdHkobV9sZW5ndGgsIGRhdGE4KTsKKyAgICAgICAgUmVmPFN0cmluZ0ltcGw+IG5ld0lt
cGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YTgp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmFpbGluZ0luZGV4OyArK2kpCiAg
ICAgICAgICAgICBkYXRhOFtpXSA9IG1fZGF0YThbaV07CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGZhaWxpbmdJbmRleDsgaSA8IG1fbGVuZ3RoOyArK2kpCkBAIC03MDIsMTQgKzcwMiwxNCBA
QCBTbG93UGF0aDoKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgVUNoYXIqIGRhdGExNjsK
LSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50
ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YTE2KTsKKyAgICBSZWY8U3RyaW5nSW1wbD4gbmV3
SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBkYXRh
MTYpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKQogICAgICAg
ICBkYXRhMTZbaV0gPSB0b0FTQ0lJTG93ZXIobV9kYXRhMTZbaV0pOwogICAgIHJldHVybiBuZXdJ
bXBsOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+Ci1pbmxpbmUgUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJl
ZGljYXRlIHByZWRpY2F0ZSkKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3Ry
aXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZSBwcmVkaWNhdGUpCiB7CiAgICAgaWYg
KCFtX2xlbmd0aCkKICAgICAgICAgcmV0dXJuICp0aGlzOwpAQCAtNzU3LDE4ICs3NTcsMTggQEAg
cHVibGljOgogICAgIH0KIH07CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3Ry
aXBXaGl0ZVNwYWNlKCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcFdoaXRlU3Bh
Y2UoKQogewogICAgIHJldHVybiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFNwYWNlT3JOZXdsaW5l
UHJlZGljYXRlKCkpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN0cmlw
V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0ciBpc1doaXRlU3BhY2UpCitSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6c3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9u
UHRyIGlzV2hpdGVTcGFjZSkKIHsKICAgICByZXR1cm4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhV
Q2hhclByZWRpY2F0ZShpc1doaXRlU3BhY2UpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPgotQUxXQVlTX0lOTElORSBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJl
bW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1hdGNo
RnVuY3Rpb25QdHIgZmluZE1hdGNoKQorQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBmaW5kTWF0Y2gpCiB7CiAgICAgY29uc3QgQ2hhclR5cGUq
IGZyb20gPSBjaGFyYWN0ZXJzOwogICAgIGNvbnN0IENoYXJUeXBlKiBmcm9tZW5kID0gZnJvbSAr
IG1fbGVuZ3RoOwpAQCAtODAwLDcgKzgwMCw3IEBAIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjCiAg
ICAgcmV0dXJuIGFkb3B0KGRhdGEpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBmaW5kTWF0Y2gp
CitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJN
YXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaCkKIHsKICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAg
IHJldHVybiByZW1vdmVDaGFyYWN0ZXJzKGNoYXJhY3RlcnM4KCksIGZpbmRNYXRjaCk7CkBAIC04
MDgsNyArODA4LDcgQEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFy
YWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmluZE0KIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlLCBjbGFzcyBVQ2hhclByZWRpY2F0ZT4KLWlubGluZSBQYXNzUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVD
aGFyUHJlZGljYXRlIHByZWRpY2F0ZSkKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUgcHJlZGlj
YXRlKQogewogICAgIFN0cmluZ0J1ZmZlcjxDaGFyVHlwZT4gZGF0YShtX2xlbmd0aCk7CiAKQEAg
LTg0NCwxNCArODQ0LDE0IEBAIGlubGluZSBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFyUHJlCiAgICAgcmV0dXJuIGFk
b3B0KGRhdGEpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5
V2hpdGVTcGFjZSgpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlXaGl0ZVNw
YWNlKCkKIHsKICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpz
aW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZTxMQ2hhcj4oU3BhY2VPck5ld2xpbmVQcmVk
aWNhdGUoKSk7CiAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3Rl
cnNUb1NwYWNlPFVDaGFyPihTcGFjZU9yTmV3bGluZVByZWRpY2F0ZSgpKTsKIH0KIAotUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNl
RnVuY3Rpb25QdHIgaXNXaGl0ZVNwYWNlKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNp
bXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0ciBpc1doaXRlU3BhY2UpCiB7
CiAgICAgaWYgKGlzOEJpdCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6c2ltcGxpZnlN
YXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2U8TENoYXI+KFVDaGFyUHJlZGljYXRlKGlzV2hpdGVTcGFj
ZSkpOwpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAgYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJp
bmdJbXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQgZW5kT2Zmc2V0LCBib29sIGNhc2UKICAgICBy
ZXR1cm4gZXF1YWxJbm5lcihjb25zdF9jYXN0PFN0cmluZ0ltcGwmPigqdGhpcyksIGVuZE9mZnNl
dCAtIG1hdGNoU3RyaW5nLmxlbmd0aCgpLCBtYXRjaFN0cmluZywgY2FzZVNlbnNpdGl2ZSk7CiB9
CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBvbGRDLCBV
Q2hhciBuZXdDKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgb2xk
QywgVUNoYXIgbmV3QykKIHsKICAgICBpZiAob2xkQyA9PSBuZXdDKQogICAgICAgICByZXR1cm4g
KnRoaXM7CkBAIC0xNTEwLDcgKzE1MTAsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UoVUNoYXIgb2xkQywgVUNoYXIgbmV3QykKICAgICByZXR1cm4gbmV3SW1wbDsK
IH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBv
c2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1JlcGxhY2UsIFN0cmluZ0ltcGwqIHN0cikKK1JlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25l
ZCBsZW5ndGhUb1JlcGxhY2UsIFN0cmluZ0ltcGwqIHN0cikKIHsKICAgICBwb3NpdGlvbiA9IHN0
ZDo6bWluKHBvc2l0aW9uLCBsZW5ndGgoKSk7CiAgICAgbGVuZ3RoVG9SZXBsYWNlID0gc3RkOjpt
aW4obGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uKTsKQEAgLTE1NTUsNyArMTU1
NSw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZSh1bnNpZ25lZCBw
b3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsCiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CiAK
LVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBT
dHJpbmdJbXBsKiByZXBsYWNlbWVudCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBs
YWNlKFVDaGFyIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQogewogICAgIGlmICgh
cmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsKQEAgLTE1NjYsNyArMTU2Niw3IEBA
IFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBT
dHJpbmdJbXBsKiByZXBsYWNlbWVudCkKICAgICByZXR1cm4gcmVwbGFjZShwYXR0ZXJuLCByZXBs
YWNlbWVudC0+bV9kYXRhMTYsIHJlcGxhY2VtZW50LT5sZW5ndGgoKSk7CiB9CiAKLVBhc3NSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBMQ2hh
ciogcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHJlcFN0ckxlbmd0aCkKK1JlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIGNvbnN0IExDaGFyKiByZXBsYWNlbWVu
dCwgdW5zaWduZWQgcmVwU3RyTGVuZ3RoKQogewogICAgIEFTU0VSVChyZXBsYWNlbWVudCk7CiAK
QEAgLTE2NDMsNyArMTY0Myw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVw
bGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBMQ2hhciogcmVwbGFjZW1lbnQsCiAgICAgcmV0dXJu
IG5ld0ltcGw7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShV
Q2hhciBwYXR0ZXJuLCBjb25zdCBVQ2hhciogcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHJlcFN0ckxl
bmd0aCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4s
IGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwU3RyTGVuZ3RoKQogewogICAg
IEFTU0VSVChyZXBsYWNlbWVudCk7CiAKQEAgLTE3MjMsNyArMTcyMyw3IEBAIFBhc3NSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBVQ2hhciog
cmVwbGFjZW1lbnQsCiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiBy
ZXBsYWNlbWVudCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0lt
cGwqIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQogewogICAgIGlmICghcGF0dGVy
biB8fCAhcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsKQEAgLTIwNDQsNyArMjA0
NCw3IEBAIFVDaGFyRGlyZWN0aW9uIFN0cmluZ0ltcGw6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9u
KGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5CiAgICAgcmV0dXJuIFVfTEVGVF9UT19SSUdI
VDsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjphZG9wdChTdHJpbmdCdWZm
ZXI8TENoYXI+JiBidWZmZXIpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQoU3Ry
aW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1ZmZl
ci5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkKQEAgLTIwNTIsNyArMjA1Miw3IEBAIFBhc3NS
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQoU3RyaW5nQnVmZmVyPExDaGFyPiYgYnVm
ZmVyKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoYnVmZmVyLnJlbGVhc2Uo
KSwgbGVuZ3RoKSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQo
U3RyaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmFkb3B0KFN0cmluZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBidWZmZXIubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCmluZGV4IDdlMWRlMGUuLmYyNmVkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5o
CkBAIC0yOTIsMjEgKzI5MiwyMSBAQCBwcml2YXRlOgogcHVibGljOgogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgdm9pZCBkZXN0cm95KFN0cmluZ0ltcGwqKTsKIAotICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0
aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBs
PiBjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci0gICAgc3RhdGljIFBhc3NSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBh
Y2l0eT4mIHZlY3RvcikKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJZlBv
c3NpYmxlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAg
ewogICAgICAgICByZXR1cm4gY3JlYXRlOEJpdElmUG9zc2libGUodmVjdG9yLmRhdGEoKSwgdmVj
dG9yLnNpemUoKSk7CiAgICAgfQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFz
c1JlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciopOworICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJ
ZlBvc3NpYmxlKGNvbnN0IFVDaGFyKik7CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQYXNz
UmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpIHsg
cmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7
IH0KLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlKGNvbnN0IExDaGFyKik7Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1JlZjxT
dHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcykgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkgeyBy
ZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoKTsg
fQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZShjb25zdCBMQ2hhciopOworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGUoY29uc3QgY2hhciogcykgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihzKSk7IH0KIAotICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGw4KFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzdGF0aWMg
QUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGw4
KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXApOwogICAgICAgICBBU1NFUlQobGVuZ3Ro
IDw9IHJlcC0+bGVuZ3RoKCkpOwpAQCAtMzIyLDcgKzMyMiw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZ0ltcGwpIFN0cmluZ0ltcGwocmVw
LT5tX2RhdGE4ICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdWJzdHJpbmdTaGFy
aW5nSW1wbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXAp
OwogICAgICAgICBBU1NFUlQobGVuZ3RoIDw9IHJlcC0+bGVuZ3RoKCkpOwpAQCAtMzQwLDcgKzM0
MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJz
Q291bnQ+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVh
dGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkK
KyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVy
YWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCiAgICAgewogICAg
ICAgICBDT01QSUxFX0FTU0VSVChjaGFyYWN0ZXJzQ291bnQgPiAxLCBTdHJpbmdJbXBsRnJvbUxp
dGVyYWxOb3RFbXB0eSk7CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKChjaGFyYWN0ZXJzQ291bnQg
LSAxIDw9ICgodW5zaWduZWQofjApIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAvIHNpemVvZihMQ2hh
cikpKSwgU3RyaW5nSW1wbEZyb21MaXRlcmFsQ2Fubm90T3ZlcmZsb3cpOwpAQCAtMzQ5LDE0ICsz
NDksMTQgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUcmFuc2l0aW9uIG9mZiBv
ZiB0aGVzZSBmdW5jdGlvbnMgdG8gY3JlYXRlV2l0aG91dENvcHlpbmcgaW5zdGVhZC4KLSAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJv
bUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJv
bUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFy
YWN0ZXJzKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJp
bmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCk7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBh
c3NSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExD
aGFyKiYgZGF0YSk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmPFN0
cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRh
dGEpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpOworICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOwogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBUKiYgb3V0cHV0KQogICAgIHsKICAg
ICAgICAgaWYgKCFsZW5ndGgpIHsKQEAgLTM3OCw3ICszNzgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxUPihyZXN1bHRJbXBsLCBsZW5ndGgpOwogICAgIH0K
IAotICAgIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUVtcHR5VW5pcXVlKCkKKyAg
ICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUVtcHR5VW5pcXVlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlRW1wdHlVbmlxdWUpKTsK
ICAgICB9CkBAIC0zODYsOCArMzg2LDggQEAgcHVibGljOgogICAgIC8vIFJlYWxsb2NhdGUgdGhl
IFN0cmluZ0ltcGwuIFRoZSBvcmlnaW5hbFN0cmluZyBtdXN0IGJlIG9ubHkgb3duZWQgYnkgdGhl
IFBhc3NSZWZQdHIsCiAgICAgLy8gYW5kIHRoZSBidWZmZXIgb3duZXJzaGlwIG11c3QgYmUgQnVm
ZmVySW50ZXJuYWwuIEp1c3QgbGlrZSB0aGUgaW5wdXQgcG9pbnRlciBvZiByZWFsbG9jKCksCiAg
ICAgLy8gdGhlIG9yaWdpbmFsU3RyaW5nIGNhbid0IGJlIHVzZWQgYWZ0ZXIgdGhpcyBmdW5jdGlv
bi4KLSAgICBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiByZWFsbG9jYXRlKFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRh
KTsKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiByZWFsbG9jYXRlKFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRh
KTsKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpOwor
ICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZShQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CiAKICAg
ICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
U3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJ
czhCaXQoKSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQpAQCAtMzk1LDcgKzM5NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgZGF0YU9mZnNldCgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2RhdGE4KTsgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyPgotICAgIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFZlY3RvcjxDaGFy
VHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIHZlY3RvcikKKyAgICBzdGF0
aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFZlY3RvcjxDaGFyVHlwZSwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlcj4mIHZlY3RvcikKICAgICB7CiAgICAgICAgIGlmIChzaXplX3Qgc2l6
ZSA9IHZlY3Rvci5zaXplKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IuZGF0YSgpKTsK
QEAgLTQwNiw4ICs0MDYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqZW1wdHkoKTsKICAg
ICB9CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1w
bD4gYWRvcHQoU3RyaW5nQnVmZmVyPFVDaGFyPiYpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+Jik7
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRvcHQo
U3RyaW5nQnVmZmVyPFVDaGFyPiYpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxMQ2hhcj4mKTsKIAogICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBsZW5ndGhNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RyaW5n
SW1wbCwgbV9sZW5ndGgpOyB9CkBAIC01OTksOSArNTk5LDkgQEAgcHVibGljOgogICAgIC8vIFNv
bWUgc3RyaW5nIGZlYXR1cmVzLCBsaWtlIHJlZmNvdW50aW5nIGFuZCB0aGUgYXRvbWljaXR5IGZs
YWcsIGFyZSBub3QKICAgICAvLyB0aHJlYWQtc2FmZS4gV2UgYWNoaWV2ZSB0aHJlYWQgc2FmZXR5
IGJ5IGlzb2xhdGlvbiwgZ2l2aW5nIGVhY2ggdGhyZWFkCiAgICAgLy8gaXRzIG93biBjb3B5IG9m
IHRoZSBzdHJpbmcuCi0gICAgUGFzc1JlZjxTdHJpbmdJbXBsPiBpc29sYXRlZENvcHkoKSBjb25z
dDsKKyAgICBSZWY8U3RyaW5nSW1wbD4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQg
cG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IFJlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBV
SU5UX01BWCk7CiAKICAgICBVQ2hhciBhdCh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTYz
MywyNSArNjMzLDI1IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAw
KTsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCk7CiAKLSAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwot
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmPFN0cmluZ0ltcGw+IGxvd2VyKCk7Ci0g
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWY8U3RyaW5nSW1wbD4gdXBwZXIoKTsKLSAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiBsb3dlcihjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBQYXNzUmVmPFN0cmluZ0ltcGw+IHVwcGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRl
bnRpZmllcik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBjb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3Ry
aW5nSW1wbD4gbG93ZXIoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0lt
cGw+IHVwcGVyKCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBs
b3dlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOworICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gdXBwZXIoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmPFN0
cmluZ0ltcGw+IGZpbGwoVUNoYXIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3Ry
aW5nSW1wbD4gZmlsbChVQ2hhcik7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgZmlsbChjaGFy
KSBvciBjYW4gd2UganVzdCBkbyB0aGUgcmlnaHQgdGhpbmcgaWYgVUNoYXIgaXMgQVNDSUk/CiAK
LSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IGZvbGRDYXNlKCk7CisgICAgUmVmPFN0cmluZ0ltcGw+
IGZvbGRDYXNlKCk7CiAKLSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFjZSgp
OwotICAgIFBhc3NSZWY8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1
bmN0aW9uUHRyKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBs
PiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKLSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IHNpbXBsaWZ5
V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cik7CisgICAgUmVmPFN0cmluZ0ltcGw+
IHN0cmlwV2hpdGVTcGFjZSgpOworICAgIFJlZjxTdHJpbmdJbXBsPiBzdHJpcFdoaXRlU3BhY2Uo
SXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8
U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgUmVmPFN0cmluZ0ltcGw+IHNp
bXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cik7CiAKLSAgICBQYXNzUmVm
PFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7
CisgICAgUmVmPFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5j
dGlvblB0cik7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZU19J
TkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBl
KiBjaGFyYWN0ZXJzLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKKyAgICBBTFdBWVNfSU5M
SU5FIFJlZjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFy
YWN0ZXJzLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKIAogICAgIHNpemVfdCBmaW5kKExD
aGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAgICBzaXplX3QgZmluZChjaGFy
IGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKQEAgLTY4NiwxMyArNjg2LDEzIEBAIHB1
YmxpYzoKICAgICBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3Ro
XSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgocHJl
Zml4LCBtYXRjaExlbmd0aCAtIDEsIGNhc2VTZW5zaXRpdmUpOyB9CiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCYsIHVuc2lnbmVkIGVuZE9mZnNldCwg
Ym9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQ
YXNzUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBTdHJpbmdJbXBs
Kik7Ci0gICAgQUxXQVlTX0lOTElORSBQYXNzUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIg
cGF0dGVybiwgY29uc3QgY2hhciogcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVu
Z3RoKSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihyZXBsYWNlbWVudCksIHJlcGxhY2VtZW50TGVuZ3RoKTsgfQotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBQYXNzUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IExDaGFy
KiwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpOwotICAgIFBhc3NSZWY8U3RyaW5nSW1wbD4g
cmVwbGFjZShVQ2hhciwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShT
dHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNz
UmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3Ry
aW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVw
bGFjZShVQ2hhciwgVUNoYXIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5n
SW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIEFMV0FZU19JTkxJTkUgUmVm
PFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgY2hhciogcmVwbGFjZW1l
bnQsIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihyZXBsYWNlbWVudCksIHJlcGxhY2VtZW50
TGVuZ3RoKTsgfQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVw
bGFjZShVQ2hhciwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7Cisg
ICAgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
cmVwbGFjZW1lbnRMZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5n
SW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWdu
ZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXJE
aXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9u
YWxpdHkgPSBudWxscHRyKTsKIApAQCAtNzY3LDEzICs3NjcsMTMgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19jb3B5Q2hhcnNJbmxpbmVDdXRPZmYgPSAyMDsKIAogICAg
IEJ1ZmZlck93bmVyc2hpcCBidWZmZXJPd25lcnNoaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxCdWZmZXJPd25lcnNoaXA+KG1faGFzaEFuZEZsYWdzICYgc19oYXNoTWFza0J1ZmZlck93
bmVyc2hpcCk7IH0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFBhc3NSZWY8
U3RyaW5nSW1wbD4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZSk7Ci0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlLCBjbGFzcyBVQ2hhclByZWRpY2F0ZT4gUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShVQ2hhclByZWRp
Y2F0ZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUGFzc1JlZjxT
dHJpbmdJbXBsPiBjb25zdHJ1Y3RJbnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQpOwotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsKHVuc2lnbmVkLCBDaGFyVHlwZSomKTsKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkLCBDaGFyVHlwZSomKTsK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBQYXNzUmVmPFN0cmluZ0lt
cGw+IHJlYWxsb2NhdGVJbnRlcm5hbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+LCB1bnNpZ25lZCwg
Q2hhclR5cGUqJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUGFz
c1JlZjxTdHJpbmdJbXBsPiBjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSosIHVuc2lnbmVk
KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBz
dHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJlZGljYXRlKTsKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGUsIGNsYXNzIFVDaGFyUHJlZGljYXRlPiBSZWY8U3RyaW5nSW1wbD4gc2lt
cGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUpOworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjb25zdHJ1Y3RJ
bnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJu
YWwodW5zaWduZWQsIENoYXJUeXBlKiYpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25F
bXB0eSh1bnNpZ25lZCwgQ2hhclR5cGUqJik7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGVJbnRlcm5hbChQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+LCB1bnNpZ25lZCwgQ2hhclR5cGUqJik7CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUludGVybmFsKGNvbnN0
IENoYXJUeXBlKiwgdW5zaWduZWQpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBORVZFUl9JTkxJ
TkUgdW5zaWduZWQgaGFzaFNsb3dDYXNlKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHVuc2lnbmVkIGhhc2hBbmRGbGFnc0ZvckVtcHR5VW5pcXVlKCk7CiAKQEAgLTg0Myw5ICs4NDMs
OSBAQCBWYWx1ZUNoZWNrPFN0cmluZ0ltcGwqPiB7CiAjZW5kaWYKIAogdGVtcGxhdGUgPD4KLUFM
V0FZU19JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRl
cm5hbDxMQ2hhcj4oU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0
Q29uc3RydWN0b3IpKTsgfQorQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6Y29uc3RydWN0SW50ZXJuYWw8TENoYXI+KFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxl
bmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChs
ZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVjdG9yKSk7IH0KIHRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5M
SU5FIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8VUNo
YXI+KFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyAoTm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChsZW5ndGgpKTsgfQorQUxXQVlTX0lOTElO
RSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8VUNoYXI+KFN0
cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyAo
Tm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChsZW5ndGgpKTsgfQogCiB0ZW1wbGF0ZSA8PgogQUxX
QVlTX0lOTElORSBjb25zdCBMQ2hhciogU3RyaW5nSW1wbDo6Y2hhcmFjdGVyczxMQ2hhcj4oKSBj
b25zdCB7IHJldHVybiBjaGFyYWN0ZXJzOCgpOyB9CkBAIC0xMzMxLDcgKzEzMzEsNyBAQCBpbmxp
bmUgdW5zaWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0ZXJU
eXBlKiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOwog
fQogCi1pbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjppc29sYXRlZENvcHko
KSBjb25zdAoraW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjppc29sYXRlZENvcHko
KSBjb25zdAogewogICAgIGlmICghcmVxdWlyZXNDb3B5KCkpIHsKICAgICAgICAgaWYgKGlzOEJp
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggMzE3YWZiYy4uNTA4Yzg2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgIFN0cmlu
ZyhTdHJpbmdJbXBsJiBpbXBsKSA6IG1faW1wbCgmaW1wbCkgeyB9CiAgICAgU3RyaW5nKFN0cmlu
Z0ltcGwqIGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQogICAgIFN0cmluZyhQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQotICAgIFN0cmluZyhQYXNzUmVmPFN0
cmluZ0ltcGw+JiYgaW1wbCkgOiBtX2ltcGwoc3RkOjpmb3J3YXJkPFBhc3NSZWY8U3RyaW5nSW1w
bD4+KGltcGwpKSB7IH0KKyAgICBTdHJpbmcoUmVmPFN0cmluZ0ltcGw+JiYgaW1wbCkgOiBtX2lt
cGwoc3RkOjpmb3J3YXJkPFJlZjxTdHJpbmdJbXBsPj4oaW1wbCkpIHsgfQogICAgIFN0cmluZyhS
ZWZQdHI8U3RyaW5nSW1wbD4mJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KIAogICAgIC8vIENv
bnN0cnVjdCBhIHN0cmluZyBmcm9tIGEgY29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCkBAIC01MTIs
NyArNTEyLDcgQEAgaW5saW5lIHZvaWQgc3dhcChTdHJpbmcmIGEsIFN0cmluZyYgYikgeyBhLnN3
YXAoYik7IH0KIAogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXI+CiBTdHJpbmc6OlN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNh
cGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiB2ZWN0b3IpCi0gICAgOiBtX2ltcGwodmVjdG9yLnNp
emUoKSA/IFN0cmluZ0ltcGw6OmNyZWF0ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSA6
ICpTdHJpbmdJbXBsOjplbXB0eSgpKQorICAgIDogbV9pbXBsKHZlY3Rvci5zaXplKCkgPyBTdHJp
bmdJbXBsOjpjcmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSkgOiBSZWY8U3RyaW5n
SW1wbD4oKlN0cmluZ0ltcGw6OmVtcHR5KCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZEJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRCdXR0b24uaAppbmRleCAxMGNmMGY3Li5iYWVmY2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZEJ1dHRvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkQnV0dG9uLmgKQEAg
LTI4LDE0ICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdhbWVwYWRCdXR0b24gOiBwdWJs
aWMgUmVmQ291bnRlZDxHYW1lcGFkQnV0dG9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWY8R2FtZXBhZEJ1dHRvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPEdhbWVwYWRCdXR0b24+
IGNyZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHYW1lcGFkQnV0
dG9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQv
TmF2aWdhdG9yR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2
aWdhdG9yR2FtZXBhZC5jcHAKaW5kZXggYTcxZmZhMi4uM2M1NmUxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcApAQCAtNzIs
NyArNzIsNyBAQCBOYXZpZ2F0b3JHYW1lcGFkKiBOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKE5hdmln
YXRvciogbmF2aWdhdG9yKQogICAgIHJldHVybiBzdXBwbGVtZW50OwogfQogCi1QYXNzUmVmPEdh
bWVwYWQ+IE5hdmlnYXRvckdhbWVwYWQ6OmdhbWVwYWRGcm9tUGxhdGZvcm1HYW1lcGFkKFBsYXRm
b3JtR2FtZXBhZCYgcGxhdGZvcm1HYW1lcGFkKQorUmVmPEdhbWVwYWQ+IE5hdmlnYXRvckdhbWVw
YWQ6OmdhbWVwYWRGcm9tUGxhdGZvcm1HYW1lcGFkKFBsYXRmb3JtR2FtZXBhZCYgcGxhdGZvcm1H
YW1lcGFkKQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gcGxhdGZvcm1HYW1lcGFkLmluZGV4KCk7
CiAgICAgaWYgKGluZGV4ID49IG1fZ2FtZXBhZHMuc2l6ZSgpIHx8ICFtX2dhbWVwYWRzW2luZGV4
XSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JH
YW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBh
ZC5oCmluZGV4IGUzNjkwY2UuLmJjY2M4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBnYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpOwogICAgIHZvaWQg
Z2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmKTsKIAotICAgIFBhc3NSZWY8R2Ft
ZXBhZD4gZ2FtZXBhZEZyb21QbGF0Zm9ybUdhbWVwYWQoUGxhdGZvcm1HYW1lcGFkJik7CisgICAg
UmVmPEdhbWVwYWQ+IGdhbWVwYWRGcm9tUGxhdGZvcm1HYW1lcGFkKFBsYXRmb3JtR2FtZXBhZCYp
OwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNw
cAppbmRleCAxN2RmMjY4Li5kMGY4YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQg
R2VvbG9jYXRpb246OldhdGNoZXJzOjpnZXROb3RpZmllcnNWZWN0b3IoR2VvTm90aWZpZXJWZWN0
b3ImIGNvcHkpIGNvbnN0CiAgICAgY29weVZhbHVlc1RvVmVjdG9yKG1faWRUb05vdGlmaWVyTWFw
LCBjb3B5KTsKIH0KIAotUGFzc1JlZjxHZW9sb2NhdGlvbj4gR2VvbG9jYXRpb246OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorUmVmPEdlb2xvY2F0aW9uPiBHZW9sb2Nh
dGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgYXV0
byBnZW9sb2NhdGlvbiA9IGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb24oY29udGV4dCkpOwogICAg
IGdlb2xvY2F0aW9uLmdldCgpLnN1c3BlbmRJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oCmluZGV4IDUyNmRkYzAuLjkzZTE0
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNs
YXNzIEdlb2xvY2F0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50
ZWQ8R2VvbG9jYXRpb24+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWY8R2VvbG9jYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CisgICAgc3RhdGljIFJlZjxHZW9sb2NhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+R2VvbG9jYXRpb24oKTsKIAogI2lmIFBMQVRG
T1JNKElPUykKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIEdlb05vdGlm
aWVyIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvTm90aWZpZXI+IHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmPEdlb05vdGlmaWVyPiBjcmVhdGUoR2VvbG9jYXRpb24qIGdlb2xv
Y2F0aW9uLCBQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRpb25zKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IEdlb05vdGlmaWVyKGdlb2xvY2F0aW9uLCBwb3NpdGlvbkNhbGxiYWNrLCBwb3NpdGlvbkVycm9y
Q2FsbGJhY2ssIG9wdGlvbnMpKTsgfQorICAgICAgICBzdGF0aWMgUmVmPEdlb05vdGlmaWVyPiBj
cmVhdGUoR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uLCBQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJh
Y2s+IHBvc2l0aW9uQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBw
b3NpdGlvbkVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRpb25z
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEdlb05vdGlmaWVyKGdlb2xvY2F0aW9uLCBwb3NpdGlv
bkNhbGxiYWNrLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpKTsgfQogCiAgICAgICAg
IFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5nZXQo
KTsgfTsKICAgICAgICAgdm9pZCBzZXRGYXRhbEVycm9yKFBhc3NSZWZQdHI8UG9zaXRpb25FcnJv
cj4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRp
YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlLmNwcAppbmRleCBmMTZlYjNmLi4wYzk5OWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtMTEwLDcgKzExMCw3IEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2U6OmVuZGVkS2V5d29yZCgpCiAgICAgcmV0
dXJuIGVuZGVkOwogfQogCi12b2lkIE1lZGlhU291cmNlOjpzZXRQcml2YXRlQW5kT3BlbihQYXNz
UmVmPE1lZGlhU291cmNlUHJpdmF0ZT4gbWVkaWFTb3VyY2VQcml2YXRlKQordm9pZCBNZWRpYVNv
dXJjZTo6c2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJiBtZWRpYVNv
dXJjZVByaXZhdGUpCiB7CiAgICAgQVNTRVJUKCFtX3ByaXZhdGUpOwogICAgIEFTU0VSVChtX21l
ZGlhRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmgKaW5kZXggZmFkNGRjMS4uNGI0Mzc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaApAQCAtNzEsNyArNzEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihjb25zdCBBdG9taWNTdHJpbmcm
IGVycm9yLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGVDbGll
bnQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4oUGFzc1JlZjxNZWRpYVNvdXJj
ZVByaXZhdGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4o
UmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBNZWRpYVRp
bWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5k
ZXggZmM2MWNkOS4uNDE0MWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtOTcsMTQgKzk3LDE0IEBAIHN0cnVjdCBT
b3VyY2VCdWZmZXI6OlRyYWNrQnVmZmVyIHsKICAgICB9CiB9OwogCi1QYXNzUmVmPFNvdXJjZUJ1
ZmZlcj4gU291cmNlQnVmZmVyOjpjcmVhdGUoUGFzc1JlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiBz
b3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYVNvdXJjZSogc291cmNlKQorUmVmPFNvdXJjZUJ1ZmZl
cj4gU291cmNlQnVmZmVyOjpjcmVhdGUoUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+JiYgc291cmNl
QnVmZmVyUHJpdmF0ZSwgTWVkaWFTb3VyY2UqIHNvdXJjZSkKIHsKICAgICBSZWZQdHI8U291cmNl
QnVmZmVyPiBzb3VyY2VCdWZmZXIoYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlcihXVEY6Om1vdmUo
c291cmNlQnVmZmVyUHJpdmF0ZSksIHNvdXJjZSkpKTsKICAgICBzb3VyY2VCdWZmZXItPnN1c3Bl
bmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBzb3VyY2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKTsK
IH0KIAotU291cmNlQnVmZmVyOjpTb3VyY2VCdWZmZXIoUGFzc1JlZjxTb3VyY2VCdWZmZXJQcml2
YXRlPiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYVNvdXJjZSogc291cmNlKQorU291cmNlQnVm
ZmVyOjpTb3VyY2VCdWZmZXIoUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+JiYgc291cmNlQnVmZmVy
UHJpdmF0ZSwgTWVkaWFTb3VyY2UqIHNvdXJjZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChzb3Vy
Y2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fcHJpdmF0ZShXVEY6Om1vdmUo
c291cmNlQnVmZmVyUHJpdmF0ZSkpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA1MWEw
MjBjLi44OTZlZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgVmlkZW9UcmFja0xpc3Q7
CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNvdXJjZUJ1
ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudCwgcHVibGljIEF1ZGlvVHJhY2tDbGllbnQsIHB1YmxpYyBWaWRlb1RyYWNrQ2xpZW50
LCBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxT
b3VyY2VCdWZmZXI+IGNyZWF0ZShQYXNzUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+LCBNZWRpYVNv
dXJjZSopOworICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUmVmPFNvdXJjZUJ1
ZmZlclByaXZhdGU+JiYsIE1lZGlhU291cmNlKik7CiAKICAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZm
ZXIoKTsKIApAQCAtMTE4LDcgKzExOCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiBwcml2YXRlOgotICAg
IFNvdXJjZUJ1ZmZlcihQYXNzUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+LCBNZWRpYVNvdXJjZSop
OworICAgIFNvdXJjZUJ1ZmZlcihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3Vy
Y2UqKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQKICAgICB2aXJ0dWFsIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZEVuZFN0cmVhbShTb3VyY2VCdWZmZXJQcml2YXRlKiwg
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCmluZGV4IDUxZDYwY2Uu
LmI0ZDkzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDbGllbnQuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBVc2VyTWVkaWFDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWY8VXNlck1lZGlhUmVxdWVz
dD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oUmVmPFVzZXJNZWRp
YVJlcXVlc3Q+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdChVc2VyTWVk
aWFSZXF1ZXN0JikgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oCmluZGV4IGE2MmFk
MWYuLjc1NzZkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICB+VXNlck1lZGlhQ29udHJvbGxlcigpOwogCiAgICAgVXNlck1lZGlhQ2xpZW50KiBjbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oUGFzc1JlZjxVc2VyTWVkaWFSZXF1ZXN0Pik7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihSZWY8VXNlck1lZGlhUmVxdWVzdD4mJik7CiAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KFVzZXJN
ZWRpYVJlcXVlc3QmKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwpAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogICAgIFVzZXJNZWRpYUNsaWVudCogbV9jbGll
bnQ7CiB9OwogCi1pbmxpbmUgdm9pZCBVc2VyTWVkaWFDb250cm9sbGVyOjpyZXF1ZXN0UGVybWlz
c2lvbihQYXNzUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QpCitpbmxpbmUgdm9pZCBVc2Vy
TWVkaWFDb250cm9sbGVyOjpyZXF1ZXN0UGVybWlzc2lvbihSZWY8VXNlck1lZGlhUmVxdWVzdD4m
JiByZXF1ZXN0KQogewogICAgIG1fY2xpZW50LT5yZXF1ZXN0UGVybWlzc2lvbihXVEY6Om1vdmUo
cmVxdWVzdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCBkMDg2ZTk3Li5iOTU3NmE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKQogfQogCiAj
aWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotUGFzc1JlZjxOb3RpZmljYXRpb24+IE5v
dGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9k
eSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3Zp
ZGVyKSAKK1JlZjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCiAgICAgYXV0byBub3RpZmljYXRp
b24gPSBhZG9wdFJlZigqbmV3IE5vdGlmaWNhdGlvbih0aXRsZSwgYm9keSwgaWNvblVSSSwgY29u
dGV4dCwgZWMsIHByb3ZpZGVyKSk7CiAgICAgbm90aWZpY2F0aW9uLmdldCgpLnN1c3BlbmRJZk5l
ZWRlZCgpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIFBhc3NSZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmlj
YXRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotUGFzc1JlZjxOb3RpZmljYXRpb24+IE5v
dGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCitSZWY8Tm90aWZpY2F0
aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQogewogICAg
IGF1dG8gbm90aWZpY2F0aW9uID0gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb24oY29udGV4dCwg
dGl0bGUpKTsKICAgICBTdHJpbmcgYXJndW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggNTA3OTdhZS4uNmI2OTQw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaApAQCAtNjYsMTAgKzY2LDEwIEBAIGNsYXNzIE5vdGlmaWNhdGlvbiBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplCiBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTm90aWZpY2F0aW9uKCk7CiAjaWYgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQotICAgIHN0YXRpYyBQYXNzUmVmPE5vdGlmaWNhdGlvbj4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5n
JiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NS
ZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7CisgICAgc3RhdGljIFJlZjxOb3Rp
ZmljYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHks
IGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlv
bkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOwogI2VuZGlm
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgc3RhdGljIFBhc3NSZWY8Tm90aWZpY2F0
aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpOworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9u
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpOwogI2VuZGlmCiAgICAgCiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDNh
NWEwMDcuLjA5NTgyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxOb3RpZmljYXRpb25DZW50ZXI+IE5v
dGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQorUmVmPE5vdGlmaWNhdGlvbkNlbnRlcj4gTm90
aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Tm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgYXV0byBub3RpZmljYXRpb25DZW50
ZXIgPSBhZG9wdFJlZigqbmV3IE5vdGlmaWNhdGlvbkNlbnRlcihjb250ZXh0LCBjbGllbnQpKTsK
ICAgICBub3RpZmljYXRpb25DZW50ZXIuZ2V0KCkuc3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmgKaW5kZXggZDNjZGEzYi4uMjAwZDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIE5vdGlmaWNhdGlvbkNl
bnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPE5vdGlmaWNhdGlvbkNl
bnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25DbGllbnQq
KTsKKyAgICBzdGF0aWMgUmVmPE5vdGlmaWNhdGlvbkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25DbGllbnQqKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
Tk9USUZJQ0FUSU9OUykKICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlTm90aWZp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgaWNvblVSSSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiBib2R5LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKaW5kZXggNjBmOTE4ZC4uOTEyNmYw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxh
Y2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxh
Y2VtZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNDOjpKU09i
amVjdCogc2NyaXB0T2JqZWN0KCkgeyByZXR1cm4gMDsgfQogCiAgICAgdmlydHVhbCBib29sIHdp
bGxDcmVhdGVSZW5kZXJlcigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pID0gMDsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+KSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBQbHVnaW5SZXBsYWNlbWVudCgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAppbmRleCAzYzhhYTk5Li4wMGE2OTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBK
U0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBtX3NjcmlwdE9i
amVjdDsgfQogCiAgICAgdmlydHVhbCBib29sIHdpbGxDcmVhdGVSZW5kZXJlcigpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJlZjxSZW5k
ZXJTdHlsZT4pIG92ZXJyaWRlOwogCiAgICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50RWxlbWVu
dCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50LmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5tbQppbmRleCBlYWQ2ZGM2Li43OWMyMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBA
IC0xMzMsNyArMTMzLDcgQEAgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6On5RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudCgpCiAgICAgbV9tZWRpYUVsZW1lbnQgPSBudWxscHRyOwogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVn
aW4sIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwbHVnaW4s
IG1fcGFyZW50RWxlbWVudCA9PSAmcGx1Z2luKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRl
eCA1NWJhNmVkLi4zODRiMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNjcsNyArNjcs
NyBAQCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OllvdVR1YmVQbHVnaW5SZXBsYWNlbWVudChI
VE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBjbwogICAgICAgICBtX2F0dHJpYnV0ZXMuYWRkKHBh
cmFtTmFtZXNbaV0sIHBhcmFtVmFsdWVzW2ldKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQ
bHVnSW5FbGVtZW50JiBwbHVnaW4sIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIFJlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwbHVnaW4sIG1fcGFyZW50RWxlbWVudCA9PSAmcGx1
Z2luKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oCmluZGV4IDA5NTNjOTkuLjAxYTNiZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJl
cGxhY2VtZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgeW91VHVi
ZVVSTChjb25zdCBTdHJpbmcmIHJhd1VSTCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxD
cmVhdGVSZW5kZXJlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZW1iZWRTaGFkb3dFbGVtZW50OyB9
Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihIVE1MUGx1Z0luRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOwogICAgIAog
ICAgIEhUTUxQbHVnSW5FbGVtZW50KiBtX3BhcmVudEVsZW1lbnQ7CiAgICAgUmVmUHRyPFlvdVR1
YmVFbWJlZFNoYWRvd0VsZW1lbnQ+IG1fZW1iZWRTaGFkb3dFbGVtZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCBlNzUwYTIzLi43NWZhMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTI5
LDcgKzUyOSw3IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTJzZXRGaWxsQ29sb3JF
UktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRl
eHQxNHNldFN0cm9rZUNvbG9yRVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKIF9fWk43V2Vi
Q29yZTE1R3JhcGhpY3NDb250ZXh0MTVkcmF3SW1hZ2VCdWZmZXJFUE5TXzExSW1hZ2VCdWZmZXJF
TlNfMTBDb2xvclNwYWNlRVJLTlNfMTBGbG9hdFBvaW50RVJLTlNfMjBJbWFnZVBhaW50aW5nT3B0
aW9uc0UKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVkcmF3TmF0aXZlSW1hZ2VFUDdD
R0ltYWdlUktOU185RmxvYXRTaXplRU5TXzEwQ29sb3JTcGFjZUVSS05TXzlGbG9hdFJlY3RFUzlf
TlNfMTdDb21wb3NpdGVPcGVyYXRvckVOU185QmxlbmRNb2RlRU5TXzE2SW1hZ2VPcmllbnRhdGlv
bkUKLV9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVzZXRGaWxsR3JhZGllbnRFTjNXVEY3
UGFzc1JlZklOU184R3JhZGllbnRFRUUKK19fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVz
ZXRGaWxsR3JhZGllbnRFT04zV1RGM1JlZklOU184R3JhZGllbnRFRUUKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NDb250ZXh0MThzZXRTaG91bGRBbnRpYWxpYXNFYgogX19aTjdXZWJDb3JlMTVHcmFw
aGljc0NvbnRleHQxOXNldElzQ0FMYXllckNvbnRleHRFYgogX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0NvbnRleHQyMGVuZFRyYW5zcGFyZW5jeUxheWVyRXYKQEAgLTEwODYsOCArMTA4Niw4IEBAIF9f
Wk43V2ViQ29yZTI3cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsRVJLTlNfM1VSTEVTMl8KIF9f
Wk43V2ViQ29yZTI3cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yRVJOM0pTQzlFeGVjU3RhdGVF
UEtjUzRfCiBfX1pON1dlYkNvcmUyN3JlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvckVSTjNKU0M5
RXhlY1N0YXRlRVBLY1M0XwogX19aTjdXZWJDb3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5n
ZXNFUEZ2dkUKLV9fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjEyYWRk
VXNlclNoZWV0RU4zV1RGN1Bhc3NSZWZJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUUKLV9fWk43
V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjE0YWRkQXV0aG9yU2hlZXRFTjNX
VEY3UGFzc1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQorX19aTjdXZWJDb3JlMjhEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFT04zV1RGM1JlZklOU18xOFN0
eWxlU2hlZXRDb250ZW50c0VFRQorX19aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uMTRhZGRBdXRob3JTaGVldEVPTjNXVEYzUmVmSU5TXzE4U3R5bGVTaGVldENvbnRlbnRz
RUVFCiBfX1pON1dlYkNvcmUyOFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JDMUVSS04zV1RG
MTJBdG9taWNTdHJpbmdFUk5TXzE1RE9NV3JhcHBlcldvcmxkRVJOUzBfNkNsaWVudEUKIF9fWk43
V2ViQ29yZTI4VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvckQxRXYKIF9fWk43V2ViQ29yZTI4
ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlc0VSS04zV1RGNlN0cmluZ0UKQEAgLTExNjIsNyAr
MTE2Miw3IEBAIF9fWk43V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0b3JFZlJLTlNfOElu
dFBvaW50RWIKIF9fWk43V2ViQ29yZTRQYWdlMThzZXRUb3BDb250ZW50SW5zZXRFZgogX19aTjdX
ZWJDb3JlNFBhZ2UxOWFkZExheW91dE1pbGVzdG9uZXNFagogX19aTjdXZWJDb3JlNFBhZ2UxOWVu
YWJsZVBhZ2VUaHJvdHRsZXJFdgotX19aTjdXZWJDb3JlNFBhZ2UxOXNldFZpc2l0ZWRMaW5rU3Rv
cmVFTjNXVEY3UGFzc1JlZklOU18xNlZpc2l0ZWRMaW5rU3RvcmVFRUUKK19fWk43V2ViQ29yZTRQ
YWdlMTlzZXRWaXNpdGVkTGlua1N0b3JlRU9OM1dURjNSZWZJTlNfMTZWaXNpdGVkTGlua1N0b3Jl
RUVFCiBfX1pON1dlYkNvcmU0UGFnZTIwc2Nyb2xsaW5nQ29vcmRpbmF0b3JFdgogX19aTjdXZWJD
b3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYKIF9fWk43V2ViQ29yZTRQYWdlMjB1bm1h
cmtBbGxUZXh0TWF0Y2hlc0V2CkBAIC0xMjkzLDcgKzEyOTMsNyBAQCBfX1pON1dlYkNvcmU2RWRp
dG9yN2NvcHlVUkxFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlNkVkaXRv
cjdvdXRkZW50RXYKIF9fWk43V2ViQ29yZTZKU05vZGU2c19pbmZvRQogX19aTjdXZWJDb3JlNkpT
Tm9kZTl0b1dyYXBwZWRFTjNKU0M3SlNWYWx1ZUUKLV9fWk43V2ViQ29yZTZMZW5ndGhDMUVOM1dU
RjdQYXNzUmVmSU5TXzE2Q2FsY3VsYXRpb25WYWx1ZUVFRQorX19aTjdXZWJDb3JlNkxlbmd0aEMx
RU9OM1dURjNSZWZJTlNfMTZDYWxjdWxhdGlvblZhbHVlRUVFCiBfX1pON1dlYkNvcmU2UmVnaW9u
MjF1cGRhdGVCb3VuZHNGcm9tU2hhcGVFdgogX19aTjdXZWJDb3JlNlJlZ2lvbjV1bml0ZUVSS1Mw
XwogX19aTjdXZWJDb3JlNlJlZ2lvbjhzdWJ0cmFjdEVSS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDk2ZTE0ZGEuLmRjYjFmMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
c3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJhc2ljU2hhcGVSYWRpdXNUb0NT
U1ZhbHVlKGNvbnN0IFJlbmRlclN0eWwKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZjxDU1NW
YWx1ZT4gdmFsdWVGb3JCYXNpY1NoYXBlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3Qg
QmFzaWNTaGFwZSYgYmFzaWNTaGFwZSkKK1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JCYXNpY1NoYXBl
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQmFzaWNTaGFwZSYgYmFzaWNTaGFwZSkK
IHsKICAgICBDU1NWYWx1ZVBvb2wmIHBvb2wgPSBjc3NWYWx1ZVBvb2woKTsKIApAQCAtMTk5LDcg
KzE5OSw3IEBAIHN0YXRpYyBCYXNpY1NoYXBlUmFkaXVzIGNzc1ZhbHVlVG9CYXNpY1NoYXBlUmFk
aXVzKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhCiAgICAgcmV0dXJuIEJhc2ljU2hhcGVS
YWRpdXMoY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCByYWRpdXMuZ2V0KCkpKTsKIH0K
IAotUGFzc1JlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU0Jhc2ljU2hhcGUqIGJh
c2ljU2hhcGVWYWx1ZSkKK1JlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29uc3Qg
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU0Jhc2lj
U2hhcGUqIGJhc2ljU2hhcGVWYWx1ZSkKIHsKICAgICBSZWZQdHI8QmFzaWNTaGFwZT4gYmFzaWNT
aGFwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmgKaW5kZXggNjhj
YzdhNi4uZjFjZmFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVG
dW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5o
CkBAIC00Miw4ICs0Miw4IEBAIGNsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CiBjbGFz
cyBDU1NWYWx1ZTsKIGNsYXNzIFJlbmRlclN0eWxlOwogCi1QYXNzUmVmPENTU1ZhbHVlPiB2YWx1
ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBCYXNpY1NoYXBlJik7Ci1Q
YXNzUmVmPEJhc2ljU2hhcGU+IGJhc2ljU2hhcGVGb3JWYWx1ZShjb25zdCBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhJiwgY29uc3QgQ1NTQmFzaWNTaGFwZSopOworUmVmPENTU1ZhbHVlPiB2YWx1
ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBCYXNpY1NoYXBlJik7CitS
ZWY8QmFzaWNTaGFwZT4gYmFzaWNTaGFwZUZvclZhbHVlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEmLCBjb25zdCBDU1NCYXNpY1NoYXBlKik7CiAKIGZsb2F0IGZsb2F0VmFsdWVGb3JD
ZW50ZXJDb29yZGluYXRlKGNvbnN0IEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlJiwgZmxvYXQp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKaW5kZXggODdkNTQ2
Yi4uY2FiOGE4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRp
b1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaApA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0FzcGVjdFJh
dGlvVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
PENTU0FzcGVjdFJhdGlvVmFsdWU+IGNyZWF0ZShmbG9hdCBudW1lcmF0b3JWYWx1ZSwgZmxvYXQg
ZGVub21pbmF0b3JWYWx1ZSkKKyAgICBzdGF0aWMgUmVmPENTU0FzcGVjdFJhdGlvVmFsdWU+IGNy
ZWF0ZShmbG9hdCBudW1lcmF0b3JWYWx1ZSwgZmxvYXQgZGVub21pbmF0b3JWYWx1ZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0FzcGVjdFJhdGlvVmFsdWUobnVtZXJh
dG9yVmFsdWUsIGRlbm9taW5hdG9yVmFsdWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jv
cmRlckltYWdlLmNwcAppbmRleCBmOTQ2YmNhLi5iZTc0MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCb3JkZXJJbWFnZS5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlQm9yZGVySW1hZ2VWYWx1ZShQYXNzUmVm
UHRyPENTU1ZhbHVlPiBpbWFnZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2VTbGljZSwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gYm9yZGVyU2xpY2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IG91dHNl
dCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KQorUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRl
Qm9yZGVySW1hZ2VWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZSwgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gaW1hZ2VTbGljZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gYm9yZGVyU2xpY2UsIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IG91dHNldCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KQog
ewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
ICAgICBpZiAoaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVy
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCmluZGV4IDA2ZmE1
NDMuLmMyYzI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCkBAIC0yNyw3ICsy
Nyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGNy
ZWF0ZUJvcmRlckltYWdlVmFsdWUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IGltYWdlU2xpY2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGJvcmRlclNsaWNl
LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlcGVh
dCk7CitSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IGltYWdlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZVNsaWNlLCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBib3JkZXJTbGljZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gb3V0c2V0LCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAppbmRleCA4
YjlmZTRhLi5iOGI3NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdl
U2xpY2VWYWx1ZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFJlY3Q7CiAKIGNsYXNzIENTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWY8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gc2xpY2VzLCBib29sIGZpbGwpCisgICAgc3RhdGljIFJlZjxDU1NC
b3JkZXJJbWFnZVNsaWNlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBzbGljZXMsIGJvb2wgZmlsbCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZShzbGljZXMsIGZpbGwpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggZmE5OTVmNi4uNGM3MTQz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMTk3
LDcgKzE5Nyw3IEBAIGRvdWJsZSBDU1NDYWxjVmFsdWU6OmNvbXB1dGVMZW5ndGhQeChjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uCiBjbGFzcyBDU1NDYWxjUHJpbWl0
aXZlVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NDYWxj
UHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZSwgYm9vbCBpc0ludGVnZXIpCisgICAgc3RhdGljIFJlZjxDU1NDYWxjUHJpbWl0aXZlVmFsdWU+
IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZSwgYm9vbCBpc0ludGVn
ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDYWxjUHJpbWl0aXZl
VmFsdWUodmFsdWUsIGlzSW50ZWdlcikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5oCmluZGV4IGZjMDQ0M2YuLjJkMGMwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaApAQCAtOTUsMTMgKzk1LDEzIEBAIHB1YmxpYzoKICAg
ICBib29sIGlzTmVnYXRpdmUoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb24tPmRvdWJsZVZh
bHVlKCkgPCAwOyB9CiAgICAgZG91YmxlIGNvbXB1dGVMZW5ndGhQeChjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAKLSAgICBQYXNzUmVmPENhbGN1bGF0aW9uVmFsdWU+
IGNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYp
IGNvbnN0OworICAgIFJlZjxDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGVDYWxjdWxhdGlvblZhbHVl
KGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmKSBjb25zdDsKIAogICAgIFN0cmluZyBj
dXN0b21DU1NUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ2FsY1ZhbHVl
JikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQ2FsY1ZhbHVlKFBhc3NSZWY8Q1NTQ2FsY0V4
cHJlc3Npb25Ob2RlPiwgYm9vbCBzaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUpOworICAgIENTU0Nh
bGNWYWx1ZShSZWY8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiYmLCBib29sIHNob3VsZENsYW1wVG9O
b25OZWdhdGl2ZSk7CiAKICAgICBkb3VibGUgY2xhbXBUb1Blcm1pdHRlZFJhbmdlKGRvdWJsZSkg
Y29uc3Q7CiAKQEAgLTEwOSwxNCArMTA5LDE0IEBAIHByaXZhdGU6CiAgICAgY29uc3QgYm9vbCBt
X3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZTsKIH07CiAKLWlubGluZSBDU1NDYWxjVmFsdWU6OkNT
U0NhbGNWYWx1ZShQYXNzUmVmPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gZXhwcmVzc2lvbiwgYm9v
bCBzaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUpCitpbmxpbmUgQ1NTQ2FsY1ZhbHVlOjpDU1NDYWxj
VmFsdWUoUmVmPENTU0NhbGNFeHByZXNzaW9uTm9kZT4mJiBleHByZXNzaW9uLCBib29sIHNob3Vs
ZENsYW1wVG9Ob25OZWdhdGl2ZSkKICAgICA6IENTU1ZhbHVlKENhbGN1bGF0aW9uQ2xhc3MpCiAg
ICAgLCBtX2V4cHJlc3Npb24oV1RGOjptb3ZlKGV4cHJlc3Npb24pKQogICAgICwgbV9zaG91bGRD
bGFtcFRvTm9uTmVnYXRpdmUoc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlKQogewogfQogCi1pbmxp
bmUgUGFzc1JlZjxDYWxjdWxhdGlvblZhbHVlPiBDU1NDYWxjVmFsdWU6OmNyZWF0ZUNhbGN1bGF0
aW9uVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEp
IGNvbnN0CitpbmxpbmUgUmVmPENhbGN1bGF0aW9uVmFsdWU+IENTU0NhbGNWYWx1ZTo6Y3JlYXRl
Q2FsY3VsYXRpb25WYWx1ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJz
aW9uRGF0YSkgY29uc3QKIHsKICAgICByZXR1cm4gQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKG1f
ZXhwcmVzc2lvbi0+Y3JlYXRlQ2FsY0V4cHJlc3Npb24oY29udmVyc2lvbkRhdGEpLAogICAgICAg
ICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZSA/IENhbGN1bGF0aW9uUmFuZ2VOb25OZWdhdGl2
ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaApp
bmRleCAzMmVlYzZkLi41MzM3ODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2FudmFzVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaApA
QCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgQ1NTQ2FudmFzVmFsdWUg
OiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWY8Q1NTQ2FudmFzVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTQ2FudmFzVmFsdWUobmFtZSkpOyB9CisgICAgc3RhdGljIFJlZjxD
U1NDYW52YXNWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NDYW52YXNWYWx1ZShuYW1lKSk7IH0KICAgICB+Q1NTQ2FudmFzVmFsdWUoKTsK
IAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDkyMTRiMTguLjI2
MWVmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgc3RhdGljIENTU1ZhbHVlSUQgdmFsdWVG
b3JSZXBlYXRSdWxlKGludCBydWxlKQogICAgIH0KIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IHZhbHVlRm9ySW1hZ2VTbGljZVNpZGUoY29uc3QgTGVuZ3RoJiBsZW5ndGgp
CitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvckltYWdlU2xpY2VTaWRlKGNv
bnN0IExlbmd0aCYgbGVuZ3RoKQogewogICAgIC8vIFRoZXNlIHZhbHVlcyBjYW4gYmUgcGVyY2Vu
dGFnZXMsIG51bWJlcnMsIG9yIHdoaWxlIGFuIGFuaW1hdGlvbiBvZiBtaXhlZCB0eXBlcyBpcyBp
biBwcm9ncmVzcywKICAgICAvLyBhIGNhbGN1bGF0aW9uIHRoYXQgY29tYmluZXMgYSBwZXJjZW50
YWdlIGFuZCBhIG51bWJlci4KQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JJbWFnZVNsaWNlU2lkZShjb25zdCBMZW5ndGgmIGxlbmd0
aCkKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoMCwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VTbGljZShjb25zdCBOaW5lUGllY2VJbWFn
ZSYgaW1hZ2UpCitzdGF0aWMgUmVmPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4gdmFsdWVGb3JO
aW5lUGllY2VJbWFnZVNsaWNlKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKIHsKICAgICBh
dXRvJiBzbGljZXMgPSBpbWFnZS5pbWFnZVNsaWNlcygpOwogCkBAIC01MjMsNyArNTIzLDcgQEAg
c3RhdGljIFBhc3NSZWY8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVj
ZUltYWdlU2xpY2UoY29uc3QgTmluZVAKICAgICByZXR1cm4gQ1NTQm9yZGVySW1hZ2VTbGljZVZh
bHVlOjpjcmVhdGUoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUocXVhZC5yZWxlYXNlKCkpLCBp
bWFnZS5maWxsKCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
dWVGb3JOaW5lUGllY2VJbWFnZVF1YWQoY29uc3QgTGVuZ3RoQm94JiBib3gpCitzdGF0aWMgUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUXVhZChjb25zdCBMZW5n
dGhCb3gmIGJveCkKIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvcDsKICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJpZ2h0OwpAQCAtNTc0LDcgKzU3NCw3IEBAIHN0YXRp
YyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUXVhZChj
b25zdCBMZW5ndGhCb3gmIGJvCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVl
KHF1YWQucmVsZWFzZSgpKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9y
TmluZVBpZWNlSW1hZ2VSZXBlYXQoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQorc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVJlcGVhdChjb25zdCBOaW5lUGll
Y2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBob3Jpem9u
dGFsUmVwZWF0OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmVydGljYWxSZXBlYXQ7
CkBAIC01ODcsNyArNTg3LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmlu
ZVBpZWNlSW1hZ2VSZXBlYXQoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWcKICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSZXBlYXQu
cmVsZWFzZSgpLCB2ZXJ0aWNhbFJlcGVhdC5yZWxlYXNlKCkpKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2Um
IGltYWdlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZShjb25z
dCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgaWYgKCFpbWFnZS5oYXNJbWFnZSgpKQog
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlTm9uZSk7CkBAIC02MTIsMjQgKzYxMiwyNCBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4g
dmFsdWVGb3JOaW5lUGllY2VJbWFnZShjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCiAgICAg
cmV0dXJuIGNyZWF0ZUJvcmRlckltYWdlVmFsdWUoaW1hZ2VWYWx1ZS5yZWxlYXNlKCksIGltYWdl
U2xpY2VzLnJlbGVhc2UoKSwgYm9yZGVyU2xpY2VzLnJlbGVhc2UoKSwgb3V0c2V0LnJlbGVhc2Uo
KSwgcmVwZWF0LnJlbGVhc2UoKSk7CiB9CiAKLWlubGluZSBzdGF0aWMgUGFzc1JlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShkb3VibGUgdmFsdWUsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkKK2lubGluZSBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGRvdWJsZSB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlKQogewogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShhZGp1c3RGbG9h
dEZvckFic29sdXRlWm9vbSh2YWx1ZSwgc3R5bGUpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KTsKIH0KIAotaW5saW5lIHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB6b29tQWRq
dXN0ZWROdW1iZXJWYWx1ZShkb3VibGUgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkK
K2lubGluZSBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB6b29tQWRqdXN0ZWROdW1iZXJW
YWx1ZShkb3VibGUgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICByZXR1
cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUodmFsdWUgLyBzdHlsZS0+ZWZmZWN0aXZlWm9v
bSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
PENTU1ZhbHVlPiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYg
bGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKGxlbmd0aC5pc0ZpeGVkKCkpCiAgICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGxlbmd0aC52YWx1ZSgpLCBzdHlsZSk7
CiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGxlbmd0aCwgc3R5bGUpOwog
fQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JSZWZsZWN0aW9uKGNvbnN0IFN0
eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3Rh
dGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JSZWZsZWN0aW9uKGNvbnN0IFN0eWxlUmVmbGVjdGlv
biogcmVmbGVjdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmICghcmVm
bGVjdGlvbikKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZU5vbmUpOwpAQCAtNjU5LDcgKzY1OSw3IEBAIHN0YXRpYyBQYXNzUmVmPENT
U1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24oY29uc3QgU3R5bGVSZWZsZWN0aW9uKiByZWZsZWN0
aW9uLCBjCiAgICAgcmV0dXJuIENTU1JlZmxlY3RWYWx1ZTo6Y3JlYXRlKGRpcmVjdGlvbi5yZWxl
YXNlKCksIG9mZnNldC5yZWxlYXNlKCksIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UocmVmbGVjdGlv
bi0+bWFzaygpKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlUG9z
aXRpb25MaXN0Rm9yTGF5ZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBGaWxsTGF5
ZXIqIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVl
TGlzdD4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
LCBjb25zdCBGaWxsTGF5ZXIqIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAg
ICAgYXV0byBwb3NpdGlvbkxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CiAgICAgaWYgKGxheWVyLT5pc0JhY2tncm91bmRPcmlnaW5TZXQoKSkgewpAQCAtNzIzLDcg
KzcyMyw3IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihSCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZUNvbG9yVmFsdWUoY29sb3IucmdiKCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gcGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUoTGVuZ3RoIGxl
bmd0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gcGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUoTGVuZ3RoIGxlbmd0aCwgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChsZW5ndGguaXNQZXJjZW50Tm90Q2FsY3Vs
YXRlZCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUobGVuZ3Ro
LnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKQEAgLTczMSw3
ICs3MzEsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gcGVyY2VudGFnZU9y
Wm9vbUFkanVzdGVkVmFsdWUoTGVuZ3RoIGxlbmd0aCwgYwogICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgMCksIHN0eWxlKTsKIH0KIAotc3Rh
dGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExl
bmd0aCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5ndGgsIGNvbnN0
IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAobGVuZ3RoLmlzQXV0bygpKQogICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0
byk7CkBAIC03MzksNyArNzM5LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+
IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5ndGgsIGNvbnN0IFIKICAgICByZXR1
cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2YWx1ZUZvckxlbmd0aChsZW5ndGgsIDApLCBzdHls
ZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzQ29y
bmVyVmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVl
cyhjb25zdCBMZW5ndGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsK
ICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAg
ICAgbGlzdC5nZXQoKS5hcHBlbmQocGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUocmFkaXVz
LndpZHRoKCksIHN0eWxlKSk7CkBAIC03NDcsNyArNzQ3LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NT
VmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoY29uc3QgTGVuZ3RoU2l6ZSYg
cmFkaXUKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGdl
dEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gZ2V0Qm9yZGVyUmFkaXVz
Q29ybmVyVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUpCiB7CiAgICAgaWYgKHJhZGl1cy53aWR0aCgpID09IHJhZGl1cy5oZWlnaHQoKSkKICAg
ICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVlKHJhZGl1cy53aWR0aCgp
LCBzdHlsZSk7CkBAIC03NTUsNyArNzU1LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGdl
dEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywgY28KICAg
ICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHJhZGl1cywgc3R5bGUpOwogfQog
Ci1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGdldEJvcmRlclJhZGl1c1Nob3J0aGFuZFZh
bHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBn
ZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7
CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwog
ICAgIGJvb2wgc2hvd0hvcml6b250YWxCb3R0b21MZWZ0ID0gc3R5bGUtPmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCkud2lkdGgoKSAhPSBzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLndpZHRo
KCk7CkBAIC04MDYsNyArODA2LDcgQEAgc3RhdGljIExheW91dFJlY3Qgc2l6aW5nQm94KFJlbmRl
ck9iamVjdCYgcmVuZGVyZXIpCiAgICAgcmV0dXJuIGJveC5zdHlsZSgpLmJveFNpemluZygpID09
IEJPUkRFUl9CT1ggPyBib3guYm9yZGVyQm94UmVjdCgpIDogYm94LmNvbXB1dGVkQ1NTQ29udGVu
dEJveFJlY3QoKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+
IG1hdHJpeFRyYW5zZm9ybVZhbHVlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8V2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU+IG1hdHJpeFRyYW5zZm9ybVZhbHVlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBSZWZQdHI8V2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU+IHRyYW5zZm9ybVZhbHVlOwogICAgIGlmICh0cmFuc2Zvcm0u
aXNBZmZpbmUoKSkgewpAQCAtODQ1LDcgKzg0NSw3IEBAIHN0YXRpYyBQYXNzUmVmPFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlPiBtYXRyaXhUcmFuc2Zvcm1WYWx1ZShjb25zdCBUcmFuc2Zvcm1hdGlv
CiAgICAgcmV0dXJuIHRyYW5zZm9ybVZhbHVlLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLXN0YXRp
YyBQYXNzUmVmPENTU1ZhbHVlPiBjb21wdXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBjb21w
dXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUpCiB7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmhhc1RyYW5zZm9ybSgp
IHx8ICFzdHlsZS0+aGFzVHJhbnNmb3JtKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wo
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKQEAgLTg2NCwxNyArODY0LDE3
IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBjb21wdXRlZFRyYW5zZm9ybShSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTCiAgICAgcmV0dXJuIFdURjo6bW92ZShsaXN0KTsK
IH0KIAotc3RhdGljIGlubGluZSBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBhZGp1c3RMZW5n
dGhGb3Jab29tKGRvdWJsZSBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgQWRqdXN0
UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlIGFkanVzdCkKK3N0YXRpYyBpbmxpbmUgUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiBhZGp1c3RMZW5ndGhGb3Jab29tKGRvdWJsZSBsZW5ndGgsIGNvbnN0
IFJlbmRlclN0eWxlKiBzdHlsZSwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlIGFk
anVzdCkKIHsKICAgICByZXR1cm4gYWRqdXN0ID09IEFkanVzdFBpeGVsVmFsdWVzID8gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZShsZW5ndGgsIHN0eWxlKSA6IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZh
bHVlKGxlbmd0aCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYWRqdXN0TGVuZ3RoRm9yWm9vbShjb25zdCBM
ZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBBZGp1c3RQaXhlbFZhbHVl
c0ZvckNvbXB1dGVkU3R5bGUgYWRqdXN0KQorc3RhdGljIGlubGluZSBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IGFkanVzdExlbmd0aEZvclpvb20oY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlIGFkanVz
dCkKIHsKICAgICByZXR1cm4gYWRqdXN0ID09IEFkanVzdFBpeGVsVmFsdWVzID8gem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZShsZW5ndGgudmFsdWUoKSwgc3R5bGUpIDogY3NzVmFsdWVQb29sKCkuY3Jl
YXRlVmFsdWUobGVuZ3RoKTsKIH0KIAotUGFzc1JlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgQWRqdXN0UGl4ZWxW
YWx1ZXNGb3JDb21wdXRlZFN0eWxlIGFkanVzdCkKK1JlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgQWRqdXN0UGl4
ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlIGFkanVzdCkKIHsKICAgICBpZiAoIXNoYWRvdykKICAg
ICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZU5vbmUpOwpAQCAtODkyLDcgKzg5Miw3IEBAIFBhc3NSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvCiAgICAg
cmV0dXJuIFdURjo6bW92ZShsaXN0KTsKIH0KIAotUGFzc1JlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zLCBBZGp1c3RQaXhlbFZhbHVl
c0ZvckNvbXB1dGVkU3R5bGUgYWRqdXN0KQorUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlck9wZXJhdGlvbnMsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29t
cHV0ZWRTdHlsZSBhZGp1c3QpCiB7CiAgICAgaWYgKGZpbHRlck9wZXJhdGlvbnMub3BlcmF0aW9u
cygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwpAQCAtOTg0LDcgKzk4NCw3IEBAIFBhc3NSZWY8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsCiB9CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotc3RhdGljIFBh
c3NSZWY8Q1NTVmFsdWU+IHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aChjb25zdCBH
cmlkTGVuZ3RoJiB0cmFja0JyZWFkdGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRp
YyBSZWY8Q1NTVmFsdWU+IHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aChjb25zdCBH
cmlkTGVuZ3RoJiB0cmFja0JyZWFkdGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAg
ICBpZiAoIXRyYWNrQnJlYWR0aC5pc0xlbmd0aCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sKCkuY3JlYXRlVmFsdWUodHJhY2tCcmVhZHRoLmZsZXgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19GUik7CkBAIC05OTUsNyArOTk1LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHNw
ZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aChjb25zdCBHcmlkTGVuZ3RoJiB0cmEKICAg
ICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCh0cmFja0JyZWFkdGhMZW5n
dGgsIHN0eWxlKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHNwZWNpZmllZFZhbHVl
Rm9yR3JpZFRyYWNrU2l6ZShjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHNwZWNpZmllZFZhbHVlRm9y
R3JpZFRyYWNrU2l6ZShjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUsIGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKHRyYWNrU2l6ZS50eXBlKCkpIHsKICAgICBj
YXNlIExlbmd0aFRyYWNrU2l6aW5nOgpAQCAtMTAyMSw3ICsxMDIxLDcgQEAgc3RhdGljIHZvaWQg
YWRkVmFsdWVzRm9yTmFtZWRHcmlkTGluZXNBdEluZGV4KGNvbnN0IE9yZGVyZWROYW1lZEdyaWRM
aW5lc01hcCYgb3IKICAgICBsaXN0LmFwcGVuZChsaW5lTmFtZXMucmVsZWFzZU5vbk51bGwoKSk7
CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JH
cmlkVHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cyA/IHN0eWxlLT5ncmlkQ29sdW1ucygpIDogc3R5bGUtPmdyaWRSb3dzKCk7CiAgICAgY29uc3Qg
T3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwJiBvcmRlcmVkTmFtZWRHcmlkTGluZXMgPSBkaXJlY3Rp
b24gPT0gRm9yQ29sdW1ucyA/IHN0eWxlLT5vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoKSA6
IHN0eWxlLT5vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKTsKQEAgLTEwNjQsNyArMTA2NCw3IEBA
IHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvCiAgICAgcmV0dXJuIFdURjo6bW92ZShsaXN0KTsKIH0K
IAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFBvc2l0aW9uKGNvbnN0IEdy
aWRQb3NpdGlvbiYgcG9zaXRpb24pCitzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRQ
b3NpdGlvbihjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIGlmIChwb3NpdGlv
bi5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgc3RhdGljIFBhc3NS
ZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFBvc2l0aW9uKGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9z
aXRpb24pCiB9CiAjZW5kaWYKIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRyYW5z
aXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKQorc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gY3JlYXRlVHJhbnNpdGlvblByb3BlcnR5VmFsdWUoY29uc3QgQW5pbWF0aW9u
JiBhbmltYXRpb24pCiB7CiAgICAgaWYgKGFuaW1hdGlvbi5hbmltYXRpb25Nb2RlKCkgPT0gQW5p
bWF0aW9uOjpBbmltYXRlTm9uZSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwpAQCAtMTA5NCw3ICsxMDk0LDcgQEAgc3Rh
dGljIFBhc3NSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0
IEFuaW1hdGlvbiYgYW5pbWF0aW8KICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFs
dWUoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGFuaW1hdGlvbi5wcm9wZXJ0eSgpKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+
IGdldFRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0
KQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldFRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKQEAgLTEx
MDcsNyArMTEwNyw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0VHJhbnNpdGlv
blByb3BlcnR5VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pCiAKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IHNjcm9sbFNuYXBE
ZXN0aW5hdGlvbihSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExlbmd0aFNpemUmIGRlc3RpbmF0
aW9uKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHNjcm9sbFNuYXBEZXN0aW5hdGlvbihSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExlbmd0aFNpemUmIGRlc3RpbmF0aW9uKQogewogICAgIGF1
dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBsaXN0
LmdldCgpLmFwcGVuZChwZXJjZW50YWdlT3Jab29tQWRqdXN0ZWRWYWx1ZShkZXN0aW5hdGlvbi53
aWR0aCgpLCAmc3R5bGUpKTsKQEAgLTExMTUsNyArMTExNSw3IEBAIHN0YXRpYyBQYXNzUmVmPENT
U1ZhbHVlTGlzdD4gc2Nyb2xsU25hcERlc3RpbmF0aW9uKFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgTGVuCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBz
Y3JvbGxTbmFwUG9pbnRzKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgU2Nyb2xsU25hcFBvaW50
cyYgcG9pbnRzKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gc2Nyb2xsU25hcFBvaW50cyhSZW5kZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IFNjcm9sbFNuYXBQb2ludHMmIHBvaW50cykKIHsKICAgICBpZiAo
cG9pbnRzLnVzZXNFbGVtZW50cykKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUVsZW1lbnRzKTsKQEAgLTExMjcsNyArMTEyNyw3IEBA
IHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBzY3JvbGxTbmFwUG9pbnRzKFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgU2Nyb2xsU25hcFBvCiAgICAgcmV0dXJuIFdURjo6bW92ZShsaXN0KTsKIH0K
IAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHNjcm9sbFNuYXBDb29yZGluYXRlcyhSZW5kZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IFZlY3RvcjxMZW5ndGhTaXplPiYgY29vcmRpbmF0ZXMpCitzdGF0
aWMgUmVmPENTU1ZhbHVlPiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMoUmVuZGVyU3R5bGUmIHN0eWxl
LCBjb25zdCBWZWN0b3I8TGVuZ3RoU2l6ZT4mIGNvb3JkaW5hdGVzKQogewogICAgIGlmIChjb29y
ZGluYXRlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKQEAgLTExNDYsNyArMTE0Niw3IEBAIHN0YXRp
YyBQYXNzUmVmPENTU1ZhbHVlPiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMoUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBWZWN0b3I8CiAKICNlbmRpZgogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxp
c3Q+IGdldERlbGF5VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gZ2V0RGVsYXlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmlt
TGlzdCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CkBAIC0xMTU5LDcgKzExNTksNyBAQCBzdGF0aWMg
UGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGdldERlbGF5VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCog
YW5pbUxpc3QpCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVl
TGlzdD4gZ2V0RHVyYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKK3N0
YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXREdXJhdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvbkxp
c3QqIGFuaW1MaXN0KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29t
bWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKQEAgLTExNzIsNyArMTE3Miw3IEBA
IHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0RHVyYXRpb25WYWx1ZShjb25zdCBBbmlt
YXRpb25MaXN0KiBhbmltTGlzdCkKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFBhc3NS
ZWY8Q1NTVmFsdWU+IGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVuY3Rp
b24qIHRpbWluZ0Z1bmN0aW9uKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlVGltaW5nRnVu
Y3Rpb25WYWx1ZShjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24pCiB7CiAgICAg
c3dpdGNoICh0aW1pbmdGdW5jdGlvbi0+dHlwZSgpKSB7CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlv
bjo6Q3ViaWNCZXppZXJGdW5jdGlvbjogewpAQCAtMTIwOCw3ICsxMjA4LDcgQEAgc3RhdGljIFBh
c3NSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVu
Y3Rpb24qIHRpbWluZ0YKICAgICB9CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4g
Z2V0VGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKK3N0
YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IEFuaW1h
dGlvbkxpc3QqIGFuaW1MaXN0KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKQEAgLTEyMjAsNyArMTIy
MCw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0VGltaW5nRnVuY3Rpb25WYWx1
ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBjcmVhdGVMaW5lQm94Q29udGFpblZhbHVlKHVuc2lnbmVk
IGxpbmVCb3hDb250YWluKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gY3JlYXRlTGluZUJveENvbnRh
aW5WYWx1ZSh1bnNpZ25lZCBsaW5lQm94Q29udGFpbikKIHsKICAgICBpZiAoIWxpbmVCb3hDb250
YWluKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTm9uZSk7CkBAIC0xMzM2LDE0ICsxMzM2LDE0IEBAIHN0YXRpYyBDU1NWYWx1ZUlE
IGlkZW50aWZpZXJGb3JGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiAgICAgcmV0
dXJuIENTU1ZhbHVlSW52YWxpZDsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IHZhbHVlRm9yRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQorc3RhdGljIFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBm
YW1pbHkpCiB7CiAgICAgaWYgKENTU1ZhbHVlSUQgZmFtaWx5SWRlbnRpZmllciA9IGlkZW50aWZp
ZXJGb3JGYW1pbHkoZmFtaWx5KSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShmYW1pbHlJZGVudGlmaWVyKTsKICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sKCkuY3JlYXRlVmFsdWUoZmFtaWx5LnN0cmluZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1NUUklORyk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3Jh
dGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4dERlY29yYXRpb24pCitzdGF0aWMgUmVmPENTU1Zh
bHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4dERlY29yYXRp
b24pCiB7CiAgICAgLy8gQmxpbmsgdmFsdWUgaXMgaWdub3JlZC4KICAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwpAQCAt
MTM2Myw3ICsxMzYzLDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNv
cmF0aW9uRmxhZ3NUb0NTU1ZhbHVlKGludCB0ZXh0RGVjb3JhdGlvbikKICAgICByZXR1cm4gbGlz
dC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gcmVuZGVy
VGV4dERlY29yYXRpb25TdHlsZUZsYWdzVG9DU1NWYWx1ZShUZXh0RGVjb3JhdGlvblN0eWxlIHRl
eHREZWNvcmF0aW9uU3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3Jh
dGlvblN0eWxlRmxhZ3NUb0NTU1ZhbHVlKFRleHREZWNvcmF0aW9uU3R5bGUgdGV4dERlY29yYXRp
b25TdHlsZSkKIHsKICAgICBzd2l0Y2ggKHRleHREZWNvcmF0aW9uU3R5bGUpIHsKICAgICBjYXNl
IFRleHREZWNvcmF0aW9uU3R5bGVTb2xpZDoKQEAgLTEzODIsNyArMTM4Miw3IEBAIHN0YXRpYyBQ
YXNzUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvblN0eWxlRmxhZ3NUb0NTU1ZhbHVl
KFRleHREZWNvcmF0aW9uCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUV4cGxpY2l0
SW5pdGlhbFZhbHVlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0
RGVjb3JhdGlvblNraXBGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29yYXRpb25Ta2lwIHRleHREZWNv
cmF0aW9uU2tpcCkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0aW9uU2tp
cEZsYWdzVG9DU1NWYWx1ZShUZXh0RGVjb3JhdGlvblNraXAgdGV4dERlY29yYXRpb25Ta2lwKQog
ewogICAgIHN3aXRjaCAodGV4dERlY29yYXRpb25Ta2lwKSB7CiAgICAgY2FzZSBUZXh0RGVjb3Jh
dGlvblNraXBBdXRvOgpAQCAtMTM5OSw3ICsxMzk5LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFs
dWU+IHJlbmRlclRleHREZWNvcmF0aW9uU2tpcEZsYWdzVG9DU1NWYWx1ZShUZXh0RGVjb3JhdGlv
blMKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUo
KTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhhc2lzUG9zaXRpb25G
bGFnc1RvQ1NTVmFsdWUoVGV4dEVtcGhhc2lzUG9zaXRpb24gdGV4dEVtcGhhc2lzUG9zaXRpb24p
CitzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJFbXBoYXNpc1Bvc2l0aW9uRmxhZ3NUb0NTU1Zh
bHVlKFRleHRFbXBoYXNpc1Bvc2l0aW9uIHRleHRFbXBoYXNpc1Bvc2l0aW9uKQogewogICAgIEFT
U0VSVCghKCh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRFbXBoYXNpc1Bvc2l0aW9uT3Zlcikg
JiYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRpb25VbmRlcikpKTsK
ICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlv
bkxlZnQpICYmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRFbXBoYXNpc1Bvc2l0aW9uUmln
aHQpKSk7CkBAIC0xNDE4LDcgKzE0MTgsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gcmVu
ZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShUZXh0RW1waGFzaXNQb3NpdAogICAg
IHJldHVybiBsaXN0LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1Zh
bHVlPiBmaWxsUmVwZWF0VG9DU1NWYWx1ZShFRmlsbFJlcGVhdCB4UmVwZWF0LCBFRmlsbFJlcGVh
dCB5UmVwZWF0KQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gZmlsbFJlcGVhdFRvQ1NTVmFsdWUoRUZp
bGxSZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeVJlcGVhdCkKIHsKICAgICAvLyBGb3IgYmFj
a3dhcmRzIGNvbXBhdGliaWxpdHksIGlmIGJvdGggdmFsdWVzIGFyZSBlcXVhbCwganVzdCByZXR1
cm4gb25lIG9mIHRoZW0uIEFuZAogICAgIC8vIGlmIHRoZSB0d28gdmFsdWVzIGFyZSBlcXVpdmFs
ZW50IHRvIHJlcGVhdC14IG9yIHJlcGVhdC15LCBqdXN0IHJldHVybiB0aGUgc2hvcnRoYW5kLgpA
QCAtMTQzNSw3ICsxNDM1LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGZpbGxSZXBlYXRU
b0NTU1ZhbHVlKEVGaWxsUmVwZWF0IHhSZXBlYXQsIEVGaWxsUmVwZWF0IHkKICAgICByZXR1cm4g
V1RGOjptb3ZlKGxpc3QpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gZmlsbFNvdXJj
ZVR5cGVUb0NTU1ZhbHVlKEVNYXNrU291cmNlVHlwZSB0eXBlKQorc3RhdGljIFJlZjxDU1NWYWx1
ZT4gZmlsbFNvdXJjZVR5cGVUb0NTU1ZhbHVlKEVNYXNrU291cmNlVHlwZSB0eXBlKQogewogICAg
IHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgTWFza0FscGhhOgpAQCAtMTQ0Niw3ICsxNDQ2LDcg
QEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGZpbGxTb3VyY2VUeXBlVG9DU1NWYWx1ZShFTWFz
a1NvdXJjZVR5cGUgdHlwZSkKICAgICB9CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBm
aWxsU2l6ZVRvQ1NTVmFsdWUoY29uc3QgRmlsbFNpemUmIGZpbGxTaXplLCBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBmaWxsU2l6ZVRvQ1NTVmFsdWUoY29u
c3QgRmlsbFNpemUmIGZpbGxTaXplLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAg
aWYgKGZpbGxTaXplLnR5cGUgPT0gQ29udGFpbikKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNvbnRhaW4pOwpAQCAtMTQ2MywxMiAr
MTQ2MywxMiBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gZmlsbFNpemVUb0NTU1ZhbHVlKGNv
bnN0IEZpbGxTaXplJiBmaWxsU2l6ZSwgY29uc3QgUmVuZAogICAgIHJldHVybiBXVEY6Om1vdmUo
bGlzdCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBhbHRUZXh0VG9D
U1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5jb250ZW50QWx0VGV4dCgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1NUUklORyk7CiB9CiAgICAgCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+
IGNvbnRlbnRUb0NTU1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8
Q1NTVmFsdWVMaXN0PiBjb250ZW50VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUp
CiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OwogICAgIGZvciAoY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnREYXRhID0gc3R5bGUtPmNvbnRl
bnREYXRhKCk7IGNvbnRlbnREYXRhOyBjb250ZW50RGF0YSA9IGNvbnRlbnREYXRhLT5uZXh0KCkp
IHsKQEAgLTE1MDgsNyArMTUwOCw3IEBAIHN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50ZWRQcm9w
ZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICBMT0dfRVJST1IoIldlYktpdCBk
b2VzIG5vdCB5ZXQgaW1wbGVtZW50IGdldENvbXB1dGVkU3R5bGUgZm9yICclcycuIiwgZ2V0UHJv
cGVydHlOYW1lKHByb3BlcnR5SUQpKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0
PiBmb250RmFtaWx5RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NT
VmFsdWVMaXN0PiBmb250RmFtaWx5RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAg
ICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0eWxlLT5mb250KCkuZmFtaWx5Q291bnQoKTsgKytp
KQpAQCAtMTUxNiw3ICsxNTE2LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBmb250
RmFtaWx5RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gbGlzdDsKIH0K
IAotc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpbmVIZWlnaHRGcm9tU3R5bGUo
UmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZUhl
aWdodEZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgTGVuZ3RoIGxlbmd0aCA9
IHN0eWxlLT5saW5lSGVpZ2h0KCk7CiAgICAgaWYgKGxlbmd0aC5pc05lZ2F0aXZlKCkpCkBAIC0x
NTMxLDI2ICsxNTMxLDI2IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5l
SGVpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgMCksIHN0eWxlKTsKIH0K
IAotc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTaXplRnJvbVN0eWxlKFJl
bmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTaXpl
RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICByZXR1cm4gem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZShzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKSwg
c3R5bGUpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFN0eWxl
RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGZvbnRTdHlsZUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKHN0
eWxlLT5mb250RGVzY3JpcHRpb24oKS5pdGFsaWMoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUl0YWxpYyk7CiAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250VmFyaWFudEZyb21TdHls
ZShSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250
VmFyaWFudEZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKHN0eWxlLT5m
b250RGVzY3JpcHRpb24oKS5zbWFsbENhcHMoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVNtYWxsQ2Fwcyk7CiAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250V2VpZ2h0RnJvbVN0eWxl
KFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRX
ZWlnaHRGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIHN3aXRjaCAoc3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpLndlaWdodCgpKSB7CiAgICAgY2FzZSBGb250V2VpZ2h0MTAwOgpA
QCAtMTY2Niw3ICsxNjY2LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICByZXR1cm4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3RvcihtX25vZGUsIG1fYWxsb3dWaXNpdGVkU3R5bGUsIG1fcHNl
dWRvRWxlbWVudFNwZWNpZmllcikucHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlELCB1cGRhdGVMYXlv
dXQpOwogfQogCi1QYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRpZXMoKSBjb25zdAorUmVmPE11dGFibGVTdHlsZVBy
b3BlcnRpZXM+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRpZXMoKSBj
b25zdAogewogICAgIHJldHVybiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKG1fbm9kZSwgbV9hbGxv
d1Zpc2l0ZWRTdHlsZSwgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKS5jb3B5UHJvcGVydGllcygp
OwogfQpAQCAtMTcxOCw3ICsxNzE4LDcgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShOb2RlKiBzdHlsZWQKIH0KIAog
I2lmIEVOQUJMRShDU1NfU0hBUEVTKQotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHNoYXBlUHJv
cGVydHlWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFNoYXBlVmFsdWUqIHNo
YXBlVmFsdWUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBzaGFwZVByb3BlcnR5VmFsdWUoY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlKQogewogICAg
IGlmICghc2hhcGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwpAQCAtMzIzNiw3ICszMjM2LDcgQEAgYm9vbCBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eU1hdGNoZXMoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELCBjb25zdCBDU1MKICAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZSAmJiB2YWx1ZSAmJiBj
b21wdXRlZFZhbHVlLT5lcXVhbHMoKnZhbHVlKTsKIH0KIAotUGFzc1JlZjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllcygpIGNvbnN0
CitSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29w
eVByb3BlcnRpZXMoKSBjb25zdAogewogICAgIHJldHVybiBjb3B5UHJvcGVydGllc0luU2V0KGNv
bXB1dGVkUHJvcGVydGllcywgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVzKTsKIH0KQEAgLTMyODksNyAr
MzI4OSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
OjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9yCiAgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOwogfQogCi1QYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1
bnNpZ25lZCBsZW5ndGgpIGNvbnN0CitSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlE
KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKICAgICBWZWN0b3I8Q1NTUHJvcGVydHks
IDI1Nj4gbGlzdDsKICAgICBsaXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAppbmRl
eCBmMzNmOGU5Li4zYTRjMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC01MiwxMyArNTIsMTMgQEAgcHVibGljOgogICAgIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxh
eW91dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CiAKICAgICAvLyBIZWxwZXIgbWV0aG9kcyBmb3Ig
SFRNTCBlZGl0aW5nLgotICAgIFBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVBy
b3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkg
Y29uc3Q7Ci0gICAgUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGll
cygpIGNvbnN0OworICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGll
c0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsK
KyAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdDsK
ICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBnZXRGb250U2l6ZUNTU1ZhbHVlUHJl
ZmVycmluZ0tleXdvcmQoKSBjb25zdDsKICAgICBib29sIHVzZUZpeGVkRm9udERlZmF1bHRTaXpl
KCkgY29uc3Q7CiAgICAgYm9vbCBwcm9wZXJ0eU1hdGNoZXMoQ1NTUHJvcGVydHlJRCwgY29uc3Qg
Q1NTVmFsdWUqKSBjb25zdDsKIAotICAgIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZv
ckZpbHRlcihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBBZGp1
c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgPSBBZGp1c3RQaXhlbFZhbHVlcyk7CisgICAg
c3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVyU3R5bGUqLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxl
ID0gQWRqdXN0UGl4ZWxWYWx1ZXMpOwogCiBwcml2YXRlOgogICAgIC8vIFRoZSBzdHlsZWQgbm9k
ZSBpcyBlaXRoZXIgdGhlIG5vZGUgcGFzc2VkIGludG8gY29tcHV0ZWRQcm9wZXJ0eVZhbHVlLCBv
ciB0aGUKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBzdmdQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpIGNvbnN0Owog
ICAgIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFBh
c3NSZWZQdHI8U1ZHUGFpbnQ+LCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCi0gICAgc3RhdGljIFBh
c3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqLCBDU1NQcm9w
ZXJ0eUlELCBjb25zdCBSZW5kZXJTdHlsZSosIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRT
dHlsZSA9IEFkanVzdFBpeGVsVmFsdWVzKTsKKyAgICBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1
ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVy
U3R5bGUqLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgPSBBZGp1c3RQaXhlbFZh
bHVlcyk7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JW
YWxpZENvbG9yKFJlbmRlclN0eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKIAogICAgIFBhc3NS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3Bl
cnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpIGNvbnN0OwpAQCAtMTE1LDcgKzEx
NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9w
ZXJ0aWVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxh
eW91dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmgKaW5kZXggNTA2N2ViYy4uYTJmYmM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBD
U1NDcm9zc2ZhZGVWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKICAgICBm
cmllbmQgY2xhc3MgQ3Jvc3NmYWRlU3ViaW1hZ2VPYnNlcnZlclByb3h5OwogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmPENTU0Nyb3NzZmFkZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gZnJvbVZhbHVlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB0b1ZhbHVlKQorICAgIHN0YXRp
YyBSZWY8Q1NTQ3Jvc3NmYWRlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBmcm9t
VmFsdWUsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHRvVmFsdWUpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NDcm9zc2ZhZGVWYWx1ZShmcm9tVmFsdWUsIHRvVmFsdWUpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKaW5kZXgg
N2ExMmY3YS4uMjQxZjU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNv
ckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZh
bHVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgaW5saW5lIFNWR0N1cnNvckVsZW1lbnQq
IHJlc291cmNlUmVmZXJlbmNlZEJ5Q3Vyc29yRWxlbWVudChjb25zdCBTdHJpbmcmCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLUNTU0N1cnNvckltYWdlVmFsdWU6OkNTU0N1cnNvckltYWdlVmFs
dWUoUGFzc1JlZjxDU1NWYWx1ZT4gaW1hZ2VWYWx1ZSwgYm9vbCBoYXNIb3RTcG90LCBjb25zdCBJ
bnRQb2ludCYgaG90U3BvdCkKK0NTU0N1cnNvckltYWdlVmFsdWU6OkNTU0N1cnNvckltYWdlVmFs
dWUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIGJvb2wgaGFzSG90U3BvdCwgY29uc3QgSW50
UG9pbnQmIGhvdFNwb3QpCiAgICAgOiBDU1NWYWx1ZShDdXJzb3JJbWFnZUNsYXNzKQogICAgICwg
bV9pbWFnZVZhbHVlKFdURjo6bW92ZShpbWFnZVZhbHVlKSkKICAgICAsIG1faGFzSG90U3BvdCho
YXNIb3RTcG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdl
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKaW5kZXgg
ODZkZjdhZC4uNjFhMjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNv
ckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZS5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFNWR0VsZW1lbnQ7CiAKIGNsYXNzIENTU0N1cnNv
ckltYWdlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmPENTU0N1cnNvckltYWdlVmFsdWU+IGNyZWF0ZShQYXNzUmVmPENTU1ZhbHVlPiBpbWFnZVZh
bHVlLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQorICAgIHN0YXRp
YyBSZWY8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gY3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZh
bHVlLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZShXVEY6Om1vdmUo
aW1hZ2VWYWx1ZSksIGhhc0hvdFNwb3QsIGhvdFNwb3QpKTsKICAgICB9CkBAIC02MCw3ICs2MCw3
IEBAIHB1YmxpYzoKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NDdXJzb3JJbWFnZVZhbHVlJikg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZShQYXNzUmVmPENTU1Zh
bHVlPiBpbWFnZVZhbHVlLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0IEludFBvaW50JiBob3RTcG90
KTsKKyAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBi
b29sIGhhc0hvdFNwb3QsIGNvbnN0IEludFBvaW50JiBob3RTcG90KTsKIAogICAgIHZvaWQgZGV0
YWNoUGVuZGluZ0ltYWdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1
ZS5oCmluZGV4IGJkMDUyNGEuLjhlNzcxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBTdHlsZVJlc29sdmVyOwogY2xh
c3MgQ1NTRmlsdGVySW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIHsK
ICAgICBmcmllbmQgY2xhc3MgRmlsdGVyU3ViaW1hZ2VPYnNlcnZlclByb3h5OwogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmPENTU0ZpbHRlckltYWdlVmFsdWU+IGNyZWF0ZShQYXNzUmVmPENT
U1ZhbHVlPiBpbWFnZVZhbHVlLCBQYXNzUmVmPENTU1ZhbHVlPiBmaWx0ZXJWYWx1ZSkKKyAgICBz
dGF0aWMgUmVmPENTU0ZpbHRlckltYWdlVmFsdWU+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgaW1h
Z2VWYWx1ZSwgUmVmPENTU1ZhbHVlPiBmaWx0ZXJWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENTU0ZpbHRlckltYWdlVmFsdWUoV1RGOjptb3ZlKGltYWdlVmFsdWUp
LCBXVEY6Om1vdmUoZmlsdGVyVmFsdWUpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmgKaW5kZXggNjBhYzg3Yy4uN2E5ODBkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCkBAIC0zOSwxMSArMzksMTEgQEAgY2xhc3MgU1ZH
Rm9udEZhY2VFbGVtZW50OwogCiBjbGFzcyBDU1NGb250RmFjZVNyY1ZhbHVlIDogcHVibGljIENT
U1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NGb250RmFjZVNyY1ZhbHVl
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRG
YWNlU3JjVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRm9udEZhY2VTcmNWYWx1ZShyZXNvdXJjZSwgZmFs
c2UpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTRm9udEZhY2VTcmNWYWx1ZT4gY3Jl
YXRlTG9jYWwoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRG
YWNlU3JjVmFsdWU+IGNyZWF0ZUxvY2FsKGNvbnN0IFN0cmluZyYgcmVzb3VyY2UpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZVNyY1ZhbHVlKHJlc291cmNl
LCB0cnVlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
ZWF0dXJlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZhbHVlLmgK
aW5kZXggY2Y2YzM4MS4uMjE0Y2IzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGZWF0dXJlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZlYXR1
cmVWYWx1ZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q1NTRm9udEZlYXR1cmVWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWY8Q1NTRm9udEZlYXR1cmVWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGFn
LCBpbnQgdmFsdWUpCisgICAgc3RhdGljIFJlZjxDU1NGb250RmVhdHVyZVZhbHVlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiB0YWcsIGludCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENTU0ZvbnRGZWF0dXJlVmFsdWUodGFnLCB2YWx1ZSkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250VmFsdWUuaAppbmRleCAwMGQ3MDFmLi41MjBhNDdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRWYWx1ZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIENTU1ZhbHVlTGlzdDsKIAog
Y2xhc3MgQ1NTRm9udFZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZjxDU1NGb250VmFsdWU+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxDU1NGb250
VmFsdWU+IGNyZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NG
b250VmFsdWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5j
dGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCmluZGV4
IDU1MWY0NWUuLmQ1NWNmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5j
dGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaApA
QCAtMzUsMTIgKzM1LDEyIEBAIHN0cnVjdCBDU1NQYXJzZXJGdW5jdGlvbjsKIAogY2xhc3MgQ1NT
RnVuY3Rpb25WYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWY8Q1NTRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKENTU1BhcnNlckZ1bmN0aW9uKiBmdW5jdGlv
bikKKyAgICBzdGF0aWMgUmVmPENTU0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShDU1NQYXJzZXJGdW5j
dGlvbiogZnVuY3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NG
dW5jdGlvblZhbHVlKGZ1bmN0aW9uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8Q1NT
RnVuY3Rpb25WYWx1ZT4gY3JlYXRlKFN0cmluZyBuYW1lLCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlz
dD4gYXJncykKKyAgICBzdGF0aWMgUmVmPENTU0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShTdHJpbmcg
bmFtZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGFyZ3MpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NGdW5jdGlvblZhbHVlKG5hbWUsIGFyZ3MpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCA2YWI3OGRiLi5hZDJiNTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBw
cm90ZWN0ZWQ6CiBjbGFzcyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlIDogcHVibGljIENTU0dyYWRp
ZW50VmFsdWUgewogcHVibGljOgogCi0gICAgc3RhdGljIFBhc3NSZWY8Q1NTTGluZWFyR3JhZGll
bnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBl
IGdyYWRpZW50VHlwZSA9IENTU0xpbmVhckdyYWRpZW50KQorICAgIHN0YXRpYyBSZWY8Q1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3Jh
ZGllbnRUeXBlIGdyYWRpZW50VHlwZSA9IENTU0xpbmVhckdyYWRpZW50KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZShyZXBlYXQsIGdy
YWRpZW50VHlwZSkpOwogICAgIH0KQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgLy8g
Q3JlYXRlIHRoZSBncmFkaWVudCBmb3IgYSBnaXZlbiBzaXplLgogICAgIFBhc3NSZWZQdHI8R3Jh
ZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmKTsK
IAotICAgIFBhc3NSZWY8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gY2xvbmUoKSBjb25zdAorICAg
IFJlZjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKCp0aGlzKSk7CiAg
ICAgfQpAQCAtMTcwLDEyICsxNzAsMTIgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NHcmFkaWVudFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBjcmVhdGUoQ1NTR3JhZGllbnRSZXBl
YXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlID0gQ1NTUmFkaWFsR3JhZGll
bnQpCisgICAgc3RhdGljIFJlZjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBjcmVhdGUoQ1NTR3Jh
ZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlID0gQ1NTUmFk
aWFsR3JhZGllbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NSYWRp
YWxHcmFkaWVudFZhbHVlKHJlcGVhdCwgZ3JhZGllbnRUeXBlKSk7CiAgICAgfQogCi0gICAgUGFz
c1JlZjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBjbG9uZSgpIGNvbnN0CisgICAgUmVmPENTU1Jh
ZGlhbEdyYWRpZW50VmFsdWU+IGNsb25lKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1JhZGlhbEdyYWRpZW50VmFsdWUoKnRoaXMpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaAppbmRleCA0OTg0
ZTc2Li4xZDk3NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBs
YXRlQXJlYXNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkVGVtcGxhdGVB
cmVhc1ZhbHVlLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZjxDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlPiBjcmVhdGUoY29u
c3QgTmFtZWRHcmlkQXJlYU1hcCYgZ3JpZEFyZWFNYXAsIHNpemVfdCByb3dDb3VudCwgc2l6ZV90
IGNvbHVtbkNvdW50KQorICAgIHN0YXRpYyBSZWY8Q1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZT4g
Y3JlYXRlKGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIGdyaWRBcmVhTWFwLCBzaXplX3Qgcm93Q291
bnQsIHNpemVfdCBjb2x1bW5Db3VudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1
bW5Db3VudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZVNldFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCmluZGV4
IDQwYTk5NjUuLjFiMDUxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZVNldFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaApA
QCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zOwogY2xhc3MgQ1NT
SW1hZ2VTZXRWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZUxpc3QgewogcHVibGljOgogCi0gICAgc3Rh
dGljIFBhc3NSZWY8Q1NTSW1hZ2VTZXRWYWx1ZT4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPENT
U0ltYWdlU2V0VmFsdWU+IGNyZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NJbWFnZVNldFZhbHVlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1
ZS5oCmluZGV4IDljNDIwOGYuLjIzMjUzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUu
aApAQCAtMzUsOCArMzUsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zOwogCiBjbGFz
cyBDU1NJbWFnZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTSW1hZ2VWYWx1ZSh1cmwpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVm
PENTU0ltYWdlVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgU3R5bGVJbWFnZSogaW1h
Z2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTSW1hZ2VWYWx1ZSh1cmwsIGltYWdlKSk7IH0K
KyAgICBzdGF0aWMgUmVmPENTU0ltYWdlVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFnZVZhbHVlKHVybCkpOyB9CisgICAgc3RhdGlj
IFJlZjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIFN0eWxlSW1hZ2Uq
IGltYWdlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ltYWdlVmFsdWUodXJsLCBpbWFnZSkp
OyB9CiAgICAgfkNTU0ltYWdlVmFsdWUoKTsKIAogICAgIFN0eWxlQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCmluZGV4IDMxNjcxYmEuLjhh
NjM3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCkBAIC0yOCw3ICsy
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTSW5oZXJpdGVkVmFsdWUgOiBw
dWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU0luaGVyaXRl
ZFZhbHVlPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8Q1NTSW5oZXJpdGVkVmFsdWU+IGNyZWF0
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbmhlcml0ZWRWYWx1
ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCmluZGV4IDkxMTZjMTgu
LmE3MTFhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKQEAgLTI4LDExICsy
OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0luaXRpYWxWYWx1ZSA6IHB1
YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTSW5pdGlhbFZh
bHVlPiBjcmVhdGVFeHBsaWNpdCgpCisgICAgc3RhdGljIFJlZjxDU1NJbml0aWFsVmFsdWU+IGNy
ZWF0ZUV4cGxpY2l0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0lu
aXRpYWxWYWx1ZSgvKiBpbXBsaWNpdCAqLyBmYWxzZSkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFz
c1JlZjxDU1NJbml0aWFsVmFsdWU+IGNyZWF0ZUltcGxpY2l0KCkKKyAgICBzdGF0aWMgUmVmPENT
U0luaXRpYWxWYWx1ZT4gY3JlYXRlSW1wbGljaXQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ1NTSW5pdGlhbFZhbHVlKC8qIGltcGxpY2l0ICovIHRydWUpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCmluZGV4IDQxZDdiODMuLjgyOWYw
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3R5bGVLZXlmcmFtZTo6U3R5bGVLZXlmcmFt
ZShQYXNzUmVmPFN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykKK1N0eWxlS2V5ZnJhbWU6OlN0
eWxlS2V5ZnJhbWUoUmVmPFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQogICAgIDogbV9w
cm9wZXJ0aWVzKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NL
ZXlmcmFtZVJ1bGUuaAppbmRleCBhNzNlMWI0Li40MzAzYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0tleWZyYW1lUnVsZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIENTU0tleWZyYW1lc1J1bGU7
CiBjbGFzcyBTdHlsZUtleWZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVLZXlmcmFtZT4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0eWxlS2V5ZnJhbWU+IGNyZWF0ZShQYXNzUmVmPFN0eWxlUHJvcGVydGllcz4gcHJv
cGVydGllcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBjcmVhdGUoUmVm
PFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTdHlsZUtleWZyYW1lKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkpOwogICAgIH0K
QEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU3R5bGVLZXlmcmFtZShQYXNzUmVmPFN0eWxlUHJvcGVy
dGllcz4pOworICAgIGV4cGxpY2l0IFN0eWxlS2V5ZnJhbWUoUmVmPFN0eWxlUHJvcGVydGllcz4m
Jik7CiAgICAgCiAgICAgc3RhdGljIHZvaWQgcGFyc2VLZXlTdHJpbmcoY29uc3QgU3RyaW5nJiwg
VmVjdG9yPGRvdWJsZT4mIGtleXMpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0tleWZyYW1lc1J1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNS
dWxlLmgKaW5kZXggNzhmOWU3OS4uYmQ3NjYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0tleWZyYW1lc1J1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIENTU0tleWZyYW1lUnVsZTsKIAogY2xh
c3MgU3R5bGVSdWxlS2V5ZnJhbWVzIDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlUnVsZUtleWZyYW1lcz4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVLZXlmcmFtZXMoKSk7IH0KKyAgICBzdGF0aWMgUmVmPFN0
eWxlUnVsZUtleWZyYW1lcz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1
bGVLZXlmcmFtZXMoKSk7IH0KICAgICAKICAgICB+U3R5bGVSdWxlS2V5ZnJhbWVzKCk7CiAgICAg
CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBpbnQgZmluZEtleWZyYW1lSW5k
ZXgoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwogCi0gICAgUGFzc1JlZjxTdHlsZVJ1bGVLZXlm
cmFtZXM+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUtleWZy
YW1lcygqdGhpcykpOyB9CisgICAgUmVmPFN0eWxlUnVsZUtleWZyYW1lcz4gY29weSgpIGNvbnN0
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlS2V5ZnJhbWVzKCp0aGlzKSk7IH0KIAog
cHJpdmF0ZToKICAgICBTdHlsZVJ1bGVLZXlmcmFtZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCmluZGV4IGQ3NjQzZmEuLjE2MDE2MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaApAQCAtNDEsNyArNDEsNyBA
QCB0eXBlZGVmIHVuc2lnbmVkIExpbmVCb3hDb250YWluOwogLy8gVXNlZCBmb3IgdGV4dC1DU1NM
aW5lQm94Q29udGFpbiBhbmQgYm94LUNTU0xpbmVCb3hDb250YWluCiBjbGFzcyBDU1NMaW5lQm94
Q29udGFpblZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZjxDU1NMaW5lQm94Q29udGFpblZhbHVlPiBjcmVhdGUoTGluZUJveENvbnRhaW4gdmFsdWUp
CisgICAgc3RhdGljIFJlZjxDU1NMaW5lQm94Q29udGFpblZhbHVlPiBjcmVhdGUoTGluZUJveENv
bnRhaW4gdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NMaW5l
Qm94Q29udGFpblZhbHVlKHZhbHVlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApp
bmRleCAwMDMwNGJlLi4wNTAzMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTkw
LDcgKzE5MCw3IEBAIHN0YXRpYyBib29sIGhhc1ByZWZpeChjb25zdCBjaGFyKiBzdHJpbmcsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhciogcHJlZml4KQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVZhbHVl
UGFpcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBmaXJzdCwgUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gc2Vjb25kKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3Jl
YXRlUHJpbWl0aXZlVmFsdWVQYWlyKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGZpcnN0
LCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzZWNvbmQpCiB7CiAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShmaXJzdCwgc2Vjb25kKSk7CiB9
CkBAIC0xMzkyLDE0ICsxMzkyLDE0IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZVNlbGVjdG9yKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzCiAgICAgbV9z
ZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yID0gbnVsbHB0cjsKIH0KIAotUGFzc1JlZjxJbW11
dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6cGFyc2VJbmxpbmVTdHlsZURlY2xhcmF0
aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBFbGVtZW50KiBlbGVtZW50KQorUmVmPEltbXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gQ1NTUGFyc2VyOjpwYXJzZUlubGluZVN0eWxlRGVjbGFyYXRpb24o
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQ1NTUGFyc2Vy
Q29udGV4dCBjb250ZXh0ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5lbGVtZW50U2hlZXQoKS5jb250
ZW50cygpLnBhcnNlckNvbnRleHQoKTsKICAgICBjb250ZXh0Lm1vZGUgPSBzdHJpY3RUb0NTU1Bh
cnNlck1vZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgp
LmluUXVpcmtzTW9kZSgpKTsKICAgICByZXR1cm4gQ1NTUGFyc2VyKGNvbnRleHQpLnBhcnNlRGVj
bGFyYXRpb24oc3RyaW5nLCAmZWxlbWVudC0+ZG9jdW1lbnQoKS5lbGVtZW50U2hlZXQoKS5jb250
ZW50cygpKTsKIH0KIAotUGFzc1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNl
cjo6cGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywgU3R5bGVTaGVldENvbnRl
bnRzKiBjb250ZXh0U3R5bGVTaGVldCkKK1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IENT
U1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywgU3R5bGVTaGVl
dENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICBzZXRTdHlsZVNoZWV0KGNvbnRl
eHRTdHlsZVNoZWV0KTsKIApAQCAtMTQxMCw3ICsxNDEwLDcgQEAgUGFzc1JlZjxJbW11dGFibGVT
dHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcm
IHN0cmkKICAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCiAgICAgICAgIGRlbGV0ZUZv
bnRGYWNlT25seVZhbHVlcygpOwogCi0gICAgUGFzc1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IHN0eWxlID0gY3JlYXRlU3R5bGVQcm9wZXJ0aWVzKCk7CisgICAgUmVmPEltbXV0YWJsZVN0
eWxlUHJvcGVydGllcz4gc3R5bGUgPSBjcmVhdGVTdHlsZVByb3BlcnRpZXMoKTsKICAgICBjbGVh
clByb3BlcnRpZXMoKTsKICAgICByZXR1cm4gc3R5bGU7CiB9CkBAIC0xNTA1LDcgKzE1MDUsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsdGVyUHJvcGVydGllcyhib29sIGltcG9ydGFudCwgY29u
c3QgQ1NTUGFyc2VyOjpQYXJzZWRQcm9wZQogICAgIH0KIH0KIAotUGFzc1JlZjxJbW11dGFibGVT
dHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVQcm9wZXJ0aWVzKCkKK1JlZjxJ
bW11dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVQcm9wZXJ0aWVz
KCkKIHsKICAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzPiBzZWVuUHJvcGVydGllczsK
ICAgICBzaXplX3QgdW51c2VkRW50cmllcyA9IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CkBA
IC0xNzAzLDcgKzE3MDMsNyBAQCBib29sIENTU1BhcnNlcjo6dmFsaWRVbml0KENTU1BhcnNlclZh
bHVlJiB2YWx1ZSwgVW5pdHMgdW5pdGZsYWdzLCBDU1NQYXJzZXJNb2RlCiAgICAgcmV0dXJuIGI7
CiB9CiAKLWlubGluZSBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OmNyZWF0
ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OmNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1
ZShDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKG1fcGFyc2VkQ2FsY3VsYXRpb24p
IHsKICAgICAgICAgQVNTRVJUKGlzQ2FsY3VsYXRpb24odmFsdWUpKTsKQEAgLTE3MjMsNyArMTcy
Myw3IEBAIGlubGluZSBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OmNyZWF0
ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShDU1NQYXJzCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZVZhbHVlKHZhbHVlLmZWYWx1ZSwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlcz4odmFsdWUudW5pdCkpOwogfQogCi1pbmxpbmUgUGFzc1JlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ1NTUGFyc2VyOjpjcmVhdGVQcmltaXRpdmVTdHJpbmdWYWx1ZShDU1NQYXJzZXJW
YWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OmNy
ZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKIHsKICAgICBB
U1NFUlQodmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyB8fCB2YWx1
ZS51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpOwogICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSh2YWx1ZS5zdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfU1RSSU5HKTsKQEAgLTMxMjcsNyArMzEyNyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjphZGRGaWxsVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYg
bHZhbCwgUGFzc1JlZjxDU1NWYWx1ZT4gcnZhbCkKK3ZvaWQgQ1NTUGFyc2VyOjphZGRGaWxsVmFs
dWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUmVmPENTU1ZhbHVlPiBydmFsKQogewogICAgIGlm
ICghbHZhbCkgewogICAgICAgICBsdmFsID0gV1RGOjptb3ZlKHJ2YWwpOwpAQCAtMzQzNCw3ICsz
NDM0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbFNob3J0aGFuZChDU1NQcm9wZXJ0eUlE
IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBDU1NQYXJzZXI6OmFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWws
IFBhc3NSZWY8Q1NTVmFsdWU+IHJ2YWwpCit2b2lkIENTU1BhcnNlcjo6YWRkQW5pbWF0aW9uVmFs
dWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUmVmPENTU1ZhbHVlPiBydmFsKQogewogICAgIGlm
ICghbHZhbCkgewogICAgICAgICBsdmFsID0gV1RGOjptb3ZlKHJ2YWwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oCmluZGV4IDBlMjc0NDkuLmM3MjZmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAg
LTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlz
dD4gcGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlVmFsaWRQcmltaXRpdmUoQ1NTVmFsdWVJRCBpZGVu
dCwgQ1NTUGFyc2VyVmFsdWUmKTsKICAgICBib29sIHBhcnNlRGVjbGFyYXRpb24oTXV0YWJsZVN0
eWxlUHJvcGVydGllcyosIGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURh
dGE+LCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKLSAgICBzdGF0aWMg
UGFzc1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IHBhcnNlSW5saW5lU3R5bGVEZWNsYXJh
dGlvbihjb25zdCBTdHJpbmcmLCBFbGVtZW50Kik7CisgICAgc3RhdGljIFJlZjxJbW11dGFibGVT
dHlsZVByb3BlcnRpZXM+IHBhcnNlSW5saW5lU3R5bGVEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcm
LCBFbGVtZW50Kik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVlcnk+IHBhcnNlTWVkaWFR
dWVyeShjb25zdCBTdHJpbmcmKTsKICNpZiBFTkFCTEUoUElDVFVSRV9TSVpFUykKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U291cmNlU2l6ZUxpc3Q+IHBhcnNlU2l6ZXNBdHRyaWJ1dGUoY29uc3QgU3Ry
aW5nJik7CkBAIC0xMzYsOCArMTM2LDggQEAgcHVibGljOgogICAgIGJvb2wgcGFyc2VGaWxsUHJv
cGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQmIHByb3BJZDEsIENTU1By
b3BlcnR5SUQmIHByb3BJZDIsIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7
CiAgICAgYm9vbCBwYXJzZUZpbGxTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTUHJv
cGVydHlJRCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsK
IAotICAgIHZvaWQgYWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWY8
Q1NTVmFsdWU+IHJ2YWwpOwotICAgIHZvaWQgYWRkQW5pbWF0aW9uVmFsdWUoUmVmUHRyPENTU1Zh
bHVlPiYgbHZhbCwgUGFzc1JlZjxDU1NWYWx1ZT4gcnZhbCk7CisgICAgdm9pZCBhZGRGaWxsVmFs
dWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUmVmPENTU1ZhbHVlPiBydmFsKTsKKyAgICB2b2lk
IGFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFJlZjxDU1NWYWx1ZT4g
cnZhbCk7CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlvbkRlbGF5KCk7
CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25EaXJlY3Rpb24oKTsKQEAg
LTMzMCw3ICszMzAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyUHJvcGVydGllcygpOwog
Ci0gICAgUGFzc1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVN0eWxlUHJvcGVy
dGllcygpOworICAgIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVN0eWxlUHJv
cGVydGllcygpOwogCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBtX2NvbnRleHQ7CiAKQEAgLTQwMiw4
ICs0MDIsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVW
aWV3cG9ydFJ1bGUoKTsKICNlbmRpZgogCi0gICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKENTU1BhcnNlclZhbHVlJik7Ci0gICAgUGFzc1Jl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUoQ1NTUGFyc2Vy
VmFsdWUmKTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZU51bWVy
aWNWYWx1ZShDU1NQYXJzZXJWYWx1ZSYpOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3Jl
YXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUoQ1NTUGFyc2VyVmFsdWUmKTsKIAogICAgIHN0YXRpYyBV
UkwgY29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJs
KTsKIApAQCAtNTA1LDcgKzUwNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZUdlbmVyYXRl
ZEltYWdlKENTU1BhcnNlclZhbHVlTGlzdCYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKIAogICAgIGJv
b2wgcGFyc2VWYWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiwgQ1NTUHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0
eWxlU2hlZXQpOwotICAgIFBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwYXJzZURl
Y2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxl
U2hlZXQpOworICAgIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IHBhcnNlRGVjbGFyYXRp
b24oY29uc3QgU3RyaW5nJiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCk7
CiAKICAgICBQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGU+IHBhcnNlSW5zZXRSb3VuZGVkQ29ybmVy
cyhQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGVJbnNldD4sIENTU1BhcnNlclZhbHVlTGlzdCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBiN2IzNTQ3Li45
Y2UwNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTk0
NSwxMyArOTQ1LDEzIEBAIFBhaXIqIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRQYWlyVmFsdWUoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmFsdWUucGFpcjsKIH0KIAotTkVW
RVJfSU5MSU5FIFBhc3NSZWY8U3RyaW5nSW1wbD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51
bWJlclZhbHVlKGNvbnN0IGNoYXIqIHN1ZmZpeCwgdW5zaWduZWQgc3VmZml4TGVuZ3RoKSBjb25z
dAorTkVWRVJfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0
TnVtYmVyVmFsdWUoY29uc3QgY2hhciogc3VmZml4LCB1bnNpZ25lZCBzdWZmaXhMZW5ndGgpIGNv
bnN0CiB7CiAgICAgRGVjaW1hbE51bWJlciBkZWNpbWFsKG1fdmFsdWUubnVtKTsKIAogICAgIHVu
c2lnbmVkIGJ1ZmZlckxlbmd0aCA9IGRlY2ltYWwuYnVmZmVyTGVuZ3RoRm9yU3RyaW5nRGVjaW1h
bCgpICsgc3VmZml4TGVuZ3RoOwogICAgIExDaGFyKiBidWZmZXI7Ci0gICAgUGFzc1JlZjxTdHJp
bmdJbXBsPiBzdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGJ1ZmZlckxl
bmd0aCwgYnVmZmVyKTsKKyAgICBSZWY8U3RyaW5nSW1wbD4gc3RyaW5nID0gU3RyaW5nSW1wbDo6
Y3JlYXRlVW5pbml0aWFsaXplZChidWZmZXJMZW5ndGgsIGJ1ZmZlcik7CiAKICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBkZWNpbWFsLnRvU3RyaW5nRGVjaW1hbChidWZmZXIsIGJ1ZmZlckxlbmd0aCk7
CiAKQEAgLTk2Miw3ICs5NjIsNyBAQCBORVZFUl9JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiBD
U1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyVmFsdWUoY29uc3QgY2hhcgogfQogCiB0ZW1w
bGF0ZSA8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+Ci1BTFdBWVNfSU5MSU5FIFBhc3NSZWY8U3Ry
aW5nSW1wbD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIg
KCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pIGNvbnN0CitBTFdBWVNfSU5MSU5FIFJlZjxT
dHJpbmdJbXBsPiBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyVmFsdWUoY29uc3QgY2hh
ciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSkgY29uc3QKIHsKICAgICByZXR1cm4gZm9y
bWF0TnVtYmVyVmFsdWUoY2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAxKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggYWI2ZDZkYS4uZWRkNzYyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTIyMiwxNyArMjIyLDE3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzVmFsdWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZl
VW5pdFR5cGUgPT0gQ1NTX1ZBTFVFX0lEOyB9CiAgICAgYm9vbCBpc0ZsZXgoKSBjb25zdCB7IHJl
dHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX0ZSOyB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUlEIHZhbHVlSUQpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWVJRCkpOyB9Ci0gICAg
c3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZpZXIoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHByb3BlcnR5SUQpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBjcmVhdGVQYXJzZXJPcGVyYXRvcihpbnQgcGFyc2VyT3BlcmF0b3IpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocGFyc2VyT3BlcmF0b3IpKTsgfQorICAgIHN0YXRp
YyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVJRCB2YWx1
ZUlEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlSUQpKTsg
fQorICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZpZXIoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2
ZVZhbHVlKHByb3BlcnR5SUQpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+
IGNyZWF0ZVBhcnNlck9wZXJhdG9yKGludCBwYXJzZXJPcGVyYXRvcikgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZShwYXJzZXJPcGVyYXRvcikpOyB9CiAKLSAgICBzdGF0
aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQ29sb3IodW5zaWduZWQgcmdiVmFs
dWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmdiVmFsdWUpKTsg
fQotICAgIHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoZG91YmxlIHZh
bHVlLCBVbml0VHlwZXMgdHlwZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZSwgdHlwZSkpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBVbml0VHlwZXMgdHlwZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSkpOyB9Ci0gICAgc3Rh
dGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBMZW5ndGgmIHZhbHVl
LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUsIHN0eWxlKSk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY3JlYXRlKGNvbnN0IExlbmd0aFNpemUmIHZhbHVlLCBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFs
dWUsIHN0eWxlKSk7IH0KKyAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVD
b2xvcih1bnNpZ25lZCByZ2JWYWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRp
dmVWYWx1ZShyZ2JWYWx1ZSkpOyB9CisgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlKGRvdWJsZSB2YWx1ZSwgVW5pdFR5cGVzIHR5cGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUsIHR5cGUpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBVbml0VHlwZXMgdHlw
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSkp
OyB9CisgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGNvbnN0IExlbmd0
aCYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBMZW5ndGhTaXplJiB2YWx1ZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlLCBzdHlsZSkpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUGFz
c1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKFQgdmFsdWUpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKFQgdmFsdWUpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSkpOwogICAgIH0KQEAgLTI0MSw3ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGJhc2lj
IGlkZWEgaXMgdGhhdCBhIHN0eWxlc2hlZXQgY2FuIHVzZSB0aGUgdmFsdWUgX19xZW0gKGZvciBx
dWlya3kgZW0pIGluc3RlYWQgb2YgZW0uCiAgICAgLy8gV2hlbiB0aGUgcXVpcmt5IHZhbHVlIGlz
IHVzZWQsIGlmIHlvdSdyZSBpbiBxdWlya3MgbW9kZSwgdGhlIG1hcmdpbiB3aWxsIGNvbGxhcHNl
IGF3YXkKICAgICAvLyBpbnNpZGUgYSB0YWJsZSBjZWxsLgotICAgIHN0YXRpYyBQYXNzUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVBbGxvd2luZ01hcmdpblF1aXJrKGRvdWJsZSB2YWx1ZSwg
VW5pdFR5cGVzIHR5cGUpCisgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRl
QWxsb3dpbmdNYXJnaW5RdWlyayhkb3VibGUgdmFsdWUsIFVuaXRUeXBlcyB0eXBlKQogICAgIHsK
ICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHF1aXJrVmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUodmFsdWUsIHR5cGUpOwogICAgICAgICBxdWlya1ZhbHVlLT5tX2lzUXVpcmtWYWx1ZSA9
IHRydWU7CkBAIC00MDQsOCArNDA0LDggQEAgcHJpdmF0ZToKIAogICAgIEFMV0FZU19JTkxJTkUg
U3RyaW5nIGZvcm1hdE51bWJlckZvckN1c3RvbUNTU1RleHQoKSBjb25zdDsKICAgICB0ZW1wbGF0
ZSA8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+Ci0gICAgQUxXQVlTX0lOTElORSBQYXNzUmVmPFN0
cmluZ0ltcGw+IGZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFy
YWN0ZXJDb3VudF0pIGNvbnN0OwotICAgIE5FVkVSX0lOTElORSBQYXNzUmVmPFN0cmluZ0ltcGw+
IGZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIqIHN1ZmZpeCwgdW5zaWduZWQgc3VmZml4TGVu
Z3RoKSBjb25zdDsKKyAgICBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBmb3JtYXROdW1i
ZXJWYWx1ZShjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKSBjb25zdDsK
KyAgICBORVZFUl9JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IGZvcm1hdE51bWJlclZhbHVlKGNvbnN0
IGNoYXIqIHN1ZmZpeCwgdW5zaWduZWQgc3VmZml4TGVuZ3RoKSBjb25zdDsKIAogICAgIHVuaW9u
IHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Jl
ZmxlY3RWYWx1ZS5oCmluZGV4IDcyZTM2NmQuLjBiNTVmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7
CiAKIGNsYXNzIENTU1JlZmxlY3RWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWY8Q1NTUmVmbGVjdFZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gZGlyZWN0aW9uLAorICAgIHN0YXRpYyBSZWY8Q1NTUmVmbGVjdFZhbHVl
PiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGlyZWN0aW9uLAogICAgICAg
ICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBvZmZzZXQsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IG1hc2spCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NSZWZsZWN0
VmFsdWUoZGlyZWN0aW9uLCBvZmZzZXQsIG1hc2spKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTaGFkb3dWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYWRvd1Zh
bHVlLmgKaW5kZXggMDA2YzYyOS4uMzBkM2I0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NoYWRvd1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYWRvd1Zh
bHVlLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CiAvLyBVc2Vk
IGZvciB0ZXh0LXNoYWRvdyBhbmQgYm94LXNoYWRvdwogY2xhc3MgQ1NTU2hhZG93VmFsdWUgOiBw
dWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU1NoYWRvd1Zh
bHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geCwKKyAgICBzdGF0aWMg
UmVmPENTU1NoYWRvd1ZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
eCwKICAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geSwKICAgICAgICAgUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYmx1ciwKICAgICAgICAgUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gc3ByZWFkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmgKaW5kZXggZDI3NzQ0MC4uMjQ3NWMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJikgPSAwOwogCi0gICAgdmly
dHVhbCBQYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9w
ZXJ0aWVzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBDU1NTdHlsZVNoZWV0KiBwYXJlbnRT
dHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAKaW5kZXggNGUxZmU3OC4uOTg0YjUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcApAQCAtNzUsMjMgKzc1LDIzIEBAIHN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUNT
U1N0eWxlU2hlZXRQYXJlbnQoTm9kZSogcGFyZW50Tm9kZSkKIH0KICNlbmRpZgogCi1QYXNzUmVm
PENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShQYXNzUmVmPFN0eWxlU2hlZXRD
b250ZW50cz4gc2hlZXQsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKK1JlZjxDU1NTdHlsZVNo
ZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVl
dCwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKQogeyAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NTdHlsZVNoZWV0KFdURjo6bW92ZShzaGVldCksIG93bmVyUnVsZSkpOwogfQogCi1QYXNz
UmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShQYXNzUmVmPFN0eWxlU2hl
ZXRDb250ZW50cz4gc2hlZXQsIE5vZGUqIG93bmVyTm9kZSkKK1JlZjxDU1NTdHlsZVNoZWV0PiBD
U1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVldCwgTm9k
ZSogb3duZXJOb2RlKQogeyAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdHlsZVNoZWV0
KFdURjo6bW92ZShzaGVldCksIG93bmVyTm9kZSwgZmFsc2UpKTsKIH0KIAotUGFzc1JlZjxDU1NT
dHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3duZXJOb2RlLCBj
b25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCitSZWY8Q1NTU3R5bGVT
aGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKE5vZGUmIG93bmVyTm9kZSwgY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogewogICAgIENTU1BhcnNlckNv
bnRleHQgcGFyc2VyQ29udGV4dChvd25lck5vZGUuZG9jdW1lbnQoKSwgYmFzZVVSTCwgZW5jb2Rp
bmcpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxlU2hlZXQoU3R5bGVTaGVldENv
bnRlbnRzOjpjcmVhdGUoYmFzZVVSTC5zdHJpbmcoKSwgcGFyc2VyQ29udGV4dCksICZvd25lck5v
ZGUsIHRydWUpKTsKIH0KIAotQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChQYXNzUmVmPFN0
eWxlU2hlZXRDb250ZW50cz4gY29udGVudHMsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKK0NT
U1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250
ZW50cywgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKQogICAgIDogbV9jb250ZW50cyhXVEY6Om1v
dmUoY29udGVudHMpKQogICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQoZmFsc2UpCiAgICAgLCBt
X2lzRGlzYWJsZWQoZmFsc2UpCkBAIC0xMDEsNyArMTAxLDcgQEAgQ1NTU3R5bGVTaGVldDo6Q1NT
U3R5bGVTaGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gY29udGVudHMsIENTU0ltcG9y
dFJ1bGUKICAgICBtX2NvbnRlbnRzLT5yZWdpc3RlckNsaWVudCh0aGlzKTsKIH0KIAotQ1NTU3R5
bGVTaGVldDo6Q1NTU3R5bGVTaGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gY29udGVu
dHMsIE5vZGUqIG93bmVyTm9kZSwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpCitDU1NTdHlsZVNo
ZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIE5v
ZGUqIG93bmVyTm9kZSwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpCiAgICAgOiBtX2NvbnRlbnRz
KFdURjo6bW92ZShjb250ZW50cykpCiAgICAgLCBtX2lzSW5saW5lU3R5bGVzaGVldChpc0lubGlu
ZVN0eWxlc2hlZXQpCiAgICAgLCBtX2lzRGlzYWJsZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2hlZXQuaAppbmRleCA0MDE3YjlmLi4xODkwNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmgKQEAgLTQ5LDkgKzQ5LDkgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAog
Y2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUGFzc1JlZjxTdHlsZVNo
ZWV0Q29udGVudHM+LCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKLSAgICBzdGF0aWMg
UGFzc1JlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+
LCBOb2RlKiBvd25lck5vZGUpOwotICAgIHN0YXRpYyBQYXNzUmVmPENTU1N0eWxlU2hlZXQ+IGNy
ZWF0ZUlubGluZShOb2RlJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZyA9IFN0
cmluZygpKTsKKyAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVT
aGVldENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKKyAgICBzdGF0
aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBO
b2RlKiBvd25lck5vZGUpOworICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlSW5s
aW5lKE5vZGUmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nID0gU3RyaW5nKCkp
OwogCiAgICAgdmlydHVhbCB+Q1NTU3R5bGVTaGVldCgpOwogCkBAIC0xMTgsOCArMTE4LDggQEAg
cHVibGljOgogICAgIHZvaWQgZGV0YWNoRnJvbURvY3VtZW50KCkgeyBtX293bmVyTm9kZSA9IG51
bGxwdHI7IH0KIAogcHJpdmF0ZToKLSAgICBDU1NTdHlsZVNoZWV0KFBhc3NSZWY8U3R5bGVTaGVl
dENvbnRlbnRzPiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKTsKLSAgICBDU1NTdHlsZVNoZWV0
KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiwgTm9kZSogb3duZXJOb2RlLCBib29sIGlzSW5s
aW5lU3R5bGVzaGVldCk7CisgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRz
PiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUpOworICAgIENTU1N0eWxlU2hlZXQoUmVmPFN0
eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSogb3duZXJOb2RlLCBib29sIGlzSW5saW5lU3R5bGVz
aGVldCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBBU0NJSUxpdGVyYWwoInRleHQvY3NzIik7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCmluZGV4IGMzOWFiMGMuLmRhY2I0NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaApAQCAtMzMsNyAr
MzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb25WYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWY8Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlPiBjcmVhdGUoZG91YmxlIHgx
LCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlPiBjcmVhdGUoZG91YmxlIHgxLCBkb3VibGUgeTEs
IGRvdWJsZSB4MiwgZG91YmxlIHkyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKHgxLCB5MSwgeDIsIHkyKSk7CiAg
ICAgfQpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBDU1NTdGVwc1RpbWluZ0Z1
bmN0aW9uVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmPENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKGludCBzdGVwcywgYm9vbCBz
dGVwQXRTdGFydCkKKyAgICBzdGF0aWMgUmVmPENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZT4g
Y3JlYXRlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZShzdGVwcywgc3RlcEF0
U3RhcnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29k
ZVJhbmdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5o
CmluZGV4IDA2YzE3NzQuLjI2NDMwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NVbmljb2RlUmFuZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2Rl
UmFuZ2VWYWx1ZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ1NTVW5pY29kZVJhbmdlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmPENTU1VuaWNvZGVSYW5nZVZhbHVlPiBjcmVhdGUoVUNoYXIzMiBmcm9t
LCBVQ2hhcjMyIHRvKQorICAgIHN0YXRpYyBSZWY8Q1NTVW5pY29kZVJhbmdlVmFsdWU+IGNyZWF0
ZShVQ2hhcjMyIGZyb20sIFVDaGFyMzIgdG8pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NVbmljb2RlUmFuZ2VWYWx1ZShmcm9tLCB0bykpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwCmluZGV4IGE2YzNjZTYuLjI3NTIzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmNwcApAQCAtNzIsNyArNzIsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoQ1NTVmFsdWUpID09
IHNpemVvZihTYW1lU2l6ZUFzQ1NTVmFsdWUpLCBDU1NfdmFsdWVfc2hvdWxkXwogCiBjbGFzcyBU
ZXh0Q2xvbmVDU1NWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWY8VGV4dENsb25lQ1NTVmFsdWU+IGNyZWF0ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHQpCisgICAgc3RhdGljIFJlZjxUZXh0Q2xvbmVDU1NWYWx1ZT4gY3Jl
YXRlKENsYXNzVHlwZSBjbGFzc1R5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRDbG9uZUNTU1ZhbHVlKGNsYXNzVHlwZSwgdGV4
dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAppbmRleCBjODlmOTU4Li5hNDcz
Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC0zNCwxOSArMzQsMTkgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZjxDU1NWYWx1ZT4sIDQ+OjppdGVyYXRvciBpdGVy
YXRvcjsKICAgICB0eXBlZGVmIFZlY3RvcjxSZWY8Q1NTVmFsdWU+LCA0Pjo6Y29uc3RfaXRlcmF0
b3IgY29uc3RfaXRlcmF0b3I7CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGNy
ZWF0ZUNvbW1hU2VwYXJhdGVkKCkKKyAgICBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
VmFsdWVMaXN0KENvbW1hU2VwYXJhdG9yKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmPENT
U1ZhbHVlTGlzdD4gY3JlYXRlU3BhY2VTZXBhcmF0ZWQoKQorICAgIHN0YXRpYyBSZWY8Q1NTVmFs
dWVMaXN0PiBjcmVhdGVTcGFjZVNlcGFyYXRlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NWYWx1ZUxpc3QoU3BhY2VTZXBhcmF0b3IpKTsKICAgICB9Ci0gICAgc3Rh
dGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVTbGFzaFNlcGFyYXRlZCgpCisgICAgc3Rh
dGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZVNsYXNoU2VwYXJhdGVkKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhbHVlTGlzdChTbGFzaFNlcGFyYXRvcikpOwog
ICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUZyb21QYXJzZXJW
YWx1ZUxpc3QoQ1NTUGFyc2VyVmFsdWVMaXN0JiBsaXN0KQorICAgIHN0YXRpYyBSZWY8Q1NTVmFs
dWVMaXN0PiBjcmVhdGVGcm9tUGFyc2VyVmFsdWVMaXN0KENTU1BhcnNlclZhbHVlTGlzdCYgbGlz
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhbHVlTGlzdChsaXN0
KSk7CiAgICAgfQpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgaXRlcmF0b3IgYmVnaW4o
KSB7IHJldHVybiBtX3ZhbHVlcy5iZWdpbigpOyB9CiAgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1
cm4gbV92YWx1ZXMuZW5kKCk7IH0KIAotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWY8Q1NTVmFsdWU+
KTsKLSAgICB2b2lkIHByZXBlbmQoUGFzc1JlZjxDU1NWYWx1ZT4pOworICAgIHZvaWQgYXBwZW5k
KFJlZjxDU1NWYWx1ZT4mJik7CisgICAgdm9pZCBwcmVwZW5kKFJlZjxDU1NWYWx1ZT4mJik7CiAg
ICAgYm9vbCByZW1vdmVBbGwoQ1NTVmFsdWUqKTsKICAgICBib29sIGhhc1ZhbHVlKENTU1ZhbHVl
KikgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvcHkoKTsKQEAgLTg5LDEy
ICs4OSwxMiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWY8Q1NTVmFsdWU+LCA0PiBtX3ZhbHVl
czsKIH07CiAKLWlubGluZSB2b2lkIENTU1ZhbHVlTGlzdDo6YXBwZW5kKFBhc3NSZWY8Q1NTVmFs
dWU+IHZhbHVlKQoraW5saW5lIHZvaWQgQ1NTVmFsdWVMaXN0OjphcHBlbmQoUmVmPENTU1ZhbHVl
PiYmIHZhbHVlKQogewogICAgIG1fdmFsdWVzLmFwcGVuZChXVEY6Om1vdmUodmFsdWUpKTsKIH0K
IAotaW5saW5lIHZvaWQgQ1NTVmFsdWVMaXN0OjpwcmVwZW5kKFBhc3NSZWY8Q1NTVmFsdWU+IHZh
bHVlKQoraW5saW5lIHZvaWQgQ1NTVmFsdWVMaXN0OjpwcmVwZW5kKFJlZjxDU1NWYWx1ZT4mJiB2
YWx1ZSkKIHsKICAgICBtX3ZhbHVlcy5pbnNlcnQoMCwgV1RGOjptb3ZlKHZhbHVlKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCmluZGV4IDJkZmJjNjYuLjY2NTkzZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCkBAIC00OSw3ICs0OSw3IEBAIENTU1ZhbHVlUG9v
bDo6Q1NTVmFsdWVQb29sKCkKIHsKIH0KIAotUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NT
VmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVJRCBpZGVudCkKK1JlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVJRCBpZGVudCkKIHsKICAgICBpZiAoIWlkZW50KQogICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWRlbnQpOwpAQCAtNjAsMjEgKzYwLDIxIEBA
IFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlSUQgaWRlbnQpCiAgICAgcmV0dXJuICptX2lkZW50aWZpZXJWYWx1ZUNh
Y2hlW2lkZW50XTsKIH0KIAotUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29s
OjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTUHJvcGVydHlJRCBpZGVudCkKK1JlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTUHJvcGVy
dHlJRCBpZGVudCkKIHsKICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoaWRlbnQpOwogfQogCi1QYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBv
b2w6OmNyZWF0ZUNvbG9yVmFsdWUodW5zaWduZWQgcmdiVmFsdWUpCitSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCByZ2JWYWx1ZSkK
IHsKICAgICAvLyBUaGVzZSBhcmUgdGhlIGVtcHR5IGFuZCBkZWxldGVkIHZhbHVlcyBvZiB0aGUg
aGFzaCB0YWJsZS4KICAgICBpZiAocmdiVmFsdWUgPT0gQ29sb3I6OnRyYW5zcGFyZW50KQotICAg
ICAgICByZXR1cm4gbV9jb2xvclRyYW5zcGFyZW50OworICAgICAgICByZXR1cm4gbV9jb2xvclRy
YW5zcGFyZW50LmNvcHlSZWYoKTsKICAgICBpZiAocmdiVmFsdWUgPT0gQ29sb3I6OndoaXRlKQot
ICAgICAgICByZXR1cm4gbV9jb2xvcldoaXRlOworICAgICAgICByZXR1cm4gbV9jb2xvcldoaXRl
LmNvcHlSZWYoKTsKICAgICAvLyBKdXN0IGJlY2F1c2UgaXQgaXMgY29tbW9uLgogICAgIGlmIChy
Z2JWYWx1ZSA9PSBDb2xvcjo6YmxhY2spCi0gICAgICAgIHJldHVybiBtX2NvbG9yQmxhY2s7Cisg
ICAgICAgIHJldHVybiBtX2NvbG9yQmxhY2suY29weVJlZigpOwogCiAgICAgLy8gUmVtb3ZlIG9u
ZSBlbnRyeSBhdCByYW5kb20gaWYgdGhlIGNhY2hlIGdyb3dzIHRvbyBsYXJnZS4KICAgICBjb25z
dCBpbnQgbWF4aW11bUNvbG9yQ2FjaGVTaXplID0gNTEyOwpAQCAtODcsNyArODcsNyBAQCBQYXNz
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUNvbG9yVmFsdWUodW5z
aWduZWQgcmdiVmFsdWUpCiAgICAgcmV0dXJuICplbnRyeS5pdGVyYXRvci0+dmFsdWU7CiB9CiAK
LVBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91
YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHR5cGUpCitSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHR5cGUpCiB7CiAgICAgQVNTRVJUKHN0ZDo6aXNmaW5p
dGUodmFsdWUpKTsKIApAQCAtMTE4LDcgKzExOCw3IEBAIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVW
CiAgICAgcmV0dXJuICpjYWNoZVtpbnRWYWx1ZV07CiB9CiAKLVBhc3NSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhbWlseVZhbHVlKGNvbnN0IFN0cmluZyYg
ZmFtaWx5TmFtZSkKK1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVG
b250RmFtaWx5VmFsdWUoY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lKQogewogICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4mIHZhbHVlID0gbV9mb250RmFtaWx5VmFsdWVDYWNoZS5hZGQoZmFt
aWx5TmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVQb29sLmgKaW5kZXggMzM5NjQ1My4uNTI2ODBjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZVBvb2wuaApAQCAtNDQsMTggKzQ0LDE4IEBAIGNsYXNzIENTU1ZhbHVlUG9vbCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGNyZWF0ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0g
ICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlRm9udEZhbWlseVZhbHVlKGNvbnN0
IFN0cmluZyYpOwotICAgIFBhc3NSZWY8Q1NTSW5oZXJpdGVkVmFsdWU+IGNyZWF0ZUluaGVyaXRl
ZFZhbHVlKCkgeyByZXR1cm4gbV9pbmhlcml0ZWRWYWx1ZTsgfQotICAgIFBhc3NSZWY8Q1NTSW5p
dGlhbFZhbHVlPiBjcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIG1faW1wbGlj
aXRJbml0aWFsVmFsdWU7IH0KLSAgICBQYXNzUmVmPENTU0luaXRpYWxWYWx1ZT4gY3JlYXRlRXhw
bGljaXRJbml0aWFsVmFsdWUoKSB7IHJldHVybiBtX2V4cGxpY2l0SW5pdGlhbFZhbHVlOyB9Ci0g
ICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlSUQgaWRlbnRpZmllcik7Ci0gICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1Byb3BlcnR5SUQgaWRlbnRpZmllcik7Ci0gICAgUGFzc1JlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCByZ2JWYWx1ZSk7Ci0g
ICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKTsKLSAgICBQYXNzUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBjcmVhdGVWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzIHR5cGUpIHsgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUs
IHR5cGUpOyB9Ci0gICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoY29u
c3QgTGVuZ3RoJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBzdHlsZSk7IH0KLSAgICBQYXNzUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShjb25zdCBMZW5ndGhTaXplJiB2YWx1ZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZh
bHVlLCBzdHlsZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUGFzc1JlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoVCB2YWx1ZSkgeyByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSk7IH0KKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNy
ZWF0ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICBSZWY8Q1NTSW5oZXJpdGVk
VmFsdWU+IGNyZWF0ZUluaGVyaXRlZFZhbHVlKCkgeyByZXR1cm4gbV9pbmhlcml0ZWRWYWx1ZS5j
b3B5UmVmKCk7IH0KKyAgICBSZWY8Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVJbXBsaWNpdEluaXRp
YWxWYWx1ZSgpIHsgcmV0dXJuIG1faW1wbGljaXRJbml0aWFsVmFsdWUuY29weVJlZigpOyB9Cisg
ICAgUmVmPENTU0luaXRpYWxWYWx1ZT4gY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKSB7IHJl
dHVybiBtX2V4cGxpY2l0SW5pdGlhbFZhbHVlLmNvcHlSZWYoKTsgfQorICAgIFJlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSUQgaWRlbnRpZmllcik7
CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTUHJv
cGVydHlJRCBpZGVudGlmaWVyKTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUNv
bG9yVmFsdWUodW5zaWduZWQgcmdiVmFsdWUpOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKTsK
KyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFs
dWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdHlwZSkgeyByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7IH0KKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNyZWF0ZVZhbHVlKGNvbnN0IExlbmd0aCYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgc3R5bGUpOyB9
CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShjb25zdCBMZW5ndGhTaXpl
JiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHZhbHVlLCBzdHlsZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShUIHZhbHVlKSB7IHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlKTsgfQogCiAgICAgdm9pZCBkcmFpbigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCmluZGV4IDhkMzUxZTUuLjU3MWQ4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yOTMs
NyArMjkzLDcgQEAgU3R5bGVTaGVldENvbnRlbnRzKiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb246OmNvbnRleHRTdHlsZVNoZWV0KCkgY29uc3QKICAgICByZXR1cm4gY3NzU3R5bGVTaGVl
dCA/ICZjc3NTdHlsZVNoZWV0LT5jb250ZW50cygpIDogMDsKIH0KIAotUGFzc1JlZjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmNvcHlQcm9w
ZXJ0aWVzKCkgY29uc3QKK1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OmNvcHlQcm9wZXJ0aWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wcm9wZXJ0eVNldC0+bXV0YWJsZUNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAppbmRleCAxMDBiM2FjLi4zM2Ew
Mzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJp
bmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIG92ZXJyaWRlIGZpbmFs
OwogICAgIHZpcnR1YWwgYm9vbCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJp
ZGUgZmluYWw7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBS
ZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKIAogICAgIENTU1ZhbHVlKiBjbG9uZUFuZENhY2hlRm9yQ1NTT00oQ1NTVmFsdWUq
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5kZXggM2IwOWNj
Zi4uMTc3ZmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTUz
LDEzICs1MywxMyBAQCBzdGF0aWMgYm9vbCBpc0luaXRpYWxPckluaGVyaXQoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUubGVuZ3RoKCkgPT0gNyAmJiAodmFsdWUgPT0gImlu
aXRpYWwiIHx8IHZhbHVlID09ICJpbmhlcml0Iik7CiB9CiAKLVBhc3NSZWY8SW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShjb25zdCBDU1NQ
cm9wZXJ0eSogcHJvcGVydGllcywgdW5zaWduZWQgY291bnQsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKK1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IEltbXV0YWJsZVN0eWxlUHJv
cGVydGllczo6Y3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBj
b3VudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewogICAgIHZvaWQqIHNsb3QgPSBX
VEY6OmZhc3RNYWxsb2Moc2l6ZUZvckltbXV0YWJsZVN0eWxlUHJvcGVydGllc1dpdGhQcm9wZXJ0
eUNvdW50KGNvdW50KSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHNsb3Qp
IEltbXV0YWJsZVN0eWxlUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBjb3VudCwgY3NzUGFyc2VyTW9k
ZSkpOwogfQogCi1QYXNzUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gU3R5bGVQcm9wZXJ0
aWVzOjppbW11dGFibGVDb3B5SWZOZWVkZWQoKSBjb25zdAorUmVmPEltbXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gU3R5bGVQcm9wZXJ0aWVzOjppbW11dGFibGVDb3B5SWZOZWVkZWQoKSBjb25zdAog
ewogICAgIGlmIChpczxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+KCp0aGlzKSkKICAgICAgICAg
cmV0dXJuIGRvd25jYXN0PEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4oY29uc3RfY2FzdDxTdHls
ZVByb3BlcnRpZXMmPigqdGhpcykpOwpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgdm9pZCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjpjbGVhcigpCiAKIGNvbnN0IHVuc2lnbmVkIG51bUJsb2NrUHJvcGVy
dGllcyA9IFdURl9BUlJBWV9MRU5HVEgoYmxvY2tQcm9wZXJ0aWVzKTsKIAotUGFzc1JlZjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBTdHlsZVByb3BlcnRpZXM6OmNvcHlCbG9ja1Byb3BlcnRpZXMo
KSBjb25zdAorUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6Y29w
eUJsb2NrUHJvcGVydGllcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvcHlQcm9wZXJ0aWVzSW5T
ZXQoYmxvY2tQcm9wZXJ0aWVzLCBudW1CbG9ja1Byb3BlcnRpZXMpOwogfQpAQCAtMTE4OCwxMiAr
MTE4OCwxMiBAQCBib29sIFN0eWxlUHJvcGVydGllczo6cHJvcGVydHlNYXRjaGVzKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUqCiAgICAgcmV0dXJuIHByb3BlcnR5QXQo
Zm91bmRQcm9wZXJ0eUluZGV4KS52YWx1ZSgpLT5lcXVhbHMoKnByb3BlcnR5VmFsdWUpOwogfQog
Ci1QYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6bXV0YWJs
ZUNvcHkoKSBjb25zdAorUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGll
czo6bXV0YWJsZUNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE11dGFi
bGVTdHlsZVByb3BlcnRpZXMoKnRoaXMpKTsKIH0KIAotUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBTdHlsZVByb3BlcnRpZXM6OmNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJv
cGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CitSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gU3R5bGVQcm9wZXJ0aWVzOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1By
b3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewogICAgIFZlY3RvcjxDU1NQ
cm9wZXJ0eSwgMjU2PiBsaXN0OwogICAgIGxpc3QucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5n
dGgpOwpAQCAtMTI1MCwxMiArMTI1MCwxMiBAQCB2b2lkIFN0eWxlUHJvcGVydGllczo6c2hvd1N0
eWxlKCkKIH0KICNlbmRpZgogCi1QYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IE11dGFi
bGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCitS
ZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRl
KENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKGNzc1BhcnNlck1vZGUpKTsKIH0KIAotUGFzc1JlZjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoY29u
c3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2lnbmVkIGNvdW50KQorUmVmPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShjb25zdCBDU1NQ
cm9wZXJ0eSogcHJvcGVydGllcywgdW5zaWduZWQgY291bnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTXV0YWJsZVN0eWxlUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBjb3VudCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IGQxZmY2ZTcuLjhkMzFmMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTkyLDE2ICs5MiwxNiBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nIGdldFByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5SUQpIGNvbnN0
OwogICAgIGJvb2wgaXNQcm9wZXJ0eUltcGxpY2l0KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCi0g
ICAgUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5QmxvY2tQcm9wZXJ0aWVzKCkg
Y29uc3Q7CisgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlCbG9ja1Byb3BlcnRp
ZXMoKSBjb25zdDsKIAogICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlck1vZGU+KG1fY3NzUGFyc2VyTW9kZSk7IH0KIAog
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIFN0eWxl
U2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxlQ29weSgpIGNvbnN0
OwotICAgIFBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBpbW11dGFibGVDb3B5SWZO
ZWVkZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gbXV0YWJsZUNvcHkoKSBjb25zdDsKKyAgICBSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBpbW11dGFibGVDb3B5SWZOZWVkZWQoKSBjb25zdDsKIAotICAgIFBhc3NSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlE
KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CisgICAgUmVmPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNp
Z25lZCBsZW5ndGgpIGNvbnN0OwogICAgIAogICAgIFN0cmluZyBhc1RleHQoKSBjb25zdDsKIApA
QCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiBjbGFzcyBJbW11dGFibGVTdHlsZVByb3BlcnRp
ZXMgOiBwdWJsaWMgU3R5bGVQcm9wZXJ0aWVzIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB+SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKCk7Ci0gICAgc3RhdGljIFBhc3NSZWY8SW1tdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMs
IHVuc2lnbmVkIGNvdW50LCBDU1NQYXJzZXJNb2RlKTsKKyAgICBzdGF0aWMgUmVmPEltbXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gY3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1
bnNpZ25lZCBjb3VudCwgQ1NTUGFyc2VyTW9kZSk7CiAKICAgICB1bnNpZ25lZCBwcm9wZXJ0eUNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVNpemU7IH0KICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiAhcHJvcGVydHlDb3VudCgpOyB9CkBAIC0xODIsOCArMTgyLDggQEAgaW5s
aW5lIGNvbnN0IFN0eWxlUHJvcGVydHlNZXRhZGF0YSogSW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
OjptZXRhZGF0YUFycmF5KCkgY28KIAogY2xhc3MgTXV0YWJsZVN0eWxlUHJvcGVydGllcyA6IHB1
YmxpYyBTdHlsZVByb3BlcnRpZXMgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZShDU1NQYXJzZXJNb2RlID0gQ1NTUXVpcmtzTW9kZSk7
Ci0gICAgc3RhdGljIFBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY3JlYXRlKGNvbnN0
IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCk7CisgICAgc3RhdGljIFJl
ZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGUoQ1NTUGFyc2VyTW9kZSA9IENTU1F1aXJr
c01vZGUpOworICAgIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY3JlYXRlKGNv
bnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB+TXV0YWJsZVN0eWxlUHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKaW5kZXggY2I0MDkyYy4uMTA3Mzk3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIGlubGluZSB2b2lkIFN0eWxlUmVz
b2x2ZXI6OlN0YXRlOjppbml0Rm9yU3R5bGVSZXNvbHZlKERvY3VtZW50JiBkb2N1bWVudCwgRWxl
bWVuCiAgICAgdXBkYXRlQ29udmVyc2lvbkRhdGEoKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQoraW5s
aW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKIHsKICAgICBtX3N0eWxlID0gV1RGOjptb3ZlKHN0eWxlKTsKICAgICB1cGRhdGVD
b252ZXJzaW9uRGF0YSgpOwpAQCAtNzM5LDcgKzczOSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c0F0U2hhZG93Qm91bmRhcnkoY29uc3QgRWxlbWVudCogZWxlbWVudCkKICAgICByZXR1cm4gcGFy
ZW50Tm9kZSAmJiBwYXJlbnROb2RlLT5pc1NoYWRvd1Jvb3QoKTsKIH0KIAotUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQs
IFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LAorUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29s
dmVyOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgUmVuZGVyU3R5bGUqIGRlZmF1
bHRQYXJlbnQsCiAgICAgU3R5bGVTaGFyaW5nQmVoYXZpb3Igc2hhcmluZ0JlaGF2aW9yLCBSdWxl
TWF0Y2hpbmdCZWhhdmlvciBtYXRjaGluZ0JlaGF2aW9yLCBjb25zdCBSZW5kZXJSZWdpb24qIHJl
Z2lvbkZvclN0eWxpbmcpCiB7CiAgICAgLy8gT25jZSBhbiBlbGVtZW50IGhhcyBhIHJlbmRlcmVy
LCB3ZSBkb24ndCB0cnkgdG8gZGVzdHJveSBpdCwgc2luY2Ugb3RoZXJ3aXNlIHRoZSByZW5kZXJl
cgpAQCAtODExLDcgKzgxMSw3IEBAIFBhc3NSZWY8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6
OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTdHlsCiAgICAgcmV0dXJu
IHN0YXRlLnRha2VTdHlsZSgpOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29s
dmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIGNv
bnN0IFN0eWxlS2V5ZnJhbWUqIGtleWZyYW1lLCBLZXlmcmFtZVZhbHVlJiBrZXlmcmFtZVZhbHVl
KQorUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0
IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFN0eWxlS2V5ZnJhbWUqIGtleWZyYW1l
LCBLZXlmcmFtZVZhbHVlJiBrZXlmcmFtZVZhbHVlKQogewogICAgIE1hdGNoUmVzdWx0IHJlc3Vs
dDsKICAgICByZXN1bHQuYWRkTWF0Y2hlZFByb3BlcnRpZXMoa2V5ZnJhbWUtPnByb3BlcnRpZXMo
KSk7CkBAIC05ODUsNyArOTg1LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNv
bHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIGMKICAgICByZXR1
cm4gc3RhdGUudGFrZVN0eWxlKCk7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFN0eWxlUmVz
b2x2ZXI6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KQorUmVmPFJlbmRlclN0eWxlPiBTdHls
ZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKIHsKICAgICBtX3N0YXRlLmlu
aXRGb3JTdHlsZVJlc29sdmUobV9kb2N1bWVudCwgbV9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQo
KSwgbV9kb2N1bWVudC5yZW5kZXJTdHlsZSgpKTsKIApAQCAtMTAyNSw3ICsxMDI1LDcgQEAgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKGludCBwYWdlSW5k
ZXgpCiAgICAgcmV0dXJuIG1fc3RhdGUudGFrZVN0eWxlKCk7CiB9CiAKLVBhc3NSZWY8UmVuZGVy
U3R5bGU+IFN0eWxlUmVzb2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVsZW1lbnQoKQorUmVmPFJlbmRl
clN0eWxlPiBTdHlsZVJlc29sdmVyOjpkZWZhdWx0U3R5bGVGb3JFbGVtZW50KCkKIHsKICAgICBt
X3N0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGUoKSk7CiAgICAgLy8gTWFrZSBzdXJl
IG91ciBmb250cyBhcmUgaW5pdGlhbGl6ZWQgaWYgd2UgZG9uJ3QgaW5oZXJpdCB0aGVtIGZyb20g
b3VyIHBhcmVudCBzdHlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IGU1ODY3
ZjAuLmQ2MDgzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMTQ3LDE1ICsx
NDcsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcHVzaFBhcmVudEVsZW1lbnQoRWxlbWVudCopOwog
ICAgIHZvaWQgcG9wUGFyZW50RWxlbWVudChFbGVtZW50Kik7CiAKLSAgICBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZUZvckVsZW1lbnQoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSwgU3R5bGVTaGFyaW5nQmVoYXZpb3IgPSBBbGxvd1N0eWxlU2hhcmluZywKKyAgICBSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlLCBTdHlsZVNoYXJpbmdCZWhhdmlvciA9IEFsbG93U3R5bGVTaGFyaW5nLAogICAgICAgICBS
dWxlTWF0Y2hpbmdCZWhhdmlvciA9IE1hdGNoQWxsUnVsZXMsIGNvbnN0IFJlbmRlclJlZ2lvbiog
cmVnaW9uRm9yU3R5bGluZyA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBrZXlmcmFtZVN0eWxlc0Zv
ckFuaW1hdGlvbihFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBLZXlmcmFtZUxpc3QmKTsK
IAogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxlbWVudChFbGVt
ZW50KiwgY29uc3QgUHNldWRvU3R5bGVSZXF1ZXN0JiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
KTsKIAotICAgIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4
KTsKLSAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBkZWZhdWx0U3R5bGVGb3JFbGVtZW50KCk7Cisg
ICAgUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7CisgICAgUmVm
PFJlbmRlclN0eWxlPiBkZWZhdWx0U3R5bGVGb3JFbGVtZW50KCk7CiAKICAgICBSZW5kZXJTdHls
ZSogc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0eWxlKCk7IH0KICAgICBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnBhcmVudFN0eWxlKCk7
IH0KQEAgLTE4MSw3ICsxODEsNyBAQCBwcml2YXRlOgogICAgIFN0eWxlZEVsZW1lbnQqIGZpbmRT
aWJsaW5nRm9yU3R5bGVTaGFyaW5nKE5vZGUqLCB1bnNpZ25lZCYgY291bnQpIGNvbnN0OwogICAg
IGJvb2wgY2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqKSBjb25zdDsKIAot
ICAgIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgUmVuZGVyU3R5
bGUqLCBjb25zdCBTdHlsZUtleWZyYW1lKiwgS2V5ZnJhbWVWYWx1ZSYpOworICAgIFJlZjxSZW5k
ZXJTdHlsZT4gc3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFN0eWxl
S2V5ZnJhbWUqLCBLZXlmcmFtZVZhbHVlJik7CiAKIHB1YmxpYzoKICAgICAvLyBUaGVzZSBtZXRo
b2RzIHdpbGwgZ2l2ZSBiYWNrIHRoZSBzZXQgb2YgcnVsZXMgdGhhdCBtYXRjaGVkIGZvciBhIGdp
dmVuIGVsZW1lbnQgKG9yIGEgcHNldWRvLWVsZW1lbnQpLgpAQCAtMzYyLDExICszNjIsMTEgQEAg
cHVibGljOgogICAgICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Vs
ZW1lbnQtPmRvY3VtZW50KCk7IH0KICAgICAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZWxlbWVudDsgfQogICAgICAgICBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZWRFbGVtZW50OyB9Ci0gICAgICAgIHZvaWQgc2V0U3R5
bGUoUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgICAgICB2b2lkIHNldFN0eWxlKFJlZjxSZW5k
ZXJTdHlsZT4mJik7CiAgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3R5bGUuZ2V0KCk7IH0KLSAgICAgICAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gdGFrZVN0eWxl
KCkgeyByZXR1cm4gbV9zdHlsZS5yZWxlYXNlTm9uTnVsbCgpOyB9CisgICAgICAgIFJlZjxSZW5k
ZXJTdHlsZT4gdGFrZVN0eWxlKCkgeyByZXR1cm4gbV9zdHlsZS5yZWxlYXNlTm9uTnVsbCgpOyB9
CiAKLSAgICAgICAgdm9pZCBzZXRQYXJlbnRTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBwYXJl
bnRTdHlsZSkgeyBtX3BhcmVudFN0eWxlID0gV1RGOjptb3ZlKHBhcmVudFN0eWxlKTsgfQorICAg
ICAgICB2b2lkIHNldFBhcmVudFN0eWxlKFJlZjxSZW5kZXJTdHlsZT4mJiBwYXJlbnRTdHlsZSkg
eyBtX3BhcmVudFN0eWxlID0gV1RGOjptb3ZlKHBhcmVudFN0eWxlKTsgfQogICAgICAgICBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFN0eWxlLmdldCgp
OyB9CiAgICAgICAgIFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxlKCkgY29uc3QgeyByZXR1
cm4gbV9yb290RWxlbWVudFN0eWxlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKaW5kZXgg
MjE3ZDYwMy4uNTk5NDcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTEwMSw3ICsx
MDEsNyBAQCB2b2lkIFN0eWxlUnVsZUJhc2U6OmRlc3Ryb3koKQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCi1QYXNzUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHko
KSBjb25zdAorUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKSBjb25zdAog
ewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAgY2FzZSBTdHlsZToKQEAgLTEzNyw3ICsxMzcs
NyBAQCBQYXNzUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHkoKSBjb25zdAog
ICAgIH0KICAgICBDUkFTSCgpOwogICAgIC8vIEhBQ0s6IEVGTCB3b24ndCBidWlsZCB3aXRob3V0
IHRoaXMgKG9sZCBHQ0Mgd2l0aCBjcmFwcHkgLVdlcnJvcj1yZXR1cm4tdHlwZSkKLSAgICByZXR1
cm4gUGFzc1JlZjxTdHlsZVJ1bGVCYXNlPigqc3RhdGljX2Nhc3Q8U3R5bGVSdWxlQmFzZSo+KG51
bGxwdHIpKTsKKyAgICByZXR1cm4gUmVmPFN0eWxlUnVsZUJhc2U+KCpzdGF0aWNfY2FzdDxTdHls
ZVJ1bGVCYXNlKj4obnVsbHB0cikpOwogfQogCiBQYXNzUmVmUHRyPENTU1J1bGU+IFN0eWxlUnVs
ZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgQ1NT
UnVsZSogcGFyZW50UnVsZSkgY29uc3QKQEAgLTE5NSw3ICsxOTUsNyBAQCB1bnNpZ25lZCBTdHls
ZVJ1bGU6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCiAgICAgcmV0dXJuIHNpemVvZihTdHlsZVJ1bGUp
ICsgc2l6ZW9mKENTU1NlbGVjdG9yKSArIFN0eWxlUHJvcGVydGllczo6YXZlcmFnZVNpemVJbkJ5
dGVzKCk7CiB9CiAKLVN0eWxlUnVsZTo6U3R5bGVSdWxlKGludCBzb3VyY2VMaW5lLCBQYXNzUmVm
PFN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykKK1N0eWxlUnVsZTo6U3R5bGVSdWxlKGludCBz
b3VyY2VMaW5lLCBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKQogICAgIDogU3R5bGVS
dWxlQmFzZShTdHlsZSwgc291cmNlTGluZSkKICAgICAsIG1fcHJvcGVydGllcyhXVEY6Om1vdmUo
cHJvcGVydGllcykpCiB7CkBAIC0yMTksNyArMjE5LDcgQEAgTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYgU3R5bGVSdWxlOjptdXRhYmxlUHJvcGVydGllcygpCiAgICAgcmV0dXJuIGRvd25jYXN0PE11
dGFibGVTdHlsZVByb3BlcnRpZXM+KG1fcHJvcGVydGllcy5nZXQoKSk7CiB9CiAKLVBhc3NSZWY8
U3R5bGVSdWxlPiBTdHlsZVJ1bGU6OmNyZWF0ZShpbnQgc291cmNlTGluZSwgY29uc3QgVmVjdG9y
PGNvbnN0IENTU1NlbGVjdG9yKj4mIHNlbGVjdG9ycywgUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+
IHByb3BlcnRpZXMpCitSZWY8U3R5bGVSdWxlPiBTdHlsZVJ1bGU6OmNyZWF0ZShpbnQgc291cmNl
TGluZSwgY29uc3QgVmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4mIHNlbGVjdG9ycywgUmVmPFN0
eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTighc2VsZWN0b3JzLmlzRW1wdHkoKSk7CiAgICAgQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yTGlzdEFycmF5ID0gcmVpbnRlcnByZXRfY2FzdDxDU1NTZWxlY3Rvcio+KGZhc3RNYWxsb2Mo
c2l6ZW9mKENTU1NlbGVjdG9yKSAqIHNlbGVjdG9ycy5zaXplKCkpKTsKQEAgLTI1Nyw3ICsyNTcs
NyBAQCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0eWxlUnVsZTo6c3BsaXRJbnRvTXVsdGlw
bGVSdWxlc1dpdGhNYXhpbXVtU2VsZWN0b3JDbwogICAgIHJldHVybiBydWxlczsKIH0KIAotU3R5
bGVSdWxlUGFnZTo6U3R5bGVSdWxlUGFnZShQYXNzUmVmPFN0eWxlUHJvcGVydGllcz4gcHJvcGVy
dGllcykKK1N0eWxlUnVsZVBhZ2U6OlN0eWxlUnVsZVBhZ2UoUmVmPFN0eWxlUHJvcGVydGllcz4m
JiBwcm9wZXJ0aWVzKQogICAgIDogU3R5bGVSdWxlQmFzZShQYWdlKQogICAgICwgbV9wcm9wZXJ0
aWVzKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkKIHsKQEAgLTI4MSw3ICsyODEsNyBAQCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJiBTdHlsZVJ1bGVQYWdlOjptdXRhYmxlUHJvcGVydGllcygpCiAgICAg
cmV0dXJuIGRvd25jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXM+KG1fcHJvcGVydGllcy5nZXQo
KSk7CiB9CiAKLVN0eWxlUnVsZUZvbnRGYWNlOjpTdHlsZVJ1bGVGb250RmFjZShQYXNzUmVmPFN0
eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykKK1N0eWxlUnVsZUZvbnRGYWNlOjpTdHlsZVJ1bGVG
b250RmFjZShSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCiAgICAgOiBTdHlsZVJ1
bGVCYXNlKEZvbnRGYWNlLCAwKQogICAgICwgbV9wcm9wZXJ0aWVzKFdURjo6bW92ZShwcm9wZXJ0
aWVzKSkKIHsKQEAgLTMxOCw3ICszMTgsNyBAQCBTdHlsZVJ1bGVHcm91cDo6U3R5bGVSdWxlR3Jv
dXAoY29uc3QgU3R5bGVSdWxlR3JvdXAmIG8pCiAgICAgICAgIG1fY2hpbGRSdWxlcy51bmNoZWNr
ZWRBcHBlbmQoby5tX2NoaWxkUnVsZXNbaV0tPmNvcHkoKSk7CiB9CiAKLXZvaWQgU3R5bGVSdWxl
R3JvdXA6OndyYXBwZXJJbnNlcnRSdWxlKHVuc2lnbmVkIGluZGV4LCBQYXNzUmVmPFN0eWxlUnVs
ZUJhc2U+IHJ1bGUpCit2b2lkIFN0eWxlUnVsZUdyb3VwOjp3cmFwcGVySW5zZXJ0UnVsZSh1bnNp
Z25lZCBpbmRleCwgUmVmPFN0eWxlUnVsZUJhc2U+IHJ1bGUpCiB7CiAgICAgbV9jaGlsZFJ1bGVz
Lmluc2VydChpbmRleCwgV1RGOjptb3ZlKHJ1bGUpKTsKIH0KQEAgLTM3MSw3ICszNzEsNyBAQCBT
dHlsZVJ1bGVSZWdpb246OlN0eWxlUnVsZVJlZ2lvbihjb25zdCBTdHlsZVJ1bGVSZWdpb24mIG8p
CiAKIAogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCi1TdHlsZVJ1bGVWaWV3cG9y
dDo6U3R5bGVSdWxlVmlld3BvcnQoUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMp
CitTdHlsZVJ1bGVWaWV3cG9ydDo6U3R5bGVSdWxlVmlld3BvcnQoUmVmPFN0eWxlUHJvcGVydGll
cz4mJiBwcm9wZXJ0aWVzKQogICAgIDogU3R5bGVSdWxlQmFzZShWaWV3cG9ydCwgMCkKICAgICAs
IG1fcHJvcGVydGllcyhXVEY6Om1vdmUocHJvcGVydGllcykpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
LmgKaW5kZXggMGNhZTdiYS4uZWViZTNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtNzEs
NyArNzEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBib29sIGlzSW1wb3J0UnVsZSgpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBJbXBvcnQ7IH0KIAotICAgIFBhc3NSZWY8U3R5bGVSdWxlQmFz
ZT4gY29weSgpIGNvbnN0OworICAgIFJlZjxTdHlsZVJ1bGVCYXNlPiBjb3B5KCkgY29uc3Q7CiAK
ICAgICBpbnQgc291cmNlTGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlTGluZTsgfQogCkBA
IC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKIGNsYXNzIFN0eWxlUnVsZSA6IHB1YmxpYyBTdHls
ZVJ1bGVCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZjxTdHlsZVJ1bGU+IGNyZWF0ZShpbnQgc291cmNlTGluZSwgUGFzc1JlZjxT
dHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMpCisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGU+IGNy
ZWF0ZShpbnQgc291cmNlTGluZSwgUmVmPFN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZShzb3VyY2VMaW5lLCBX
VEY6Om1vdmUocHJvcGVydGllcykpKTsKICAgICB9CkBAIC0xMTgsMTcgKzExOCwxNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBz
ZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QgPSBXVEY6Om1vdmUoc2VsZWN0b3JzKTsgfQogICAg
IHZvaWQgcGFyc2VyQWRvcHRTZWxlY3RvckFycmF5KENTU1NlbGVjdG9yKiBzZWxlY3RvcnMpIHsg
bV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvckFycmF5KHNlbGVjdG9ycyk7IH0KIAotICAgIFBh
c3NSZWY8U3R5bGVSdWxlPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVJ1bGUoKnRoaXMpKTsgfQorICAgIFJlZjxTdHlsZVJ1bGU+IGNvcHkoKSBjb25zdCB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZSgqdGhpcykpOyB9CiAKICAgICBWZWN0b3I8UmVmUHRy
PFN0eWxlUnVsZT4+IHNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNlbGVjdG9yQ29t
cG9uZW50Q291bnQodW5zaWduZWQpIGNvbnN0OwogCiAgICAgc3RhdGljIHVuc2lnbmVkIGF2ZXJh
Z2VTaXplSW5CeXRlcygpOwogCiBwcml2YXRlOgotICAgIFN0eWxlUnVsZShpbnQgc291cmNlTGlu
ZSwgUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+KTsKKyAgICBTdHlsZVJ1bGUoaW50IHNvdXJjZUxp
bmUsIFJlZjxTdHlsZVByb3BlcnRpZXM+KTsKICAgICBTdHlsZVJ1bGUoY29uc3QgU3R5bGVSdWxl
Jik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1bGU+IGNyZWF0ZShpbnQgc291cmNlTGlu
ZSwgY29uc3QgVmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4mLCBQYXNzUmVmPFN0eWxlUHJvcGVy
dGllcz4pOworICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlPiBjcmVhdGUoaW50IHNvdXJjZUxpbmUs
IGNvbnN0IFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+JiwgUmVmPFN0eWxlUHJvcGVydGllcz4p
OwogCiAgICAgUmVmPFN0eWxlUHJvcGVydGllcz4gbV9wcm9wZXJ0aWVzOwogICAgIENTU1NlbGVj
dG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKQEAgLTE0MiwxOCArMTQyLDE4IEBAIGlubGluZSBjb25z
dCBTdHlsZVJ1bGUqIHRvU3R5bGVSdWxlKGNvbnN0IFN0eWxlUnVsZUJhc2UqIHJ1bGUpCiAKIGNs
YXNzIFN0eWxlUnVsZUZvbnRGYWNlIDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlUnVsZUZvbnRGYWNlPiBjcmVhdGUoUGFzc1JlZjxTdHls
ZVByb3BlcnRpZXM+IHByb3BlcnRpZXMpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxl
Rm9udEZhY2UoV1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFN0eWxl
UnVsZUZvbnRGYWNlPiBjcmVhdGUoUmVmPFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUZvbnRGYWNlKFdURjo6bW92ZShwcm9wZXJ0
aWVzKSkpOyB9CiAgICAgCiAgICAgflN0eWxlUnVsZUZvbnRGYWNlKCk7CiAKICAgICBjb25zdCBT
dHlsZVByb3BlcnRpZXMmIHByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnRpZXM7
IH0KICAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBtdXRhYmxlUHJvcGVydGllcygpOwogCi0g
ICAgUGFzc1JlZjxTdHlsZVJ1bGVGb250RmFjZT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVSdWxlRm9udEZhY2UoKnRoaXMpKTsgfQorICAgIFJlZjxTdHlsZVJ1bGVG
b250RmFjZT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlRm9u
dEZhY2UoKnRoaXMpKTsgfQogCiAKIHByaXZhdGU6Ci0gICAgU3R5bGVSdWxlRm9udEZhY2UoUGFz
c1JlZjxTdHlsZVByb3BlcnRpZXM+KTsKKyAgICBleHBsaWNpdCBTdHlsZVJ1bGVGb250RmFjZShS
ZWY8U3R5bGVQcm9wZXJ0aWVzPiYmKTsKICAgICBTdHlsZVJ1bGVGb250RmFjZShjb25zdCBTdHls
ZVJ1bGVGb250RmFjZSYpOwogCiAgICAgUmVmPFN0eWxlUHJvcGVydGllcz4gbV9wcm9wZXJ0aWVz
OwpAQCAtMTYxLDcgKzE2MSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0eWxlUnVsZVBhZ2UgOiBw
dWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVS
dWxlUGFnZT4gY3JlYXRlKFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVBhZ2UoV1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7
IH0KKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZVBhZ2U+IGNyZWF0ZShSZWY8U3R5bGVQcm9wZXJ0
aWVzPiYmIHByb3BlcnRpZXMpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlUGFnZShX
VEY6Om1vdmUocHJvcGVydGllcykpKTsgfQogCiAgICAgflN0eWxlUnVsZVBhZ2UoKTsKIApAQCAt
MTcyLDEwICsxNzIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcGFyc2VyQWRvcHRTZWxlY3RvclZl
Y3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4mIHNlbGVjdG9y
cykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9ycyk7IH0KICAg
ICB2b2lkIHdyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdChDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9y
cykgeyBtX3NlbGVjdG9yTGlzdCA9IFdURjo6bW92ZShzZWxlY3RvcnMpOyB9CiAKLSAgICBQYXNz
UmVmPFN0eWxlUnVsZVBhZ2U+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlUnVsZVBhZ2UoKnRoaXMpKTsgfQorICAgIFJlZjxTdHlsZVJ1bGVQYWdlPiBjb3B5KCkgY29u
c3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVQYWdlKCp0aGlzKSk7IH0KIAogcHJp
dmF0ZToKLSAgICBTdHlsZVJ1bGVQYWdlKFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVzPik7CisgICAg
ZXhwbGljaXQgU3R5bGVSdWxlUGFnZShSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmKTsKICAgICBTdHls
ZVJ1bGVQYWdlKGNvbnN0IFN0eWxlUnVsZVBhZ2UmKTsKICAgICAKICAgICBSZWY8U3R5bGVQcm9w
ZXJ0aWVzPiBtX3Byb3BlcnRpZXM7CkBAIC0xODYsNyArMTg2LDcgQEAgY2xhc3MgU3R5bGVSdWxl
R3JvdXAgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGNoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2No
aWxkUnVsZXM7IH0KICAgICAKLSAgICB2b2lkIHdyYXBwZXJJbnNlcnRSdWxlKHVuc2lnbmVkLCBQ
YXNzUmVmPFN0eWxlUnVsZUJhc2U+KTsKKyAgICB2b2lkIHdyYXBwZXJJbnNlcnRSdWxlKHVuc2ln
bmVkLCBSZWY8U3R5bGVSdWxlQmFzZT4pOwogICAgIHZvaWQgd3JhcHBlclJlbW92ZVJ1bGUodW5z
aWduZWQpOwogICAgIAogcHJvdGVjdGVkOgpAQCAtMTk5LDE0ICsxOTksMTQgQEAgcHJpdmF0ZToK
IAogY2xhc3MgU3R5bGVSdWxlTWVkaWEgOiBwdWJsaWMgU3R5bGVSdWxlR3JvdXAgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlUnVsZU1lZGlhPiBjcmVhdGUoUGFzc1JlZlB0cjxN
ZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0
UnVsZXMpCisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVNZWRpYT4gY3JlYXRlKFBhc3NSZWZQdHI8
TWVkaWFRdWVyeVNldD4gbWVkaWEsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9w
dFJ1bGVzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlTWVk
aWEobWVkaWEsIGFkb3B0UnVsZXMpKTsKICAgICB9CiAKICAgICBNZWRpYVF1ZXJ5U2V0KiBtZWRp
YVF1ZXJpZXMoKSBjb25zdCB7IHJldHVybiBtX21lZGlhUXVlcmllcy5nZXQoKTsgfQogCi0gICAg
UGFzc1JlZjxTdHlsZVJ1bGVNZWRpYT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVSdWxlTWVkaWEoKnRoaXMpKTsgfQorICAgIFJlZjxTdHlsZVJ1bGVNZWRpYT4gY29w
eSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlTWVkaWEoKnRoaXMpKTsg
fQogCiBwcml2YXRlOgogICAgIFN0eWxlUnVsZU1lZGlhKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNl
dD4sIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKTsKQEAgLTIxNywx
NCArMjE3LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0eWxlUnVsZVN1cHBvcnRzIDogcHVibGlj
IFN0eWxlUnVsZUdyb3VwIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1bGVT
dXBwb3J0cz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY29uZGl0aW9uVGV4dCwgYm9vbCBjb25kaXRp
b25Jc1N1cHBvcnRlZCwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMp
CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVTdXBwb3J0cz4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
Y29uZGl0aW9uVGV4dCwgYm9vbCBjb25kaXRpb25Jc1N1cHBvcnRlZCwgVmVjdG9yPFJlZlB0cjxT
dHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZVJ1bGVTdXBwb3J0cyhjb25kaXRpb25UZXh0LCBjb25kaXRpb25Jc1N1cHBv
cnRlZCwgYWRvcHRSdWxlcykpOwogICAgIH0KIAogICAgIFN0cmluZyBjb25kaXRpb25UZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9jb25kaXRpb25UZXh0OyB9CiAgICAgYm9vbCBjb25kaXRpb25Jc1N1
cHBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZGl0aW9uSXNTdXBwb3J0ZWQ7IH0KLSAgICBQ
YXNzUmVmPFN0eWxlUnVsZVN1cHBvcnRzPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZVJ1bGVTdXBwb3J0cygqdGhpcykpOyB9CisgICAgUmVmPFN0eWxlUnVsZVN1cHBv
cnRzPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVTdXBwb3J0
cygqdGhpcykpOyB9CiAKIHByaXZhdGU6CiAgICAgU3R5bGVSdWxlU3VwcG9ydHMoY29uc3QgU3Ry
aW5nJiBjb25kaXRpb25UZXh0LCBib29sIGNvbmRpdGlvbklzU3VwcG9ydGVkLCBWZWN0b3I8UmVm
UHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcyk7CkBAIC0yMzYsMTQgKzIzNiwxNCBAQCBw
cml2YXRlOgogCiBjbGFzcyBTdHlsZVJ1bGVSZWdpb24gOiBwdWJsaWMgU3R5bGVSdWxlR3JvdXAg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlUnVsZVJlZ2lvbj4gY3JlYXRlKFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Piogc2VsZWN0b3JzLCBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKKyAgICBzdGF0aWMgUmVmPFN0
eWxlUnVsZVJlZ2lvbj4gY3JlYXRlKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+Piogc2VsZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRS
dWxlcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVJlZ2lv
bihzZWxlY3RvcnMsIGFkb3B0UnVsZXMpKTsKICAgICB9CiAKICAgICBjb25zdCBDU1NTZWxlY3Rv
ckxpc3QmIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JMaXN0OyB9CiAK
LSAgICBQYXNzUmVmPFN0eWxlUnVsZVJlZ2lvbj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVSdWxlUmVnaW9uKCp0aGlzKSk7IH0KKyAgICBSZWY8U3R5bGVSdWxlUmVn
aW9uPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVSZWdpb24o
KnRoaXMpKTsgfQogCiBwcml2YXRlOgogICAgIFN0eWxlUnVsZVJlZ2lvbihWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJh
c2U+PiYgYWRvcHRSdWxlcyk7CkBAIC0yNTUsMTcgKzI1NSwxNyBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiBjbGFzcyBTdHlsZVJ1bGVWaWV3cG9ydCA6IHB1
YmxpYyBTdHlsZVJ1bGVCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1
bGVWaWV3cG9ydD4gY3JlYXRlKFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVZpZXdwb3J0KFdURjo6bW92ZShwcm9wZXJ0
aWVzKSkpOyB9CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVWaWV3cG9ydD4gY3JlYXRlKFJlZjxT
dHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVJ1bGVWaWV3cG9ydChXVEY6Om1vdmUocHJvcGVydGllcykpKTsgfQogCiAgICAgflN0eWxlUnVs
ZVZpZXdwb3J0KCk7CiAKICAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMmIHByb3BlcnRpZXMoKSBj
b25zdCB7IHJldHVybiBtX3Byb3BlcnRpZXMuZ2V0KCk7IH0KICAgICBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzJiBtdXRhYmxlUHJvcGVydGllcygpOwogCi0gICAgUGFzc1JlZjxTdHlsZVJ1bGVWaWV3
cG9ydD4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlVmlld3Bv
cnQoKnRoaXMpKTsgfQorICAgIFJlZjxTdHlsZVJ1bGVWaWV3cG9ydD4gY29weSgpIGNvbnN0IHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlVmlld3BvcnQoKnRoaXMpKTsgfQogCiBwcml2
YXRlOgotICAgIFN0eWxlUnVsZVZpZXdwb3J0KFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVzPik7Cisg
ICAgZXhwbGljaXQgU3R5bGVSdWxlVmlld3BvcnQoUmVmPFN0eWxlUHJvcGVydGllcz4mJik7CiAg
ICAgU3R5bGVSdWxlVmlld3BvcnQoY29uc3QgU3R5bGVSdWxlVmlld3BvcnQmKTsKIAogICAgIFJl
ZjxTdHlsZVByb3BlcnRpZXM+IG1fcHJvcGVydGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVs
ZUltcG9ydC5jcHAKaW5kZXggYWUxNTE0MC4uZDE0MDI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZUltcG9ydC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzUmVmPFN0eWxlUnVsZUltcG9ydD4gU3R5bGVSdWxlSW1wb3J0OjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBocmVmLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhKQorUmVmPFN0
eWxlUnVsZUltcG9ydD4gU3R5bGVSdWxlSW1wb3J0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBocmVm
LCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlUnVsZUltcG9ydChocmVmLCBtZWRpYSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZUltcG9ydC5oCmluZGV4IDI4ZmFjZTcuLmJiYTkxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlSW1wb3J0LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgU3R5bGVTaGVldENvbnRl
bnRzOwogY2xhc3MgU3R5bGVSdWxlSW1wb3J0IDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0
eWxlUnVsZUltcG9ydD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaHJlZiwgUGFzc1JlZlB0cjxNZWRp
YVF1ZXJ5U2V0Pik7CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVJbXBvcnQ+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOwogCiAgICAgflN0eWxl
UnVsZUltcG9ydCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5o
CmluZGV4IDc2OThhMDMuLjYyYTkzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0Q29udGVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENv
bnRlbnRzLmgKQEAgLTQxLDE1ICs0MSwxNSBAQCBjbGFzcyBTdHlsZVJ1bGVJbXBvcnQ7CiAKIGNs
YXNzIFN0eWxlU2hlZXRDb250ZW50cyA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hlZXRDb250
ZW50cz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4g
Y3JlYXRlKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQgPSBDU1NQYXJzZXJDb250ZXh0
KENTU1N0cmljdE1vZGUpKQorICAgIHN0YXRpYyBSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBjcmVh
dGUoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCA9IENTU1BhcnNlckNvbnRleHQoQ1NT
U3RyaWN0TW9kZSkpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNo
ZWV0Q29udGVudHMoMCwgU3RyaW5nKCksIGNvbnRleHQpKTsKICAgICB9Ci0gICAgc3RhdGljIFBh
c3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVS
TCwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFN0eWxl
U2hlZXRDb250ZW50cz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZVNoZWV0Q29udGVudHMoMCwgb3JpZ2luYWxVUkwsIGNvbnRleHQpKTsKICAgICB9
Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBjcmVhdGUoU3R5bGVSdWxl
SW1wb3J0KiBvd25lclJ1bGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+
IGNyZWF0ZShTdHlsZVJ1bGVJbXBvcnQqIG93bmVyUnVsZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
bFVSTCwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2hlZXRDb250ZW50cyhvd25lclJ1bGUsIG9yaWdpbmFs
VVJMLCBjb250ZXh0KSk7CiAgICAgfQpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHdyYXBwZXJJbnNlcnRSdWxlKFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4sIHVuc2lnbmVk
IGluZGV4KTsKICAgICB2b2lkIHdyYXBwZXJEZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4KTsKIAot
ICAgIFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZVNoZWV0Q29udGVudHMoKnRoaXMpKTsgfQorICAgIFJlZjxTdHlsZVNo
ZWV0Q29udGVudHM+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2hl
ZXRDb250ZW50cygqdGhpcykpOyB9CiAKICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KENTU1N0eWxl
U2hlZXQqKTsKICAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoQ1NTU3R5bGVTaGVldCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaAppbmRleCBkYWYzYWZiLi45OGZm
M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaApAQCAtNTAs
NyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24KICAg
ICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWY8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IGNyZWF0ZShG
aWx0ZXJPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgc3RhdGljIFJlZjxXZWJLaXRDU1NGaWx0ZXJW
YWx1ZT4gY3JlYXRlKEZpbHRlck9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYktpdENTU0ZpbHRlclZhbHVlKHR5cGUpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Jlc291cmNlVmFsdWUuaAppbmRleCA0NTc3YzQ5
Li4yMDk4M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVzb3Vy
Y2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZhbHVl
LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJLaXRD
U1NSZXNvdXJjZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZjxXZWJLaXRDU1NSZXNvdXJjZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gcmVzb3VyY2VWYWx1ZSkKKyAgICBzdGF0aWMgUmVmPFdlYktpdENTU1Jlc291cmNlVmFsdWU+
IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiByZXNvdXJjZVZhbHVlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZShyZXNvdXJjZVZh
bHVlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuaAppbmRleCA5ZGVjOTU2Li5jMWM5MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uCiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVm
PFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBjcmVhdGUoVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSB0
eXBlKQorICAgIHN0YXRpYyBSZWY8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IGNyZWF0ZShUcmFu
c2Zvcm1PcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSh0eXBlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGlsZE5vZGVMaXN0LmgKaW5kZXggN2U5MjNlZS4uZDUyMWNmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hp
bGROb2RlTGlzdC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIENvbnRhaW5lck5vZGU7CiAKIGNs
YXNzIEVtcHR5Tm9kZUxpc3QgZmluYWwgOiBwdWJsaWMgTm9kZUxpc3QgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmPEVtcHR5Tm9kZUxpc3Q+IGNyZWF0ZShOb2RlJiBvd25lcikKKyAgICBz
dGF0aWMgUmVmPEVtcHR5Tm9kZUxpc3Q+IGNyZWF0ZShOb2RlJiBvd25lcikKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5Tm9kZUxpc3Qob3duZXIpKTsKICAgICB9CkBA
IC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIENoaWxkTm9kZUxpc3QgZmluYWwgOiBw
dWJsaWMgTm9kZUxpc3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENoaWxkTm9kZUxp
c3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiBwYXJlbnQpCisgICAgc3RhdGljIFJlZjxDaGlsZE5v
ZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcGFyZW50KQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ2hpbGROb2RlTGlzdChwYXJlbnQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2xhc3NOb2RlTGlzdC5jcHAKaW5kZXggZDI0MzM2YS4uMGQwMTgzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DbGFzc05vZGVMaXN0LmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWY8Q2xhc3NOb2RlTGlzdD4gQ2xhc3NOb2RlTGlzdDo6Y3JlYXRl
KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZXMp
CitSZWY8Q2xhc3NOb2RlTGlzdD4gQ2xhc3NOb2RlTGlzdDo6Y3JlYXRlKENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZXMpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ2xhc3NOb2RlTGlzdChyb290Tm9kZSwgY2xhc3NOYW1lcykpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmgKaW5kZXggOTMzMjYyMy4uYmU4ODhiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2xhc3NOb2RlTGlzdC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ2xhc3NOb2RlTGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRMaXZlTm9k
ZUxpc3Q8Q2xhc3NOb2RlTGlzdD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENsYXNz
Tm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiwgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFz
c05hbWVzKTsKKyAgICBzdGF0aWMgUmVmPENsYXNzTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJO
b2RlJiwgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWVzKTsKIAogICAgIHZpcnR1YWwgfkNs
YXNzTm9kZUxpc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMjllMGNkNS4uNjMz
NzM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xOTAzLDcgKzE5MDMsNyBAQCB2b2lk
IERvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoRG9jdW1lbnQ6
OlJ1blBvc3RMYXlvdXRUYXNrcwogICAgIG1faWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzID0gb2xk
SWdub3JlOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBEb2N1bWVudDo6c3R5bGVGb3JFbGVt
ZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbWVudCogZWxlbWVudCkKK1JlZjxSZW5k
ZXJTdHlsZT4gRG9jdW1lbnQ6OnN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hl
ZXRzKEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhlbGVtZW50LCAmZWxlbWVu
dC0+ZG9jdW1lbnQoKSA9PSB0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5NGE0Mzg2
Li41ZWIwNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNjA0LDcgKzYwNCw3IEBAIHB1Ymxp
YzoKICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKFJ1blBvc3RMYXlvdXRUYXNrcyA9IFJ1blBvc3RMYXlvdXRUYXNrczo6
QXN5bmNocm9ub3VzbHkpOwogCi0gICAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVt
ZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbWVudCopOworICAgIFJlZjxSZW5kZXJT
dHlsZT4gc3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbWVudCop
OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHBhZ2UgYm94IChtYXJnaW4gYm94ZXMgYW5kIHBh
Z2UgYm9yZGVycykgaXMgdmlzaWJsZS4KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUGFnZUJv
eFZpc2libGUoaW50IHBhZ2VJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFNoYXJlZE9iamVjdFBvb2wuY3BwCmluZGV4IDJmMGVlMDMuLmI1ZjcyMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuY3BwCkBAIC00Myw3ICs0
Myw3IEBAIGlubGluZSBib29sIGhhc1NhbWVBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1
dGU+JiBhdHRyaWJ1dGVzLCBTaGFyZWFibGVFbGVtCiAgICAgcmV0dXJuICFtZW1jbXAoYXR0cmli
dXRlcy5kYXRhKCksIGVsZW1lbnREYXRhLm1fYXR0cmlidXRlQXJyYXksIGF0dHJpYnV0ZXMuc2l6
ZSgpICogc2l6ZW9mKEF0dHJpYnV0ZSkpOwogfQogCi1QYXNzUmVmPFNoYXJlYWJsZUVsZW1lbnRE
YXRhPiBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w6OmNhY2hlZFNoYXJlYWJsZUVsZW1lbnREYXRh
V2l0aEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCitSZWY8
U2hhcmVhYmxlRWxlbWVudERhdGE+IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbDo6Y2FjaGVkU2hh
cmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYg
YXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIWF0dHJpYnV0ZXMuaXNFbXB0eSgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oCmluZGV4IGM2Zjdi
MmYuLmEwNzQ2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNoYXJl
ZE9iamVjdFBvb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTaGFyZWRPYmpl
Y3RQb29sLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU2hhcmVhYmxlRWxlbWVudERhdGE7CiAK
IGNsYXNzIERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbCB7CiBwdWJsaWM6Ci0gICAgUGFzc1JlZjxT
aGFyZWFibGVFbGVtZW50RGF0YT4gY2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmli
dXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYpOworICAgIFJlZjxTaGFyZWFibGVFbGVtZW50
RGF0YT4gY2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhjb25zdCBWZWN0
b3I8QXR0cmlidXRlPiYpOwogCiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25l
ZCwgUmVmUHRyPFNoYXJlYWJsZUVsZW1lbnREYXRhPiwgQWxyZWFkeUhhc2hlZD4gU2hhcmVhYmxl
RWxlbWVudERhdGFDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAppbmRleCAwNjYyNDg0Li5lMjliYjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCkBA
IC0xNzUsMTQgKzE3NSwxNCBAQCB2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246Omlu
dmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpCiAgICAgbV9kb2N1bWVudC5zdHlsZVJl
c29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIAotdm9pZCBEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjphZGRBdXRob3JTaGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4gYXV0aG9yU2hlZXQpCit2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZEF1
dGhvclNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgYXV0aG9yU2hlZXQpCiB7CiAgICAg
QVNTRVJUKCFhdXRob3JTaGVldC5nZXQoKS5pc1VzZXJTdHlsZVNoZWV0KCkpOwogICAgIG1fYXV0
aG9yU3R5bGVTaGVldHMuYXBwZW5kKENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShXVEY6Om1vdmUoYXV0
aG9yU2hlZXQpLCAmbV9kb2N1bWVudCkpOwogICAgIG1fZG9jdW1lbnQuc3R5bGVSZXNvbHZlckNo
YW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6YWRkVXNlclNoZWV0KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiB1
c2VyU2hlZXQpCit2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZFVzZXJTaGVl
dChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHVzZXJTaGVldCkKIHsKICAgICBBU1NFUlQodXNl
clNoZWV0LmdldCgpLmlzVXNlclN0eWxlU2hlZXQoKSk7CiAgICAgbV91c2VyU3R5bGVTaGVldHMu
YXBwZW5kKENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShXVEY6Om1vdmUodXNlclNoZWV0KSwgJm1fZG9j
dW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbi5oCmluZGV4IDNkMjMyNmQuLmVlZGU3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaApAQCAtNjcsOCArNjcsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKTsKICAg
ICB2b2lkIHVwZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCkgY29uc3Q7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZEF1dGhvclNoZWV0KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRz
PiBhdXRob3JTaGVldCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRVc2VyU2hlZXQoUGFz
c1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IHVzZXJTaGVldCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRBdXRob3JTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGF1dGhvclNoZWV0
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFVzZXJTaGVldChSZWY8U3R5bGVTaGVldENv
bnRlbnRzPiYmIHVzZXJTaGVldCk7CiAKICAgICBlbnVtIFVwZGF0ZUZsYWcgeyBOb1VwZGF0ZSA9
IDAsIE9wdGltaXplZFVwZGF0ZSwgRnVsbFVwZGF0ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggOGJhZDIyMi4uOTg3OTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTMyNiw3
ICsxMzI2LDcgQEAgYm9vbCBFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKICAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpICE9IE5PTkU7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAg
ICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDdlODEyMzEuLmFkNDYwNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaApAQCAtMzExLDcgKzMxMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbGF6eVJlYXR0
YWNoKCk7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHZpcnR1YWwgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYp
OwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJik7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFkb3dSb290KiBzaGFkb3dSb290KCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnREYXRhLmNwcAppbmRleCAwMTYyNTY1Li5mYWQwMzFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50RGF0YS5jcHAKQEAgLTYzLDEzICs2MywxMyBAQCBzdGF0aWMgc2l6ZV90
IHNpemVGb3JTaGFyZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVDb3VudCh1bnNpZ25lZCBj
b3VudCkKICAgICByZXR1cm4gc2l6ZW9mKFNoYXJlYWJsZUVsZW1lbnREYXRhKSArIHNpemVvZihB
dHRyaWJ1dGUpICogY291bnQ7CiB9CiAKLVBhc3NSZWY8U2hhcmVhYmxlRWxlbWVudERhdGE+IFNo
YXJlYWJsZUVsZW1lbnREYXRhOjpjcmVhdGVXaXRoQXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0
cmlidXRlPiYgYXR0cmlidXRlcykKK1JlZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gU2hhcmVhYmxl
RWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+
JiBhdHRyaWJ1dGVzKQogewogICAgIHZvaWQqIHNsb3QgPSBXVEY6OmZhc3RNYWxsb2Moc2l6ZUZv
clNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0ZUNvdW50KGF0dHJpYnV0ZXMuc2l6ZSgp
KSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHNsb3QpIFNoYXJlYWJsZUVs
ZW1lbnREYXRhKGF0dHJpYnV0ZXMpKTsKIH0KIAotUGFzc1JlZjxVbmlxdWVFbGVtZW50RGF0YT4g
VW5pcXVlRWxlbWVudERhdGE6OmNyZWF0ZSgpCitSZWY8VW5pcXVlRWxlbWVudERhdGE+IFVuaXF1
ZUVsZW1lbnREYXRhOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVuaXF1
ZUVsZW1lbnREYXRhKTsKIH0KQEAgLTE0OCwxNCArMTQ4LDE0IEBAIFVuaXF1ZUVsZW1lbnREYXRh
OjpVbmlxdWVFbGVtZW50RGF0YShjb25zdCBTaGFyZWFibGVFbGVtZW50RGF0YSYgb3RoZXIpCiAg
ICAgICAgIG1fYXR0cmlidXRlVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChvdGhlci5tX2F0dHJpYnV0
ZUFycmF5W2ldKTsKIH0KIAotUGFzc1JlZjxVbmlxdWVFbGVtZW50RGF0YT4gRWxlbWVudERhdGE6
Om1ha2VVbmlxdWVDb3B5KCkgY29uc3QKK1JlZjxVbmlxdWVFbGVtZW50RGF0YT4gRWxlbWVudERh
dGE6Om1ha2VVbmlxdWVDb3B5KCkgY29uc3QKIHsKICAgICBpZiAoaXNVbmlxdWUoKSkKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVW5pcXVlRWxlbWVudERhdGEoc3RhdGljX2Nhc3Q8Y29u
c3QgVW5pcXVlRWxlbWVudERhdGEmPigqdGhpcykpKTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBVbmlxdWVFbGVtZW50RGF0YShzdGF0aWNfY2FzdDxjb25zdCBTaGFyZWFibGVFbGVtZW50RGF0
YSY+KCp0aGlzKSkpOwogfQogCi1QYXNzUmVmPFNoYXJlYWJsZUVsZW1lbnREYXRhPiBVbmlxdWVF
bGVtZW50RGF0YTo6bWFrZVNoYXJlYWJsZUNvcHkoKSBjb25zdAorUmVmPFNoYXJlYWJsZUVsZW1l
bnREYXRhPiBVbmlxdWVFbGVtZW50RGF0YTo6bWFrZVNoYXJlYWJsZUNvcHkoKSBjb25zdAogewog
ICAgIHZvaWQqIHNsb3QgPSBXVEY6OmZhc3RNYWxsb2Moc2l6ZUZvclNoYXJlYWJsZUVsZW1lbnRE
YXRhV2l0aEF0dHJpYnV0ZUNvdW50KG1fYXR0cmlidXRlVmVjdG9yLnNpemUoKSkpOwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzbG90KSBTaGFyZWFibGVFbGVtZW50RGF0YSgq
dGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAppbmRleCA0NDAwYjgzLi4wNzEwMGJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudERhdGEuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHByaXZhdGU6CiAg
ICAgY29uc3QgQXR0cmlidXRlKiBmaW5kQXR0cmlidXRlQnlOYW1lKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKICAgICB1bnNp
Z25lZCBmaW5kQXR0cmlidXRlSW5kZXhCeU5hbWVTbG93Q2FzZShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CiAKLSAgICBQYXNz
UmVmPFVuaXF1ZUVsZW1lbnREYXRhPiBtYWtlVW5pcXVlQ29weSgpIGNvbnN0OworICAgIFJlZjxV
bmlxdWVFbGVtZW50RGF0YT4gbWFrZVVuaXF1ZUNvcHkoKSBjb25zdDsKIH07CiAKICNpZiBDT01Q
SUxFUihNU1ZDKQpAQCAtMTg5LDcgKzE4OSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNoYXJlYWJs
ZUVsZW1lbnREYXRhIDogcHVibGljIEVsZW1lbnREYXRhIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gY3JlYXRlV2l0aEF0dHJpYnV0ZXMoY29uc3Qg
VmVjdG9yPEF0dHJpYnV0ZT4mKTsKKyAgICBzdGF0aWMgUmVmPFNoYXJlYWJsZUVsZW1lbnREYXRh
PiBjcmVhdGVXaXRoQXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYpOwogCiAgICAg
ZXhwbGljaXQgU2hhcmVhYmxlRWxlbWVudERhdGEoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsK
ICAgICBleHBsaWNpdCBTaGFyZWFibGVFbGVtZW50RGF0YShjb25zdCBVbmlxdWVFbGVtZW50RGF0
YSYpOwpAQCAtMjA2LDggKzIwNiw4IEBAIHB1YmxpYzoKIAogY2xhc3MgVW5pcXVlRWxlbWVudERh
dGEgOiBwdWJsaWMgRWxlbWVudERhdGEgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFVu
aXF1ZUVsZW1lbnREYXRhPiBjcmVhdGUoKTsKLSAgICBQYXNzUmVmPFNoYXJlYWJsZUVsZW1lbnRE
YXRhPiBtYWtlU2hhcmVhYmxlQ29weSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8VW5pcXVlRWxl
bWVudERhdGE+IGNyZWF0ZSgpOworICAgIFJlZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gbWFrZVNo
YXJlYWJsZUNvcHkoKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBubyBlcnJv
ci9kdXBsaWNhdGUgY2hlY2tpbmcuCiAgICAgdm9pZCBhZGRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5oCmluZGV4IDlkOTg3M2EuLmY3N2QxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXR0cmlidXRl
TWFwKHN0ZDo6dW5pcXVlX3B0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZU1hcCkgeyBtX2F0dHJp
YnV0ZU1hcCA9IFdURjo6bW92ZShhdHRyaWJ1dGVNYXApOyB9CiAKICAgICBSZW5kZXJTdHlsZSog
Y29tcHV0ZWRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZWRTdHlsZS5nZXQoKTsgfQot
ICAgIHZvaWQgc2V0Q29tcHV0ZWRTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBjb21wdXRlZFN0
eWxlKSB7IG1fY29tcHV0ZWRTdHlsZSA9IFdURjo6bW92ZShjb21wdXRlZFN0eWxlKTsgfQorICAg
IHZvaWQgc2V0Q29tcHV0ZWRTdHlsZShSZWY8UmVuZGVyU3R5bGU+JiYgY29tcHV0ZWRTdHlsZSkg
eyBtX2NvbXB1dGVkU3R5bGUgPSBXVEY6Om1vdmUoY29tcHV0ZWRTdHlsZSk7IH0KIAogICAgIENs
YXNzTGlzdCogY2xhc3NMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0xpc3QuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldENsYXNzTGlzdChzdGQ6OnVuaXF1ZV9wdHI8Q2xhc3NMaXN0PiBjbGFzc0xp
c3QpIHsgbV9jbGFzc0xpc3QgPSBXVEY6Om1vdmUoY2xhc3NMaXN0KTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05h
bWVOb2RlTGlzdC5oCmluZGV4IDIwZGYyMmEuLjlmOWNlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5v
ZGVMaXN0LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTm9kZUxp
c3Qgd2hpY2ggbGlzdHMgYWxsIE5vZGVzIGluIGEgRWxlbWVudCB3aXRoIGEgZ2l2ZW4gIm5hbWUi
IGF0dHJpYnV0ZQogY2xhc3MgTmFtZU5vZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExpdmVO
b2RlTGlzdDxOYW1lTm9kZUxpc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxOYW1l
Tm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKQorICAgIHN0YXRpYyBSZWY8TmFtZU5vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE5hbWVOb2RlTGlzdChyb290Tm9kZSwgbmFtZSkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAppbmRleCA2ODY3
ODQwLi42YmQ3NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29s
bGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24u
Y3BwCkBAIC02Niw3ICs2Niw3IEBAIFdlYktpdE5hbWVkRmxvdyogTmFtZWRGbG93Q29sbGVjdGlv
bjo6Zmxvd0J5TmFtZShjb25zdCBTdHJpbmcmIGZsb3dOYW1lKQogICAgIHJldHVybiAqaXQ7CiB9
CiAKLVBhc3NSZWY8V2ViS2l0TmFtZWRGbG93PiBOYW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVG
bG93V2l0aE5hbWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZSkKK1JlZjxXZWJLaXROYW1lZEZsb3c+
IE5hbWVkRmxvd0NvbGxlY3Rpb246OmVuc3VyZUZsb3dXaXRoTmFtZShjb25zdCBTdHJpbmcmIGZs
b3dOYW1lKQogewogICAgIE5hbWVkRmxvd1NldDo6aXRlcmF0b3IgaXQgPSBtX25hbWVkRmxvd3Mu
ZmluZDxTdHJpbmcsIE5hbWVkRmxvd0hhc2hUcmFuc2xhdG9yPihmbG93TmFtZSk7CiAgICAgaWYg
KGl0ICE9IG1fbmFtZWRGbG93cy5lbmQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dD
b2xsZWN0aW9uLmgKaW5kZXggZTEyNjNkZC4uOGVmMmY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TmFtZWRGbG93Q29sbGVjdGlvbi5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIFZl
Y3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93cygpOwogICAgIFdlYktpdE5h
bWVkRmxvdyogZmxvd0J5TmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICBQYXNzUmVmPFdlYktpdE5h
bWVkRmxvdz4gZW5zdXJlRmxvd1dpdGhOYW1lKGNvbnN0IFN0cmluZyYpOworICAgIFJlZjxXZWJL
aXROYW1lZEZsb3c+IGVuc3VyZUZsb3dXaXRoTmFtZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZv
aWQgZGlzY2FyZE5hbWVkRmxvdyhXZWJLaXROYW1lZEZsb3cqKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCmluZGV4IDk3NmE0NjQuLmIxNjUwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVE
YXRhLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9jaGlsZE5vZGVM
aXN0LT5pbnZhbGlkYXRlQ2FjaGUoKTsKICAgICB9CiAKLSAgICBQYXNzUmVmPENoaWxkTm9kZUxp
c3Q+IGVuc3VyZUNoaWxkTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgbm9kZSkKKyAgICBSZWY8Q2hp
bGROb2RlTGlzdD4gZW5zdXJlQ2hpbGROb2RlTGlzdChDb250YWluZXJOb2RlJiBub2RlKQogICAg
IHsKICAgICAgICAgQVNTRVJUKCFtX2VtcHR5Q2hpbGROb2RlTGlzdCk7CiAgICAgICAgIGlmICht
X2NoaWxkTm9kZUxpc3QpCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jaGls
ZE5vZGVMaXN0ID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBQYXNzUmVmPEVtcHR5Tm9kZUxpc3Q+
IGVuc3VyZUVtcHR5Q2hpbGROb2RlTGlzdChOb2RlJiBub2RlKQorICAgIFJlZjxFbXB0eU5vZGVM
aXN0PiBlbnN1cmVFbXB0eUNoaWxkTm9kZUxpc3QoTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVCghbV9jaGlsZE5vZGVMaXN0KTsKICAgICAgICAgaWYgKG1fZW1wdHlDaGlsZE5vZGVM
aXN0KQpAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8UXVh
bGlmaWVkTmFtZSwgVGFnTm9kZUxpc3QqPiBUYWdOb2RlTGlzdENhY2hlTlM7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb250YWluZXJUeXBlPgotICAgIEFMV0FZU19JTkxJ
TkUgUGFzc1JlZjxUPiBhZGRDYWNoZVdpdGhBdG9taWNOYW1lKENvbnRhaW5lclR5cGUmIGNvbnRh
aW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorICAgIEFMV0FZU19JTkxJTkUgUmVmPFQ+
IGFkZENhY2hlV2l0aEF0b21pY05hbWUoQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBOb2RlTGlzdEF0b21pY05hbWVDYWNo
ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fYXRvbWljTmFtZUNhY2hlcy5mYXN0QWRkKG5hbWVk
Tm9kZUxpc3RLZXk8VD4obmFtZSksIG51bGxwdHIpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3Q7
CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBQYXNzUmVmPFRhZ05vZGVMaXN0PiBhZGRDYWNo
ZVdpdGhRdWFsaWZpZWROYW1lKENvbnRhaW5lck5vZGUmIG5vZGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKKyAgICBBTFdB
WVNfSU5MSU5FIFJlZjxUYWdOb2RlTGlzdD4gYWRkQ2FjaGVXaXRoUXVhbGlmaWVkTmFtZShDb250
YWluZXJOb2RlJiBub2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCiAgICAgewogICAgICAgICBRdWFsaWZpZWROYW1lIG5h
bWUobnVsbEF0b20sIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKTsKICAgICAgICAgVGFnTm9kZUxp
c3RDYWNoZU5TOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV90YWdOb2RlTGlzdENhY2hlTlMuZmFzdEFk
ZChuYW1lLCBudWxscHRyKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udGFpbmVyVHlwZT4KLSAgICBBTFdB
WVNfSU5MSU5FIFBhc3NSZWY8VD4gYWRkQ2FjaGVkQ29sbGVjdGlvbihDb250YWluZXJUeXBlJiBj
b250YWluZXIsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCisgICAgQUxXQVlTX0lOTElORSBSZWY8VD4gYWRkQ2FjaGVkQ29sbGVjdGlvbihD
b250YWluZXJUeXBlJiBjb250YWluZXIsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBDb2xsZWN0aW9uQ2FjaGVN
YXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2NhY2hlZENvbGxlY3Rpb25zLmZhc3RBZGQobmFtZWRD
b2xsZWN0aW9uS2V5KGNvbGxlY3Rpb25UeXBlLCBuYW1lKSwgbnVsbHB0cik7CiAgICAgICAgIGlm
ICghcmVzdWx0LmlzTmV3RW50cnkpCkBAIC0xNTUsNyArMTU1LDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnRhaW5lclR5cGU+Ci0gICAg
QUxXQVlTX0lOTElORSBQYXNzUmVmPFQ+IGFkZENhY2hlZENvbGxlY3Rpb24oQ29udGFpbmVyVHlw
ZSYgY29udGFpbmVyLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKKyAgICBBTFdBWVNf
SU5MSU5FIFJlZjxUPiBhZGRDYWNoZWRDb2xsZWN0aW9uKENvbnRhaW5lclR5cGUmIGNvbnRhaW5l
ciwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCiAgICAgewogICAgICAgICBDb2xsZWN0
aW9uQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2NhY2hlZENvbGxlY3Rpb25zLmZhc3RB
ZGQobmFtZWRDb2xsZWN0aW9uS2V5KGNvbGxlY3Rpb25UeXBlLCBzdGFyQXRvbSksIG51bGxwdHIp
OwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0Vs
ZW1lbnQuY3BwCmluZGV4IDdjMmJjZjIuLjY1MGY3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRv
RWxlbWVudC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFBzZXVkb0VsZW1lbnQ6OmRpZFJl
Y2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpCiAgICAgICAgIC8vIFdlIG9ubHkgbWFuYWdlIHRoZSBz
dHlsZSBmb3IgdGhlIGdlbmVyYXRlZCBjb250ZW50IHdoaWNoIG11c3QgYmUgaW1hZ2VzIG9yIHRl
eHQuCiAgICAgICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KCpjaGlsZCkgJiYgIWlzPFJlbmRlclF1
b3RlPigqY2hpbGQpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IGNyZWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRp
bmdGcm9tUHNldWRvU3R5bGUocmVuZGVyZXIuc3R5bGUoKSk7CisgICAgICAgIFJlZjxSZW5kZXJT
dHlsZT4gY3JlYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zy
b21Qc2V1ZG9TdHlsZShyZW5kZXJlci5zdHlsZSgpKTsKICAgICAgICAgZG93bmNhc3Q8UmVuZGVy
RWxlbWVudD4oKmNoaWxkKS5zZXRTdHlsZShXVEY6Om1vdmUoY3JlYXRlZFN0eWxlKSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKaW5kZXggMWE1NmU5ZC4uOThhNjViZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFF1
YWxpZmllZE5hbWUgewogcHVibGljOgogICAgIGNsYXNzIFF1YWxpZmllZE5hbWVJbXBsIDogcHVi
bGljIFJlZkNvdW50ZWQ8UXVhbGlmaWVkTmFtZUltcGw+IHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmPFF1YWxpZmllZE5hbWVJbXBsPiBjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVzcGFjZVVSSSkKKyAgICAgICAgc3RhdGljIFJlZjxRdWFsaWZpZWROYW1lSW1w
bD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1YWxpZmllZE5hbWVJbXBsKHByZWZp
eCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9k
ZUxpc3QuaAppbmRleCBiOTE4NTE2Li42OTIxYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGFnTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3Qu
aApAQCAtMzMsMTMgKzMzLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE5vZGVMaXN0IHRo
YXQgbGltaXRzIHRvIGEgcGFydGljdWxhciB0YWcuCiBjbGFzcyBUYWdOb2RlTGlzdCBmaW5hbCA6
IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxpc3Q8VGFnTm9kZUxpc3Q+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZjxUYWdOb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbE5hbWUpCisgICAgc3RhdGljIFJlZjxUYWdOb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQobmFtZXNwYWNlVVJJ
ICE9IHN0YXJBdG9tKTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFnTm9kZUxpc3Qo
cm9vdE5vZGUsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IFBhc3NSZWY8VGFnTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCisgICAgc3RhdGljIFJlZjxUYWdOb2RlTGlzdD4g
Y3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
TmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRhZ05vZGVMaXN0KHJv
b3ROb2RlLCBzdGFyQXRvbSwgbG9jYWxOYW1lKSk7CiAgICAgfQpAQCAtNjcsNyArNjcsNyBAQCBp
bmxpbmUgYm9vbCBUYWdOb2RlTGlzdDo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxlbWVudCkg
Y29uc3QKIAogY2xhc3MgSFRNTFRhZ05vZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExpdmVO
b2RlTGlzdDxIVE1MVGFnTm9kZUxpc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxI
VE1MVGFnTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUpCisgICAgc3RhdGljIFJlZjxIVE1MVGFnTm9kZUxpc3Q+IGNy
ZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MVGFnTm9kZUxpc3Qo
cm9vdE5vZGUsIGxvY2FsTmFtZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VC
dXR0b25JbnB1dFR5cGUuY3BwCmluZGV4IDg5YjI1NDAuLjM2NDIyMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcApAQCAtNTIsNyArNTIsNyBAQCBib29s
IEJhc2VCdXR0b25JbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
QmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBCYXNlQnV0dG9uSW5wdXRUeXBl
OjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQnV0dG9uPihlbGVtZW50KCksIFdURjo6bW92ZShz
dHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5w
dXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuaAppbmRl
eCA0NjU3MWMzLi5mZTBhOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VC
dXR0b25JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1
dFR5cGUuaApAQCAtNDMsNyArNDMsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9v
bCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdG9yZXNWYWx1ZVNl
cGFyYXRlRnJvbUF0dHJpYnV0ZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1
ZShjb25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBvdmVycmlkZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCAwNTQzYzVkLi43MjQ3
ZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTE5NSw3ICsxOTUs
NyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqIGV2
ZW50KQogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gRmlsZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBGaWxlSW5wdXRUeXBl
OjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w+KGVsZW1lbnQoKSwg
V1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCmluZGV4
IDg4ZmRlMzMuLmFhZWNjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC01
OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZyhjb25z
dCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZU1pc3Np
bmdUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURPTUFjdGl2
YXRlRXZlbnQoRXZlbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNhblNl
dFN0cmluZ1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNhbkNoYW5n
ZUZyb21Bbm90aGVyVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgRmlsZUxpc3Qq
IGZpbGVzKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bGxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24u
Y3BwCmluZGV4IDgyZDY3MGQuLjAxNjY4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFs
bENvbGxlY3Rpb24uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUGFzc1JlZjxIVE1MQWxsQ29sbGVjdGlvbj4gSFRNTEFsbENvbGxlY3Rpb246OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUpCitSZWY8SFRNTEFsbENvbGxl
Y3Rpb24+IEhUTUxBbGxDb2xsZWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xs
ZWN0aW9uVHlwZSB0eXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxBbGxDb2xs
ZWN0aW9uKGRvY3VtZW50LCB0eXBlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmgKaW5kZXggYmRmNGZmMS4uNTE0NTExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFsbENvbGxlY3Rpb24uaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEhUTUxBbGxDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxIVE1MQWxsQ29sbGVjdGlvbj4gY3JlYXRlKERv
Y3VtZW50JiwgQ29sbGVjdGlvblR5cGUpOworICAgIHN0YXRpYyBSZWY8SFRNTEFsbENvbGxlY3Rp
b24+IGNyZWF0ZShEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIAogICAgIEVsZW1lbnQqIG5h
bWVkSXRlbVdpdGhJbmRleChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGluZGV4
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAppbmRl
eCBhZmUyMWE1Li41ZDZlYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cHBsZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVt
ZW50LmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIEhUTUxBcHBsZXRFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxB
cHBsZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQogewogICAgIGlmICghY2FuRW1iZWRKYXZhKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJF
bGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCmluZGV4IDIwNWFkZGEuLmZiNjA4NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVh
dGlvbk9wdGlvbikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCUkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcApp
bmRleCA1YTg0ODU3Li4zZjk4NzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCUkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5j
cHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBIVE1MQlJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmEKICAgICAgICAgSFRN
TEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1
ZSwgc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEJSRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgaWYgKHN0eWxlLmdldCgpLmhhc0NvbnRl
bnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RG
Ojptb3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oCmluZGV4IGQ1OGE2
ZjMuLjBmM2I2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oCkBAIC00MSw3ICs0
MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggYTFmZjQ4My4uNWFkNmZiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBI
VE1MQnV0dG9uRWxlbWVudDo6c2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCiAgICAg
c2V0QXR0cmlidXRlKHR5cGVBdHRyLCB0eXBlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IEhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJ1dHRvbj4oKnRoaXMsIFdURjo6bW92ZShz
dHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCmluZGV4IGFj
Njg3ZjkuLjI3M2Q5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRv
bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRl
clN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGFsd2F5cyBjcmVhdGVzIG9uZSwgYnV0IGJ1dHRv
bnMgZG9uJ3QgbmVlZCBpdC4KICAgICB2aXJ0dWFsIGJvb2wgYWx3YXlzQ3JlYXRlVXNlckFnZW50
U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDIwZTQ2ZDQuLjcxNzBjMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTENh
bnZhc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5zY3Jp
cHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCBmZmRhNjgyLi5jZTBlZmM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC0xMzksNyArMTM5LDcg
QEAgcHJpdmF0ZToKICAgICBIVE1MQ2FudmFzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCA0Mjc3MjI1Li4zZjc0ZDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMTQ1LDcgKzE0NSw3
IEBAIEhUTUxDb2xsZWN0aW9uOjpIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBvd25lck5v
ZGUsIENvbGxlY3Rpb25UeXBlIHR5cGUsIEVsCiAgICAgQVNTRVJUKG1fY29sbGVjdGlvblR5cGUg
PT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpKTsKIH0KIAotUGFzc1JlZjxIVE1MQ29sbGVj
dGlvbj4gSFRNTENvbGxlY3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0
aW9uVHlwZSB0eXBlKQorUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MQ29sbGVjdGlvbjo6Y3JlYXRl
KENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSFRNTENvbGxlY3Rpb24oYmFzZSwgdHlwZSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5oCmluZGV4IDA4ZjEyM2IuLmJlYjI2ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKIAogY2xh
c3MgSFRNTENvbGxlY3Rpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291
bnRlZDxIVE1MQ29sbGVjdGlvbj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPEhUTUxD
b2xsZWN0aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUpOwor
ICAgIHN0YXRpYyBSZWY8SFRNTENvbGxlY3Rpb24+IGNyZWF0ZShDb250YWluZXJOb2RlJiBiYXNl
LCBDb2xsZWN0aW9uVHlwZSk7CiAgICAgdmlydHVhbCB+SFRNTENvbGxlY3Rpb24oKTsKIAogICAg
IC8vIERPTSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApp
bmRleCBhMzViNWQ4Li42NTlmMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWls
c0VsZW1lbnQuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgSFRNTERldGFpbHNFbGVtZW50OjpIVE1M
RGV0YWlsc0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGQK
ICAgICBBU1NFUlQoaGFzVGFnTmFtZShkZXRhaWxzVGFnKSk7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRGV0
YWlsc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oKnRoaXMs
IFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmgKaW5kZXggYTk4OTQ3NC4uMGE4ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
ZXRhaWxzRWxlbWVudC5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
SFRNTERldGFpbHNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0g
ICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25z
dCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBmMjg0YjllLi4yMzE3YmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNzk2LDcgKzc5Niw3IEBAIGJvb2wgSFRN
TEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAg
IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRN
TEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiB7CiAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGOjptb3Zl
KHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggZWU0OGFlZC4uYjQx
MGQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpZUZvcmJpZHNJbnNlcnRIVE1MKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQ
YXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3Zl
cnJpZGU7CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBjb25zdCB7IHJldHVybiB2aXJ0
dWFsRm9ybSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
Y3BwCmluZGV4IDAxZGRmNDAuLjRiOGRlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgSFRNTEZpZWxkU2V0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKICAgICByZXR1
cm4gZmllbGRzZXQ7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRmllbGRTZXRF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyRmllbGRzZXQ+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKaW5kZXggZTE3NTBkMy4u
YjA0ZjNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKQEAg
LTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJs
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBjb21wdXRlV2lsbFZhbGlkYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uY3BwCmluZGV4IDM4ZWMzMWQuLjBkZWVjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC00Myw3ICs0Myw3IEBA
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbihD
b250YWluZXJOb2RlJiBvd25lck5vZGUpCiAgICAgQVNTRVJUKGlzPEhUTUxGb3JtRWxlbWVudD4o
b3duZXJOb2RlKSB8fCBpczxIVE1MRmllbGRTZXRFbGVtZW50Pihvd25lck5vZGUpKTsKIH0KIAot
UGFzc1JlZjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4gSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBvd25lck5vZGUsIENvbGxlY3Rpb25UeXBlKQor
UmVmPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6Y3JlYXRlKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgQ29sbGVjdGlvblR5cGUpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24ob3duZXJO
b2RlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmgKaW5kZXggMzE2MmJkOS4uYjE2OGFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaApAQCAtMzYsNyArMzYsNyBAQCBjbGFz
cyBIVE1MSW1hZ2VFbGVtZW50OwogCiBjbGFzcyBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWY8SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+IGNyZWF0ZShDb250YWluZXJOb2RlJiwgQ29s
bGVjdGlvblR5cGUpOworICAgIHN0YXRpYyBSZWY8SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+
IGNyZWF0ZShDb250YWluZXJOb2RlJiwgQ29sbGVjdGlvblR5cGUpOwogICAgIHZpcnR1YWwgfkhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50LmNwcAppbmRleCBkNjU1ZjA3Li5kNjY5ZjQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBI
VE1MRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikKICAg
ICByZXR1cm4gaXNVUkxBbGxvd2VkKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBI
VE1MRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRnJhbWU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKaW5kZXggZDRkNjFjOC4uNzJm
NzAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKQEAgLTQyLDcgKzQy
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJT
dHlsZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5k
ZXggMmI0MTRjZi4uOTY4ZDgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgYm9vbCBIVE1MRnJhbWVTZXRFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4g
c3R5bGUuaXNTdHlsZUF2YWlsYWJsZSgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
SFRNTEZyYW1lU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxGcmFtZVNldEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAg
ICAgaWYgKHN0eWxlLmdldCgpLmhhc0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVs
ZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCmluZGV4IGEzYjI3MTcuLjZhMzdlYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCkBAIC03NSw3ICs3NSw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuY3BwCmluZGV4IGFmYTc1MGUuLmVkMjU5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC05MCw3ICs5MCw3IEBAIGJvb2wgSFRNTElG
cmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQog
ICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKSAmJiBzdHlsZS5kaXNwbGF5KCkgIT0gTk9ORTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlcklG
cmFtZT4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5oCmluZGV4IDlhYWFjMTguLjkyZDM4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBS
ZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCAyZDli
YmFhLi5mNGZkNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
QEAgLTIwNyw3ICsyMDcsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6
OmFsdFRleHQoKSBjb25zdAogICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHRpdGxlQXR0cik7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAoc3R5bGUuZ2V0KCkuaGFzQ29udGVudCgp
KQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEY6Om1v
dmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggZmQ1
ZTFiMy4uOGU4MjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAg
LTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0QmVzdEZpdFVSTEFuZERQUkZyb21JbWFnZUNhbmRpZGF0ZShjb25zdCBJbWFnZUNhbmRp
ZGF0ZSYpOwogCiAgICAgdmlydHVhbCBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBjMmZl
YWU3Li43ODkyNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
QEAgLTc2MSw3ICs3NjEsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIHJldHVybiBtX2lucHV0VHlwZS0+cmVu
ZGVyZXJJc05lZWRlZCgpICYmIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKHN0eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJbnB1dEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBtX2lucHV0
VHlwZS0+Y3JlYXRlSW5wdXRSZW5kZXJlcihXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggM2ZlNTc3Zi4uNzdkYTYxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTIwMCw3ICsyMDAsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBjYW5IYXZlU2VsZWN0aW9uKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHls
ZT4mJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxBdHRhY2hSZW5kZXJl
cnMoKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJz
KCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGFjaFJlbmRlcmVycygp
IG92ZXJyaWRlIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmlu
ZGV4IDVhODdhN2YuLmQ1NTE4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgYwogICAgIH0K
IAogICAgIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+IHN0eWxlU2hlZXQoU3R5bGVTaGVldENvbnRl
bnRzOjpjcmVhdGUoaHJlZiwgcGFyc2VyQ29udGV4dCkpOwotICAgIG1fc2hlZXQgPSBDU1NTdHls
ZVNoZWV0OjpjcmVhdGUoc3R5bGVTaGVldCwgdGhpcyk7CisgICAgbV9zaGVldCA9IENTU1N0eWxl
U2hlZXQ6OmNyZWF0ZShzdHlsZVNoZWV0LmNvcHlSZWYoKSwgdGhpcyk7CiAgICAgbV9zaGVldC0+
c2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25T
eW50YXgobV9tZWRpYSkpOwogICAgIG1fc2hlZXQtPnNldFRpdGxlKHRpdGxlKCkpOwogCkBAIC0z
MzksNyArMzM5LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGMKICAgICBzdHlsZVNoZWV0Lmdl
dCgpLmNoZWNrTG9hZGVkKCk7CiAKICAgICBpZiAoc3R5bGVTaGVldC5nZXQoKS5pc0NhY2hlYWJs
ZSgpKQotICAgICAgICBjb25zdF9jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQqPihjYWNoZWRTdHls
ZVNoZWV0KS0+c2F2ZVBhcnNlZFN0eWxlU2hlZXQoc3R5bGVTaGVldCk7CisgICAgICAgIGNvbnN0
X2Nhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldCo+KGNhY2hlZFN0eWxlU2hlZXQpLT5zYXZlUGFyc2Vk
U3R5bGVTaGVldChXVEY6Om1vdmUoc3R5bGVTaGVldCkpOwogfQogCiBib29sIEhUTUxMaW5rRWxl
bWVudDo6c3R5bGVTaGVldElzTG9hZGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAppbmRleCAzZGNjODUyLi4xZGRmOTc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTYyMiw3ICs2MjIsNyBAQCBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQog
ICAgIHJldHVybiBjb250cm9scygpICYmIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0
eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNZWRpYUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJNZWRpYT4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBhMDNmODYyLi4yYzU3Yzc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDg5LDcgKzQ4OSw3IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGVuZElnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKTsKICNlbmRp
ZgogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAg
Ym9vbCBtZWRpYUNvbnRyb2xzRGVwZW5kT25QYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX21lZGlhQ29udHJvbHNEZXBlbmRPblBhZ2VTY2FsZUZhY3RvcjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKaW5kZXggMTRkYjhhMC4uZjFkNjcwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFJl
ZlB0cjxIVE1MTWV0ZXJFbGVtZW50PiBIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwKICAgICByZXR1cm4gbWV0ZXI7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1l
dGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKIHsKICAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpLnN1cHBvcnRzTWV0ZXIo
c3R5bGUuZ2V0KCkuYXBwZWFyYW5jZSgpKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6
OmNyZWF0ZUZvcigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1ldGVyRWxlbWVudC5oCmluZGV4IDUwNmUyYWMuLjE0ZTQ3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGVyRWxlbWVudC5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHls
ZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCmluZGV4IGEwZjRi
YjUuLjMyMDc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xs
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaApA
QCAtNDQsNyArNDQsNyBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIFdpbmRvd05hbWVDb2xsZWN0aW9u
IGZpbmFsIDogcHVibGljIEhUTUxOYW1lQ29sbGVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWY8V2luZG93TmFtZUNvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICBzdGF0
aWMgUmVmPFdpbmRvd05hbWVDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBD
b2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaW5kb3dOYW1lQ29sbGVjdGlvbihkb2N1bWVudCwg
dHlwZSwgbmFtZSkpOwogICAgIH0KQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
RG9jdW1lbnROYW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rpb24g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPERvY3VtZW50TmFtZUNvbGxlY3Rpb24+IGNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMgUmVmPERvY3VtZW50TmFtZUNvbGxlY3Rpb24+IGNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERvY3Vt
ZW50TmFtZUNvbGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUsIG5hbWUpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKaW5kZXggZjI5MjEyZC4u
ZmIzMzc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9u
LmNwcApAQCAtMzEsNyArMzEsNyBAQCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OkhUTUxPcHRpb25z
Q29sbGVjdGlvbihIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0KQogewogfQogCi1QYXNzUmVmPEhU
TUxPcHRpb25zQ29sbGVjdGlvbj4gSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpjcmVhdGUoSFRNTFNl
bGVjdEVsZW1lbnQmIHNlbGVjdCwgQ29sbGVjdGlvblR5cGUpCitSZWY8SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uPiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNyZWF0ZShIVE1MU2VsZWN0RWxlbWVudCYg
c2VsZWN0LCBDb2xsZWN0aW9uVHlwZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1M
T3B0aW9uc0NvbGxlY3Rpb24oc2VsZWN0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uc0NvbGxlY3Rpb24uaAppbmRleCAxNTgzNGFiLi4zNDBkYTFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKQEAgLTM1LDcgKzM1LDcgQEAgdHlw
ZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGZp
bmFsIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IGNyZWF0ZShIVE1MU2VsZWN0RWxlbWVudCYsIENvbGxl
Y3Rpb25UeXBlKTsKKyAgICBzdGF0aWMgUmVmPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gY3JlYXRl
KEhUTUxTZWxlY3RFbGVtZW50JiwgQ29sbGVjdGlvblR5cGUpOwogCiAgICAgSFRNTFNlbGVjdEVs
ZW1lbnQmIHNlbGVjdEVsZW1lbnQoKSB7IHJldHVybiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVu
dD4ob3duZXJOb2RlKCkpOyB9CiAgICAgY29uc3QgSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4ob3duZXJO
b2RlKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4
IGVjYmRlNGIuLjU1OGQxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1l
bnQuY3BwCkBAIC0yOTIsNyArMjkyLDcgQEAgTlBPYmplY3QqIEhUTUxQbHVnSW5FbGVtZW50Ojpn
ZXROUE9iamVjdCgpCiAKICNlbmRpZiAvKiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgKi8K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5FbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gSFRNTFBsdWdJbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgaWYgKG1fcGx1Z2luUmVwbGFjZW1lbnQgJiYgbV9w
bHVnaW5SZXBsYWNlbWVudC0+d2lsbENyZWF0ZVJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBt
X3BsdWdpblJlcGxhY2VtZW50LT5jcmVhdGVFbGVtZW50UmVuZGVyZXIoKnRoaXMsIFdURjo6bW92
ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCmluZGV4IDhj
MTk1ZjguLjhhNzViYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgK
QEAgLTEwMyw3ICsxMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0
T2JqZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzKTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKIAogICAgIC8vIFN1YmNsYXNzZXMgc2hvdWxkIHVz
ZSBndWFyZGVkRGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW5zdGVhZCBvZiBjYWxsaW5nIGRpc3Bh
dGNoQmVmb3JlTG9hZEV2ZW50IGRpcmVjdGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggYTRmMGYyNi4uM2U1MzlhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0xODksNyAr
MTg5LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBc05ldHNjYXBl
UGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIEFTU0VSVCghZG9jdW1lbnQoKS5pblBh
Z2VDYWNoZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaAppbmRleCA4MjBmYjcyLi4yYmM0YjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVy
cmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZWNhbGNTdHls
ZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0
YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRh
Y2hSZW5kZXJlcnMoKSBvdmVycmlkZSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cm9ncmVzc0VsZW1lbnQuY3BwCmluZGV4IDhjZjJkNjIuLmYxYjMxZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCBSZWZQ
dHI8SFRNTFByb2dyZXNzRWxlbWVudD4gSFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZwogICAgIHJldHVybiBwcm9ncmVzczsKIH0KIAotUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBI
VE1MUHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlKQogewogICAgIGlmICghc3R5bGUuZ2V0KCkuaGFzQXBwZWFyYW5jZSgpKQogICAg
ICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKaW5kZXggMzYy
ZmQyYy4uODViYjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jl
c3NFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBw
ZWFySW5kZXRlcm1pbmF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0TGFiZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVh
bCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclByb2dyZXNzKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNzkx
YmJjYi4uOGM1YzMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHAKQEAgLTM0Niw3ICszNDYsNyBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjYW5TZWxlY3RB
bGwoKSBjb25zdAogICAgIHJldHVybiAhdXNlc01lbnVMaXN0KCk7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxT
ZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQogewogI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKHVzZXNNZW51TGlzdCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IDRhM2JhZTguLjRiMjViOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTEzNyw3ICsxMzcs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0Jiwg
Ym9vbCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAppbmRleCBiMDgxMWY3Li4x
MjUyNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCkBA
IC02NSw3ICs2NSw3IEBAIEhUTUxTdW1tYXJ5RWxlbWVudDo6SFRNTFN1bW1hcnlFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkCiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoc3VtbWFyeVRhZykpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFN1
bW1hcnlFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCmluZGV4IDBkNTZl
M2EuLmQyMGM5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaApA
QCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxTdW1tYXJ5RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlv
bi5jcHAKaW5kZXggYjU5ZjkyNi4uZmUwZDY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBIVE1MVGFi
bGVSb3dzQ29sbGVjdGlvbjo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24oSFRNTFRhYmxlRWxlbWVu
dCYgdGFibGUpCiB7CiB9CiAKLVBhc3NSZWY8SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+IEhUTUxU
YWJsZVJvd3NDb2xsZWN0aW9uOjpjcmVhdGUoSFRNTFRhYmxlRWxlbWVudCYgdGFibGUsIENvbGxl
Y3Rpb25UeXBlIHR5cGUpCitSZWY8SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+IEhUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uOjpjcmVhdGUoSFRNTFRhYmxlRWxlbWVudCYgdGFibGUsIENvbGxlY3Rpb25U
eXBlIHR5cGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBlID09IFRhYmxlUm93cyk7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24odGFibGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaAppbmRl
eCAwZjVjZGQ3Li5mMTdhMzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVJvd3NDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVS
b3dzQ29sbGVjdGlvbi5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEhUTUxUYWJsZVJvd0VsZW1l
bnQ7CiAKIGNsYXNzIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxD
b2xsZWN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbj4gY3JlYXRlKEhUTUxUYWJsZUVsZW1lbnQmLCBDb2xsZWN0aW9uVHlwZSk7CisgICAg
c3RhdGljIFJlZjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbj4gY3JlYXRlKEhUTUxUYWJsZUVsZW1l
bnQmLCBDb2xsZWN0aW9uVHlwZSk7CiAKICAgICBIVE1MVGFibGVFbGVtZW50JiB0YWJsZUVsZW1l
bnQoKSB7IHJldHVybiBkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50Pihvd25lck5vZGUoKSk7IH0K
ICAgICBjb25zdCBIVE1MVGFibGVFbGVtZW50JiB0YWJsZUVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50Pihvd25lck5vZGUoKSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDkxZDcxYzEuLjU1NDYwMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMjEw
LDcgKzIxMCw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljCiAgICAgICAgIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggZmM0MTY1Ni4uMTU3YmFlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTEwMSw3ICsxMDEs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGhhc0N1c3RvbUZvY3Vz
TG9naWMoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCmluZGV4IDg2ZDc3NzUuLjI4YjJjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcApAQCAtNjcsNyArNjcsNyBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIHJldHVybiBI
VE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IAogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxWaWRl
b0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclZpZGVvPigqdGhpcywgV1RGOjpt
b3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4
IGU1ZjYwNDguLjhlZDJiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZERpc3BsYXlQb3N0ZXJJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIGRpc3BsYXlNb2RlKCkgPT0gUG9zdGVyIHx8IGRpc3BsYXlN
b2RlKCkgPT0gUG9zdGVyV2FpdGluZ0ZvclZpZGVvOyB9CiAKICAgICBVUkwgcG9zdGVySW1hZ2VV
UkwoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEhUTUxWaWRlb0VsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFdCUkVsZW1lbnQuY3BwCmluZGV4IGU5NGNiZjcuLjM5NGY1MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFdCUkVsZW1lbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEhUTUxXQlJFbGVtZW50
OjpIVE1MV0JSRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUod2JyVGFnKSk7CiB9CiAKLVJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBIVE1MV0JSRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxX
QlJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJMaW5lQnJlYWs+KCp0aGlzLCBX
VEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFdCUkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQuaAppbmRl
eCAyMTc3Yjk3Li41YmU3NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxX
QlJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFdCUkVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4p
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5J
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCmlu
ZGV4IDE1ZWFjNWQuLmQ2ZWUxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlk
ZGVuSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlw
ZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgYm9vbCBIaWRkZW5JbnB1dFR5cGU6OnN1cHBvcnRzVmFs
aWRhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gSGlkZGVuSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhpZGRlbklucHV0VHlwZTo6Y3Jl
YXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpCiB7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hpZGRlbklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1
dFR5cGUuaAppbmRleCBjZDAxZTAwLi5lZTZkMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hpZGRlbklucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVu
SW5wdXRUeXBlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEZvcm1D
b250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0
ZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJ
bnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29s
IHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3RvcmVzVmFsdWVTZXBhcmF0ZUZy
b21BdHRyaWJ1dGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5j
cHAKaW5kZXggZTMyMWMyZS4uOTU0OGM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0
VHlwZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEltYWdlSW5wdXRUeXBlOjpoYW5kbGVE
T01BY3RpdmF0ZUV2ZW50KEV2ZW50KiBldmVudCkKICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlSW5wdXRUeXBlOjpjcmVh
dGVJbnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEltYWdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1h
Z2U+KGVsZW1lbnQoKSwgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
SW5wdXRUeXBlLmgKaW5kZXggZTZlZjVjNS4uNzIzNmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VJbnB1dFR5cGUuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBpc0Zvcm1EYXRhQXBwZW5kYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Kikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGFsdEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3JjQXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCmluZGV4IDgwYjQ5ZmUuLmMwODlkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAKQEAgLTQ3OSw3ICs0NzksNyBAQCBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVu
dD4gSW5wdXRUeXBlOjpmb3JtRm9yU3VibWlzc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIGVsZW1l
bnQoKS5mb3JtKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbnB1dFR5cGU6OmNy
ZWF0ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+KFJl
bmRlckVsZW1lbnQ6OmNyZWF0ZUZvcihlbGVtZW50KCksIFdURjo6bW92ZShzdHlsZSkpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDczMmVkZWMuLjg2YWM4YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuaApAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1pc2Nl
bGxhbmVvdXMgZnVuY3Rpb25zCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoKTsK
LSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVh
bCB2b2lkIGFkZFNlYXJjaFJlc3VsdCgpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xhYmVsc05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmgK
aW5kZXggYjg1MWEzMS4uYTExOWQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9M
YWJlbHNOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3Qu
aApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExhYmVsc05v
ZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExpdmVOb2RlTGlzdDxMYWJlbHNOb2RlTGlzdD4g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPExhYmVsc05vZGVMaXN0PiBjcmVhdGUoTGFi
ZWxhYmxlRWxlbWVudCYgZm9yTm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJikKKyAgICBzdGF0aWMg
UmVmPExhYmVsc05vZGVMaXN0PiBjcmVhdGUoTGFiZWxhYmxlRWxlbWVudCYgZm9yTm9kZSwgY29u
c3QgQXRvbWljU3RyaW5nJikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExh
YmVsc05vZGVMaXN0KGZvck5vZGUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhZGlvTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlz
dC5oCmluZGV4IDhiY2YwMmIuLjNmY2M5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUmFkaW9Ob2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlz
dC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFkaW9O
b2RlTGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxpc3Q8UmFkaW9Ob2RlTGlzdD4g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFJhZGlvTm9kZUxpc3Q+IGNyZWF0ZShDb250
YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorICAgIHN0YXRp
YyBSZWY8UmFkaW9Ob2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSYWRpb05vZGVMaXN0KHJvb3ROb2RlLCBuYW1lKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCA5NmIxOGNkLi44ODEyNzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIEhUTUxFbGVtZW50
KiBSYW5nZUlucHV0VHlwZTo6c2xpZGVyVGh1bWJFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4g
JnR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSYW5nZUlucHV0VHlwZTo6Y3JlYXRl
SW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlclNsaWRlcj4oZWxlbWVudCgpLCBXVEY6Om1vdmUoc3R5bGUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAppbmRleCBlN2I1ZTExLi45ZDkxNTM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCkBAIC01NCw3ICs1NCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQq
KSBvdmVycmlkZTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQo
S2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
U2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgRGVjaW1hbCBwYXJzZVRvTnVt
YmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCmluZGV4IGZhNjhiMjQuLmVkMTI3
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKQEAgLTc2LDcgKzc2
LDcgQEAgdm9pZCBTZWFyY2hJbnB1dFR5cGU6Om1heFJlc3VsdHNBdHRyaWJ1dGVDaGFuZ2VkKCkK
ICAgICAgICAgdXBkYXRlUmVzdWx0QnV0dG9uUHNldWRvVHlwZSgqbV9yZXN1bHRzQnV0dG9uLCBl
bGVtZW50KCkubWF4UmVzdWx0cygpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNl
YXJjaElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZUlu
cHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJTZWFyY2hGaWVsZD4oZWxlbWVudCgpLCBXVEY6Om1vdmUoc3R5bGUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCmluZGV4IDE1ZGRmOTIuLjBk
NzM4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaApAQCAtNDgsNyArNDgs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhZGRTZWFyY2hSZXN1bHQo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbWF4UmVzdWx0c0F0dHJpYnV0ZUNoYW5nZWQo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJ
bnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1D
b250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZp
ZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGFpbmVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5j
cHAKaW5kZXggZTdiYzI4Yi4uYmZlM2Y0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRU
eXBlOjpzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50KiBldmVudCkKICAgICAgICAgfHwgSW5w
dXRUeXBlOjpzaG91bGRTdWJtaXRJbXBsaWNpdGx5KGV2ZW50KTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Rmll
bGRJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmU+KGVsZW1lbnQoKSwgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0RmllbGRJbnB1dFR5cGUuaAppbmRleCA0ZjBlNmY2Li4zN2NkM2QzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoQmVmb3JlVGV4
dEluc2VydGVkRXZlbnQqKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZm9yd2Fy
ZEV2ZW50KEV2ZW50Kikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN1
Ym1pdEltcGxpY2l0bHkoRXZlbnQqKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgIVBMQVRG
T1JNKElPUykKICAgICB2aXJ0dWFsIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGV0YWlsc01hcmtlckNvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0
YWlsc01hcmtlckNvbnRyb2wuY3BwCmluZGV4IDVlM2FiZDIuLjM3ZmE0M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgRGV0YWlsc01hcmtlckNvbnRyb2w6OkRldGFpbHNNYXJrZXJDb250cm9s
KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBzZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0
LWRldGFpbHMtbWFya2VyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwog
fQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRGV0YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyRGV0YWlsc01hcmtlcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgKaW5kZXgg
MzZlYTU2Zi4uODFjZjFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGV0YWlsc01hcmtlckNvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9E
ZXRhaWxzTWFya2VyQ29udHJvbC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgRGV0YWlsc01hcmtlckNvbnRyb2woRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRl
clN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlk
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAppbmRleCBjMDM0MTQxLi4yZDMzYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0zMTAsNyAr
MzEwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OnNldFRp
bWVEaXNwbGF5c0hpZGRlbihib29sIGhpZGRlbikKICAgICB9CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyPigqdGhpcywg
V1RGOjptb3ZlKHN0eWxlKSk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb24KICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI+
KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KQEAgLTEwODgsNyArMTA4OCw3IEBAIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyCiAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOwogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1l
bnQ+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IGU0NTJjMzIuLjM5Yzk5OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7CiAKLSAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJy
aWRlOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTI4LDcgKzEy
OCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KQEAgLTQ1Niw3ICs0NTYsNyBAQCBwcml2YXRlOgogCiAgICAgZXhwbGljaXQg
TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYpOwogCi0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gY3JlYXRlVGV4dFRyYWNrUmVw
cmVzZW50YXRpb25JbWFnZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbkJvdW5kc0NoYW5nZWQoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKaW5k
ZXggNmVjNGU1NS4uNDBiZGUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgTWV0ZXJJbm5l
ckVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAg
IHJldHVybiByZW5kZXIgJiYgIXJlbmRlci0+dGhlbWUoKS5zdXBwb3J0c01ldGVyKHJlbmRlci0+
c3R5bGUoKS5hcHBlYXJhbmNlKCkpICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KHN0eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1ldGVySW5uZXJFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gTWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlck1ldGVyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oCmluZGV4IGQxYjBlNzgu
LmU3ZDVlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hh
ZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93
RWxlbWVudC5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgTWV0ZXJJbm5lckVsZW1l
bnQoRG9jdW1lbnQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIH07CiAKIGlubGluZSBQYXNzUmVm
UHRyPE1ldGVySW5uZXJFbGVtZW50PiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dy
ZXNzU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVz
c1NoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDkwNDE3ZjEuLjMyOWVmNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcApAQCAt
NjAsNyArNjAsNyBAQCBQcm9ncmVzc0lubmVyRWxlbWVudDo6UHJvZ3Jlc3NJbm5lckVsZW1lbnQo
RG9jdW1lbnQmIGRvY3VtZW50KQogewogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUHJv
Z3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBQcm9ncmVzc0lubmVyRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyUHJvZ3Jlc3M+KCp0aGlzLCBXVEY6Om1vdmUo
c3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dy
ZXNzU2hhZG93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NT
aGFkb3dFbGVtZW50LmgKaW5kZXggMThkYmM5OS4uMzQwMWZkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQcm9ncmVzc0lubmVyRWxlbWVudChEb2N1bWVu
dCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggNDgzZmFlNS4uYTlkYjQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGlubGluZSBzdGF0aWMgYm9vbCBoYXNWZXJ0aWNhbEFwcGVh
cmFuY2UoSFRNTElucHV0RWxlbWVudCogaW5wdXQpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLVJlbmRlclNsaWRlclRodW1iOjpSZW5kZXJTbGlkZXJUaHVtYihTbGlk
ZXJUaHVtYkVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyU2xpZGVyVGh1bWI6OlJlbmRlclNsaWRlclRodW1iKFNsaWRlclRodW1iRWxlbWVudCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVt
ZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wgUmVu
ZGVyU2xpZGVyVGh1bWI6OmlzU2xpZGVyVGh1bWIoKSBjb25zdAogLy8gaHR0cDovL3dlYmtpdC5v
cmcvYi82MjUzNQogY2xhc3MgUmVuZGVyU2xpZGVyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJl
bmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTbGlkZXJDb250YWluZXIoU2xp
ZGVyQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CisgICAgUmVuZGVyU2xpZGVyQ29udGFpbmVyKFNsaWRlckNvbnRhaW5lckVsZW1lbnQmIGVsZW1l
bnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgICAgIDogUmVuZGVyRmxleGlibGVCb3go
ZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICB7CiAgICAgfQpAQCAtMjE0LDcgKzIxNCw3
IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21WYWx1ZSgpCiAgICAg
ICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJUaHVt
YkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNsaWRlclRodW1iPigqdGhpcywg
V1RGOjptb3ZlKHN0eWxlKSk7CiB9CkBAIC02MTUsNyArNjE1LDcgQEAgUGFzc1JlZlB0cjxTbGlk
ZXJDb250YWluZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3UKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNsaWRlckNvbnRhaW5lckVsZW1lbnQo
ZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNsaWRlckNvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTbGlkZXJDb250YWluZXI+KCp0aGlzLCBXVEY6Om1vdmUo
c3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmgKaW5kZXggZjNlZWQzMi4uNDBhYzBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBTbGlkZXJUaHVtYkVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJp
YnV0ZXNBbmRDaGlsZHJlbigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlc1Jl
YWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMTYsNyArMTE2LDcgQEAg
aW5saW5lIFBhc3NSZWZQdHI8U2xpZGVyVGh1bWJFbGVtZW50PiBTbGlkZXJUaHVtYkVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW0KIAogY2xhc3MgUmVuZGVyU2xpZGVyVGh1bWIgZmluYWwg
OiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTbGlkZXJUaHVt
YihTbGlkZXJUaHVtYkVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
U2xpZGVyVGh1bWIoU2xpZGVyVGh1bWJFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAg
dm9pZCB1cGRhdGVBcHBlYXJhbmNlKFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7CiAKIHByaXZh
dGU6CkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNsaWRlckNv
bnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAKaW5kZXggYzcyN2Q3ZC4uZDNkYjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC01Niw3
ICs1Niw3IEBAIFBhc3NSZWZQdHI8VGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcj4gVGV4dENvbnRy
b2xJbm5lckNvbnRhaW5lcjo6Y3JlYXRlKERvY3VtZW50CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKGRvY3VtZW50KSk7CiB9CiAgICAgCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcjo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFRleHRDb250cm9sSW5uZXJDb250YWluZXI6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsK
IH0KQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIEhUTUxEaXZFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGV4dENv
bnRyb2xJbm5lckJsb2NrPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCmlu
ZGV4IGQzOWNkYjcuLmIyNDc1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC0zOSw3ICszOSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0Q29udHJvbElubmVyQ29udGFpbmVyPiBjcmVh
dGUoRG9jdW1lbnQmKTsKIHByb3RlY3RlZDoKICAgICBUZXh0Q29udHJvbElubmVyQ29udGFpbmVy
KERvY3VtZW50Jik7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKQEAgLTY0LDcgKzY0LDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChEb2N1bWVu
dCYpOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHls
ZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0
eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1h
Yy5jcHAKaW5kZXggYTM1YTc2OS4uNDZmZWUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRN
YWMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVu
ZGVySW1hZ2VDb250cm9sc0J1dHRvbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewog
cHVibGljOgotICAgIFJlbmRlckltYWdlQ29udHJvbHNCdXR0b24oSFRNTEVsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbihIVE1MRWxl
bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlckltYWdlQ29udHJv
bHNCdXR0b24oKTsKIAogcHJpdmF0ZToKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotUmVuZGVySW1hZ2VDb250cm9sc0J1dHRv
bjo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbihIVE1MRWxlbWVudCYgZWxlbWVudCwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjpSZW5kZXJJ
bWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CiB7CiB9CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVu
dE1hYzo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgSFRNTERpdkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJ
bWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
SW1hZ2VDb250cm9sc0J1dHRvbj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25F
bGVtZW50TWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9s
c0J1dHRvbkVsZW1lbnRNYWMuaAppbmRleCA1OTgzYTIwLi41M2Q3MmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRN
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1
dHRvbkVsZW1lbnRNYWMuaApAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIEltYWdlQ29u
dHJvbHNCdXR0b25FbGVtZW50TWFjKERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
Pikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCmluZGV4IGQ5NjQ4
MTMuLmY0MzliZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9J
bWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVySW1hZ2VDb250cm9scyBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlckltYWdlQ29u
dHJvbHMoSFRNTEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVySW1h
Z2VDb250cm9scyhIVE1MRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwg
flJlbmRlckltYWdlQ29udHJvbHMoKTsKIAogcHJpdmF0ZToKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotUmVuZGVySW1hZ2VD
b250cm9sczo6UmVuZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYgZWxlbWVudCwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJJbWFnZUNvbnRyb2xzOjpSZW5kZXJJbWFnZUNv
bnRyb2xzKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAg
IDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CkBAIC0x
MDIsNyArMTAyLDcgQEAgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjp+SW1hZ2VDb250cm9s
c1Jvb3RFbGVtZW50TWFjKCkKIHsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdl
Q29udHJvbHNSb290RWxlbWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlQ29udHJvbHNS
b290RWxlbWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBz
dHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1hZ2VDb250cm9scz4o
KnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCmluZGV4
IDY4ZDJmY2IuLjYwZWM1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmgKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMo
RG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggMzgyNmYzZC4uYTY2MDE1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgVlRUQ3VlQm94Ojp2dHRDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpCiAgICAg
cmV0dXJuIHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gVlRUQ3VlQm94OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVlRUQ3VlQm94OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJWVFRDdWU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCmluZGV4IDc2MTNmZDQuLmNjMWRmYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiBw
cm90ZWN0ZWQ6CiAgICAgVlRUQ3VlQm94KERvY3VtZW50JiwgVlRUQ3VlJik7CiAKLSAgICB2aXJ0
dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92
ZXJyaWRlIGZpbmFsOwogCiAgICAgVlRUQ3VlJiBtX2N1ZTsKICAgICBpbnQgbV9mb250U2l6ZUZy
b21DYXB0aW9uVXNlclByZWZzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGUzNzAxMzguLjFmNDVkNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAK
QEAgLTE3MCw3ICsxNzAsNyBAQCBQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6cmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQoY29ucwogICAgIHJldHVybiBt
X3BhcnNlZFN0eWxlU2hlZXRDYWNoZTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0Ojpz
YXZlUGFyc2VkU3R5bGVTaGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gc2hlZXQpCit2
b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNhdmVQYXJzZWRTdHlsZVNoZWV0KFJlZjxTdHlsZVNo
ZWV0Q29udGVudHM+JiYgc2hlZXQpCiB7CiAgICAgQVNTRVJUKHNoZWV0LmdldCgpLmlzQ2FjaGVh
YmxlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaAppbmRleCA5NDBmZDFmLi5iYTA3ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJpbmcgc2hlZXRUZXh0KGJvb2wg
ZW5mb3JjZU1JTUVUeXBlID0gdHJ1ZSwgYm9vbCogaGFzVmFsaWRNSU1FVHlwZSA9IDApIGNvbnN0
OwogCiAgICAgICAgIFBhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiByZXN0b3JlUGFyc2Vk
U3R5bGVTaGVldChjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7Ci0gICAgICAgIHZvaWQgc2F2ZVBh
cnNlZFN0eWxlU2hlZXQoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+KTsKKyAgICAgICAgdm9p
ZCBzYXZlUGFyc2VkU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIGJvb2wgY2FuVXNlU2hlZXQoYm9vbCBlbmZvcmNlTUlNRVR5cGUs
IGJvb2wqIGhhc1ZhbGlkTUlNRVR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCAzYzBlYTU1Li5lYmUzZTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaApAQCAtNjgsNyArNjgsNyBAQCBmcmllbmQgY2xhc3MgSW1hZ2VMb2FkZXI7CiBmcmll
bmQgY2xhc3MgUmVzb3VyY2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yOwogCiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShEb2N1bWVudExv
YWRlciogZG9jdW1lbnRMb2FkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoZG9jdW1lbnRMb2FkZXIpKTsgfQorICAgIHN0YXRpYyBSZWY8Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI+IGNyZWF0ZShEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ2FjaGVkUmVzb3VyY2VMb2FkZXIoZG9jdW1lbnRMb2FkZXIpKTsgfQog
ICAgIH5DYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkSW1hZ2U+IHJlcXVlc3RJbWFnZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcAppbmRleCBiZGI2YmY2Li5kOGRmNGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIHZvaWQgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgTWF0aE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNoYW5nZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICBpZiAoaGFzVGFnTmFtZShhbm5vdGF0aW9uX3htbFRhZykpCiAgICAgICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxSb3c+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudC5oCmluZGV4IDM2MzZhYWIuLjcwOWZlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaApAQCAtNDMsNyArNDMs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCmluZGV4IDM3OWEyZmYuLjM1MDQyZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBQYXNzUmVmUHRyPE1hdGhNTE1hdGhFbGVtZW50PiBNYXRoTUxNYXRoRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZwogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TWF0aE1MTWF0aEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IE1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1M
TWF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE1hdGg+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxNYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhF
bGVtZW50LmgKaW5kZXggMmIxMjk0My4uOWFmMjU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTE1hdGhFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBNYXRoTUxNYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmKSBvdmVycmlkZTsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCmluZGV4IGQ1OTdlNGEuLmM3NTVkNzEgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIFBhc3NSZWZQdHI8TWF0aE1MTWVuY2xvc2VFbGVtZW50PiBNYXRoTUxN
ZW5jbG9zZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNYXRoTUxNZW5jbG9zZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAot
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTE1lbmNsb3NlRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IE1hdGhNTE1lbmNsb3NlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsgICAgCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlck1hdGhNTE1lbmNsb3NlPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgKaW5kZXggZWU5NzMz
NS4uMjJhMzNjZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNs
b3NlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVs
ZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWF0aE1M
TWVuY2xvc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxl
Rm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDVmZmE4NWMuLjZkNTI5NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgUGFzc1JlZlB0cjxNYXRoTUxTZWxlY3RFbGVtZW50PiBNYXRoTUxTZWxl
Y3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1hdGhNTFNlbGVjdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBNYXRoTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRo
TUxSb3c+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IDAzYTg1MzQuLjM1NDAwZmViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmgKQEAgLTQwLDcgKzQwLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1hdGhNTFNlbGVjdEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4p
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAppbmRl
eCA1MDMxMmIzLi40NTZjODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MVGV4dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0
RWxlbWVudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBNYXRoTUxUZXh0RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAg
ICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IE1hdGhNTFRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlKQogewogICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptb1RhZykpCiAg
ICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4oKnRoaXMs
IFdURjo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFRleHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1l
bnQuaAppbmRleCBiZWQ3NTkwLi5jNjg0MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MVGV4dEVsZW1lbnQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IE1hdGhNTFRleHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IGMzNjAxYzguLjE2Mjc4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTY0OSw3ICsx
NjQ5LDcgQEAgdm9pZCBQYWdlOjpzZXRVc2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRD
b250cm9sbGVyKiB1c2VyQ29udGVudENvbnRyb2xsZXIKICAgICB9CiB9CiAKLXZvaWQgUGFnZTo6
c2V0U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKFBhc3NSZWY8U3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyPiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpCit2b2lkIFBhZ2U6OnNldFN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcihSZWY8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiYmIHN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcikKIHsKICAgICBpZiAobV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpCiAg
ICAgICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLT5yZW1vdmVQYWdlKCp0aGlzKTsKQEAg
LTE2NjUsNyArMTY2NSw3IEBAIFZpc2l0ZWRMaW5rU3RvcmUmIFBhZ2U6OnZpc2l0ZWRMaW5rU3Rv
cmUoKQogICAgIHJldHVybiBtX3Zpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLXZvaWQgUGFnZTo6c2V0
VmlzaXRlZExpbmtTdG9yZShQYXNzUmVmPFZpc2l0ZWRMaW5rU3RvcmU+IHZpc2l0ZWRMaW5rU3Rv
cmUpCit2b2lkIFBhZ2U6OnNldFZpc2l0ZWRMaW5rU3RvcmUoUmVmPFZpc2l0ZWRMaW5rU3RvcmU+
JiYgdmlzaXRlZExpbmtTdG9yZSkKIHsKICAgICBtX3Zpc2l0ZWRMaW5rU3RvcmUtPnJlbW92ZVBh
Z2UoKnRoaXMpOwogICAgIG1fdmlzaXRlZExpbmtTdG9yZSA9IFdURjo6bW92ZSh2aXNpdGVkTGlu
a1N0b3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggOWFjYzQ4OS4uZmQ3MWM0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKQEAgLTQwMywxMyArNDAzLDEzIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsYXN0U3BhdGlh
bE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFNwYXRpYWxO
YXZpZ2F0aW9uQ2FuZGlkYXRlc0NvdW50OyB9CiAKICAgICBTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIqIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpIHsgcmV0dXJuIG1fc3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIo
UGFzc1JlZjxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+KTsKKyAgICB2b2lkIHNldFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcihSZWY8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiYmKTsKIAogICAg
IFVzZXJDb250ZW50Q29udHJvbGxlciogdXNlckNvbnRlbnRDb250cm9sbGVyKCkgeyByZXR1cm4g
bV91c2VyQ29udGVudENvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldFVzZXJDb250ZW50
Q29udHJvbGxlcihVc2VyQ29udGVudENvbnRyb2xsZXIqKTsKIAogICAgIFZpc2l0ZWRMaW5rU3Rv
cmUmIHZpc2l0ZWRMaW5rU3RvcmUoKTsKLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rU3RvcmUoUGFz
c1JlZjxWaXNpdGVkTGlua1N0b3JlPik7CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1N0b3JlKFJl
ZjxWaXNpdGVkTGlua1N0b3JlPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNlc3Npb25JRCBz
ZXNzaW9uSUQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlc3Npb25JRChT
ZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXgg
MGZjNDg5Yy4uYjJjZGZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxl
ci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVXNlck1l
c3NhZ2VIYW5kbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyPiwgcHVi
bGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWY8VXNlck1lc3NhZ2VIYW5kbGVyPiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorICAgIHN0YXRpYyBSZWY8VXNlck1lc3NhZ2VI
YW5kbGVyPiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlck1l
c3NhZ2VIYW5kbGVyKGZyYW1lLCBkZXNjcmlwdG9yKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaAppbmRleCA4MThmMTU1
Li4zNmY5YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBET01XcmFwcGVyV29ybGQ7
CiAKIGNsYXNzIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlPiwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8VXNlck1lc3NhZ2VIYW5kbGVy
c05hbWVzcGFjZT4gY3JlYXRlKEZyYW1lJiBmcmFtZSkKKyAgICBzdGF0aWMgUmVmPFVzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2U+IGNyZWF0ZShGcmFtZSYgZnJhbWUpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlKGZyYW1l
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25Db250cm9sbGVyLmNwcAppbmRleCA3M2JhMzYxLi4xMjk4YWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApA
QCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmFkZEV2
ZW50VG9EaXNwYXRjaChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsCiAgICAgc3RhcnRVcGRh
dGVTdHlsZUlmTmVlZGVkRGlzcGF0Y2hlcigpOwogfQogCi12b2lkIEFuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlOjphZGRFbGVtZW50Q2hhbmdlVG9EaXNwYXRjaChQYXNzUmVmPEVsZW1lbnQ+IGVs
ZW1lbnQpCit2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjphZGRFbGVtZW50Q2hhbmdl
VG9EaXNwYXRjaChSZWY8RWxlbWVudD4mJiBlbGVtZW50KQogewogICAgIG1fZWxlbWVudENoYW5n
ZXNUb0Rpc3BhdGNoLmFwcGVuZChXVEY6Om1vdmUoZWxlbWVudCkpOwogICAgIEFTU0VSVCghbV9l
bGVtZW50Q2hhbmdlc1RvRGlzcGF0Y2gubGFzdCgpLT5kb2N1bWVudCgpLmluUGFnZUNhY2hlKCkp
OwpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsQW5p
bWF0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKICAgICAgICAgZWxlbWVudC0+c2V0TmVl
ZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CiB9CiAKLVBhc3NSZWY8UmVuZGVy
U3R5bGU+IEFuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IG5ld1N0eWxlKQorUmVmPFJlbmRlclN0
eWxlPiBBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBSZWY8UmVuZGVyU3R5bGU+IG5ld1N0eWxlKQogewogICAgIC8vIERvbid0IGRv
IGFueXRoaW5nIGlmIHdlJ3JlIGluIHRoZSBjYWNoZQogICAgIGlmIChyZW5kZXJlci5kb2N1bWVu
dCgpLmluUGFnZUNhY2hlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25Db250cm9sbGVyLmgKaW5kZXggNDVhYmQyNS4uZTdjOTY3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaApA
QCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgfkFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKIAog
ICAgIHZvaWQgY2FuY2VsQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50Jik7Ci0gICAgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gdXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gbmV3U3R5bGUpOworICAgIFJlZjxSZW5kZXJTdHlsZT4gdXBkYXRlQW5pbWF0aW9u
cyhSZW5kZXJFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiBuZXdTdHlsZSk7CiAgICAgUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gZ2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKFJlbmRlckVsZW1l
bnQmKTsKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gYW4gYWNjZWxlcmF0ZWQgYW5pbWF0
aW9uIG9yIHRyYW5zaXRpb24gaGFzIGFjdHVhbGx5IHN0YXJ0ZWQgdG8gYW5pbWF0ZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZS5oCmluZGV4IGVmMWVkZDMuLmRiMDIxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUu
aApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTdHlsZUlmTmVlZGVk
RGlzcGF0Y2hlckZpcmVkKCk7CiAgICAgdm9pZCBzdGFydFVwZGF0ZVN0eWxlSWZOZWVkZWREaXNw
YXRjaGVyKCk7CiAgICAgdm9pZCBhZGRFdmVudFRvRGlzcGF0Y2goUGFzc1JlZlB0cjxFbGVtZW50
PiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBkb3VibGUgZWxhcHNlZFRpbWUpOwotICAgIHZvaWQgYWRkRWxlbWVudENoYW5nZVRvRGlz
cGF0Y2goUGFzc1JlZjxFbGVtZW50Pik7CisgICAgdm9pZCBhZGRFbGVtZW50Q2hhbmdlVG9EaXNw
YXRjaChSZWY8RWxlbWVudD4mJik7CiAKICAgICBib29sIGhhc0FuaW1hdGlvbnMoKSBjb25zdCB7
IHJldHVybiAhbV9jb21wb3NpdGVBbmltYXRpb25zLmlzRW1wdHkoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAppbmRl
eCBkZDU1YzI4Li43ZmY3ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIENv
bXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBSZW5kZQogICAgICAgICBtX2tleWZyYW1lQW5pbWF0aW9ucy5yZW1vdmUoYW5p
bXNUb0JlUmVtb3ZlZFtqXSk7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IENvbXBvc2l0ZUFu
aW1hdGlvbjo6YW5pbWF0ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUmVuZGVyU3R5bGUqIGN1
cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlKQorUmVmPFJlbmRlclN0eWxlPiBD
b21wb3NpdGVBbmltYXRpb246OmFuaW1hdGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFJlbmRl
clN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKIHsKICAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IHJlc3VsdFN0eWxlOwogCkBAIC0zMjIsNyArMzIyLDkgQEAgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gQ29tcG9zaXRlQW5pbWF0aW9uOjphbmltYXRlKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBSZW5kZXIKICAgICAgICAgICAgIGtleWZyYW1lQW5pbS0+YW5pbWF0ZSh0
aGlzLCAmcmVuZGVyZXIsIGN1cnJlbnRTdHlsZSwgJnRhcmdldFN0eWxlLCByZXN1bHRTdHlsZSk7
CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdFN0eWxlID8gcmVzdWx0U3R5bGUucmVsZWFzZU5v
bk51bGwoKSA6IHRhcmdldFN0eWxlOworICAgIGlmIChyZXN1bHRTdHlsZSkKKyAgICAgICAgcmV0
dXJuIHJlc3VsdFN0eWxlLnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJuIHRhcmdldFN0eWxl
OwogfQogCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDb21wb3NpdGVBbmltYXRpb246OmdldEFu
aW1hdGVkU3R5bGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9Db21wb3NpdGVBbmltYXRpb24uaAppbmRleCAyY2ExMzgwLi4xYzE0M2FhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaApAQCAt
NTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjbGVhclJlbmRlcmVyKCk7CiAK
LSAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBhbmltYXRlKFJlbmRlckVsZW1lbnQmLCBSZW5kZXJT
dHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUpOworICAgIFJlZjxS
ZW5kZXJTdHlsZT4gYW5pbWF0ZShSZW5kZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUqIGN1cnJlbnRT
dHlsZSwgUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlKTsKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBnZXRBbmltYXRlZFN0eWxlKCkgY29uc3Q7CiAKICAgICBkb3VibGUgdGltZVRvTmV4dFNl
cnZpY2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1
bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1
ZS5jcHAKaW5kZXggYjlkZmNhNi4uNjRjMGNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmPENhbGN1bGF0aW9uVmFsdWU+IENhbGN1bGF0aW9uVmFsdWU6OmNy
ZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRp
b25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQorUmVmPENhbGN1bGF0aW9uVmFsdWU+IENhbGN1
bGF0aW9uVmFsdWU6OmNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB2
YWx1ZSwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENhbGN1bGF0aW9uVmFsdWUoV1RGOjptb3ZlKHZhbHVlKSwgcmFuZ2Up
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCA0
NDhhMzVhLi5iMjI4YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxj
dWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25W
YWx1ZS5oCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ2FsY3VsYXRpb25W
YWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGN1bGF0aW9uVmFsdWU+IHsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZjxDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGUo
c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4sIENhbGN1bGF0aW9uUGVybWl0dGVk
VmFsdWVSYW5nZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxDYWxjdWxhdGlvblZh
bHVlPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4sIENhbGN1bGF0
aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CiAgICAgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFs
dWUpIGNvbnN0OwogCiAgICAgYm9vbCBzaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aC5jcHAKaW5kZXggNmQ1YTY1Yy4uNjJkMGI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGguY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZU1hcCB7CiBw
dWJsaWM6CiAgICAgQ2FsY3VsYXRpb25WYWx1ZU1hcCgpOwogCi0gICAgdW5zaWduZWQgaW5zZXJ0
KFBhc3NSZWY8Q2FsY3VsYXRpb25WYWx1ZT4pOworICAgIHVuc2lnbmVkIGluc2VydChSZWY8Q2Fs
Y3VsYXRpb25WYWx1ZT4mJik7CiAgICAgdm9pZCByZWYodW5zaWduZWQgaGFuZGxlKTsKICAgICB2
b2lkIGRlcmVmKHVuc2lnbmVkIGhhbmRsZSk7CiAKQEAgLTE5Miw3ICsxOTIsNyBAQCBpbmxpbmUg
Q2FsY3VsYXRpb25WYWx1ZU1hcDo6Q2FsY3VsYXRpb25WYWx1ZU1hcCgpCiB7CiB9CiAgICAgCi1p
bmxpbmUgdW5zaWduZWQgQ2FsY3VsYXRpb25WYWx1ZU1hcDo6aW5zZXJ0KFBhc3NSZWY8Q2FsY3Vs
YXRpb25WYWx1ZT4gdmFsdWUpCitpbmxpbmUgdW5zaWduZWQgQ2FsY3VsYXRpb25WYWx1ZU1hcDo6
aW5zZXJ0KFJlZjxDYWxjdWxhdGlvblZhbHVlPiYmIHZhbHVlKQogewogICAgIEFTU0VSVChtX25l
eHRBdmFpbGFibGVIYW5kbGUpOwogCkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIENhbGN1bGF0
aW9uVmFsdWVNYXAmIGNhbGN1bGF0aW9uVmFsdWVzKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1M
ZW5ndGg6Okxlbmd0aChQYXNzUmVmPENhbGN1bGF0aW9uVmFsdWU+IHZhbHVlKQorTGVuZ3RoOjpM
ZW5ndGgoUmVmPENhbGN1bGF0aW9uVmFsdWU+JiYgdmFsdWUpCiAgICAgOiBtX2hhc1F1aXJrKGZh
bHNlKQogICAgICwgbV90eXBlKENhbGN1bGF0ZWQpCiAgICAgLCBtX2lzRmxvYXQoZmFsc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xlbmd0aC5oCmluZGV4IGI0YzY4ZjguLjBhZTVkYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBMZW5ndGgoZmxv
YXQgdmFsdWUsIExlbmd0aFR5cGUsIGJvb2wgaGFzUXVpcmsgPSBmYWxzZSk7CiAgICAgTGVuZ3Ro
KGRvdWJsZSB2YWx1ZSwgTGVuZ3RoVHlwZSwgYm9vbCBoYXNRdWlyayA9IGZhbHNlKTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IExlbmd0aChQYXNzUmVmPENhbGN1bGF0aW9uVmFsdWU+
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBMZW5ndGgoUmVmPENhbGN1bGF0aW9uVmFs
dWU+JiYpOwogCiAgICAgTGVuZ3RoKGNvbnN0IExlbmd0aCYpOwogICAgIExlbmd0aChMZW5ndGgm
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDM5MjMw
YzguLjNhZTlmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVsZXRlT3duZWRQdHI8V2ViQ29y
ZTo6VGV4dExheW91dD4oV2ViQ29yZTo6VGV4dExheW91dCogcHRyKQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBQYXNzUmVmPEZvbnRHbHlwaHM+IHJldHJpZXZlT3JBZGRDYWNoZWRG
b250R2x5cGhzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9y
Pik7CitzdGF0aWMgUmVmPEZvbnRHbHlwaHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250R2x5cGhz
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPik7CiAKIGNv
bnN0IHVpbnQ4X3QgRm9udDo6c19yb3VuZGluZ0hhY2tDaGFyYWN0ZXJUYWJsZVsyNTZdID0gewog
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEgLypcdCovLCAxIC8qXG4qLywgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
QEAgLTIxNSw3ICsyMTUsNyBAQCBzdHJ1Y3QgRm9udEdseXBoc0NhY2hlS2V5IHsKIHN0cnVjdCBG
b250R2x5cGhzQ2FjaGVFbnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgRm9udEdseXBoc0NhY2hlRW50cnkoRm9udEdseXBoc0NhY2hlS2V5JiYgaywgUGFz
c1JlZjxGb250R2x5cGhzPiBnKSA6IGtleShXVEY6Om1vdmUoaykpLCBnbHlwaHMoV1RGOjptb3Zl
KGcpKSB7IH0KKyAgICBGb250R2x5cGhzQ2FjaGVFbnRyeShGb250R2x5cGhzQ2FjaGVLZXkmJiBr
LCBSZWY8Rm9udEdseXBocz4gZykgOiBrZXkoV1RGOjptb3ZlKGspKSwgZ2x5cGhzKFdURjo6bW92
ZShnKSkgeyB9CiAgICAgRm9udEdseXBoc0NhY2hlS2V5IGtleTsKICAgICBSZWY8Rm9udEdseXBo
cz4gZ2x5cGhzOwogfTsKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIHBydW5lVW5yZWZlcmVuY2Vk
RW50cmllc0Zyb21Gb250R2x5cGhzQ2FjaGUoKQogICAgICAgICBmb250R2x5cGhzQ2FjaGUoKS5y
ZW1vdmUodG9SZW1vdmVbaV0pOwogfQogCi1zdGF0aWMgUGFzc1JlZjxGb250R2x5cGhzPiByZXRy
aWV2ZU9yQWRkQ2FjaGVkRm9udEdseXBocyhjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgUGFzc1JlZlB0cjxGb250U2VsZWN0b3I+IGZvbnRTZWxlY3RvcikKK3N0YXRpYyBS
ZWY8Rm9udEdseXBocz4gcmV0cmlldmVPckFkZENhY2hlZEZvbnRHbHlwaHMoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPiBmb250
U2VsZWN0b3IpCiB7CiAgICAgRm9udEdseXBoc0NhY2hlS2V5IGtleTsKICAgICBtYWtlRm9udEds
eXBoc0NhY2hlS2V5KGtleSwgZm9udERlc2NyaXB0aW9uLCBmb250U2VsZWN0b3IuZ2V0KCkpOwpA
QCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBQYXNzUmVmPEZvbnRHbHlwaHM+IHJldHJpZXZlT3JB
ZGRDYWNoZWRGb250R2x5cGhzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGb250R2x5cGhzQ2FjaGVFbnRyeT4mIG5ld0VudHJ5ID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKICAgICBuZXdFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udEdseXBoc0Nh
Y2hlRW50cnk+KFdURjo6bW92ZShrZXkpLCBGb250R2x5cGhzOjpjcmVhdGUoZm9udFNlbGVjdG9y
KSk7Ci0gICAgUGFzc1JlZjxGb250R2x5cGhzPiBnbHlwaHMgPSBuZXdFbnRyeS0+Z2x5cGhzLmdl
dCgpOworICAgIFJlZjxGb250R2x5cGhzPiBnbHlwaHMgPSBuZXdFbnRyeS0+Z2x5cGhzLmdldCgp
OwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2YWwg
PSA1MDsKICAgICBzdGF0aWMgY29uc3QgaW50IG1heGltdW1FbnRyaWVzID0gNDAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5oCmluZGV4IDExZDNhOWMu
LmVkOWU3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRHbHlwaHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5
cGhzLmgKQEAgLTY4LDggKzY4LDggQEAgcHVibGljOgogICAgICAgICBHbHlwaFBhZ2VUcmVlTm9k
ZSogbV9wYWdlWmVybzsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWY8Rm9udEdseXBocz4g
Y3JlYXRlKFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRm9udEdseXBocyhmb250U2VsZWN0b3IpKTsgfQotICAgIHN0YXRpYyBQYXNz
UmVmPEZvbnRHbHlwaHM+IGNyZWF0ZUZvclBsYXRmb3JtRm9udChjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udEdseXBocyhwbGF0
Zm9ybURhdGEpKTsgfQorICAgIHN0YXRpYyBSZWY8Rm9udEdseXBocz4gY3JlYXRlKFBhc3NSZWZQ
dHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9u
dEdseXBocyhmb250U2VsZWN0b3IpKTsgfQorICAgIHN0YXRpYyBSZWY8Rm9udEdseXBocz4gY3Jl
YXRlRm9yUGxhdGZvcm1Gb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250R2x5cGhzKHBsYXRmb3JtRGF0YSkpOyB9CiAKICAg
ICB+Rm9udEdseXBocygpIHsgcmVsZWFzZUZvbnREYXRhKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKaW5kZXggNDg0ZDYwNC4uYTQyMTM0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCkBAIC01NywxMSAr
NTcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgR3JhZGllbnQgOiBwdWJs
aWMgUmVmQ291bnRlZDxHcmFkaWVudD4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NSZWY8R3JhZGllbnQ+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQ
b2ludCYgcDEpCisgICAgICAgIHN0YXRpYyBSZWY8R3JhZGllbnQ+IGNyZWF0ZShjb25zdCBGbG9h
dFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEdyYWRpZW50KHAwLCBwMSkpOwogICAgICAgICB9Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmPEdyYWRpZW50PiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgcDAs
IGZsb2F0IHIwLCBjb25zdCBGbG9hdFBvaW50JiBwMSwgZmxvYXQgcjEsIGZsb2F0IGFzcGVjdFJh
dGlvID0gMSkKKyAgICAgICAgc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZsb2F0
UG9pbnQmIHAwLCBmbG9hdCByMCwgY29uc3QgRmxvYXRQb2ludCYgcDEsIGZsb2F0IHIxLCBmbG9h
dCBhc3BlY3RSYXRpbyA9IDEpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEdyYWRpZW50KHAwLCByMCwgcDEsIHIxLCBhc3BlY3RSYXRpbykpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAppbmRleCA3MzZiOGZkLi40NzQ5MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTMzNSwyNSArMzM1
LDI1IEBAIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBHcmFwaGljc0NvbnRleHQ6OnN0YXRl
KCkgY29uc3QKICAgICByZXR1cm4gbV9zdGF0ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFN0cm9rZVBhdHRlcm4oUGFzc1JlZjxQYXR0ZXJuPiBwYXR0ZXJuKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKIHsKICAg
ICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmNsZWFyKCk7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0
ZXJuID0gV1RGOjptb3ZlKHBhdHRlcm4pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
RmlsbFBhdHRlcm4oUGFzc1JlZjxQYXR0ZXJuPiBwYXR0ZXJuKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCiB7CiAgICAgbV9zdGF0
ZS5maWxsR3JhZGllbnQuY2xlYXIoKTsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gV1RGOjpt
b3ZlKHBhdHRlcm4pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGll
bnQoUGFzc1JlZjxHcmFkaWVudD4gZ3JhZGllbnQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50KQogewogICAgIG1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQgPSBXVEY6Om1vdmUoZ3JhZGllbnQpOwogICAgIG1fc3RhdGUuc3Ryb2tl
UGF0dGVybi5jbGVhcigpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRp
ZW50KFBhc3NSZWY8R3JhZGllbnQ+IGdyYWRpZW50KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQpCiB7CiAgICAgbV9zdGF0ZS5m
aWxsR3JhZGllbnQgPSBXVEY6Om1vdmUoZ3JhZGllbnQpOwogICAgIG1fc3RhdGUuZmlsbFBhdHRl
cm4uY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggMTNlM2E1ZC4uMGVmNGJlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTIzNCwxMCAr
MjM0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ29sb3JTcGFjZSBzdHJva2VD
b2xvclNwYWNlKCkgY29uc3Q7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tl
Q29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAotICAgICAgICB2b2lkIHNldFN0cm9r
ZVBhdHRlcm4oUGFzc1JlZjxQYXR0ZXJuPik7CisgICAgICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVy
bihSZWY8UGF0dGVybj4mJik7CiAgICAgICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25z
dDsKIAotICAgICAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFBhc3NSZWY8R3JhZGllbnQ+KTsK
KyAgICAgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYpOwogICAgICAg
ICBHcmFkaWVudCogc3Ryb2tlR3JhZGllbnQoKSBjb25zdDsKIAogICAgICAgICBXaW5kUnVsZSBm
aWxsUnVsZSgpIGNvbnN0OwpAQCAtMjQ2LDEwICsyNDYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlKCkgY29uc3Q7CiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7
CiAKLSAgICAgICAgdm9pZCBzZXRGaWxsUGF0dGVybihQYXNzUmVmPFBhdHRlcm4+KTsKKyAgICAg
ICAgdm9pZCBzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJik7CiAgICAgICAgIFBhdHRlcm4q
IGZpbGxQYXR0ZXJuKCkgY29uc3Q7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRG
aWxsR3JhZGllbnQoUGFzc1JlZjxHcmFkaWVudD4pOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYpOwogICAgICAgICBHcmFkaWVudCog
ZmlsbEdyYWRpZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJh
bnNmb3Jtcyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmgKaW5kZXggZjIwNTM4Yy4uYmI1Y2M1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3Vy
Y2VQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgTWVkaWFT
b3VyY2VQcml2YXRlQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTb3VyY2VQcml2YXRl
Q2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50
KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4oUGFzc1JlZjxNZWRp
YVNvdXJjZVByaXZhdGU+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVBbmRPcGVu
KFJlZjxNZWRpYVNvdXJjZVByaXZhdGU+JiYpID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBk
dXJhdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWVr
VG9UaW1lKGNvbnN0IE1lZGlhVGltZSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5jcHAKaW5kZXggOWUxMTRjNi4uYTlhY2NjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0
ZShQYXNzUmVmUHRyPEltYWdlPiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZ
KQorUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0ZShQYXNzUmVmUHRyPEltYWdlPiB0aWxlSW1h
Z2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFBhdHRlcm4odGlsZUltYWdlLCByZXBlYXRYLCByZXBlYXRZKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggZjQyNTI1ZC4uM2VkYWYyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtNTEsNyAr
NTEsNyBAQCBjbGFzcyBJbWFnZTsKIAogY2xhc3MgUGF0dGVybiBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFBhdHRlcm4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxQYXR0ZXJuPiBj
cmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVw
ZWF0WSk7CisgICAgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4g
dGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CiAgICAgflBhdHRlcm4oKTsK
IAogICAgIEltYWdlKiB0aWxlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5nZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaAppbmRleCA2NGVkNTQ2Li43OTI2
MmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbk1hYyA6IHB1YmxpYyBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoKTsK
LSAgICBzdGF0aWMgUGFzc1JlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gY3Jl
YXRlKGlkKTsKKyAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
PiBjcmVhdGUoaWQpOwogCiAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlND
OjpFeGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+IGRhdGEoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbk1hYy5tbQppbmRleCA4ZDYyYWI2Li5hNjc2MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uTWFjLm1tCkBAIC03MSw3ICs3MSw3IEBAIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uTWFjOjp+U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoKQogewog
fQogCi1QYXNzUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBTZXJpYWxpemVk
UGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6Y3JlYXRlKGlkIG5hdGl2ZVZhbHVlKQorUmVmPFNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbk1hYzo6Y3JlYXRlKGlkIG5hdGl2ZVZhbHVlKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKG5hdGl2ZVZhbHVlKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCmluZGV4
IGMxYjgyOTguLmI5MDkwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
bGlwUGF0aE9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0
aE9wZXJhdGlvbi5oCkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNoYXBlQ2xp
cFBhdGhPcGVyYXRpb24gZmluYWwgOiBwdWJsaWMgQ2xpcFBhdGhPcGVyYXRpb24gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0ZShQ
YXNzUmVmPEJhc2ljU2hhcGU+IHNoYXBlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXBlQ2xp
cFBhdGhPcGVyYXRpb24+IGNyZWF0ZShSZWY8QmFzaWNTaGFwZT4mJiBzaGFwZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbihXVEY6Om1v
dmUoc2hhcGUpKSk7CiAgICAgfQpAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiBtX3NoYXBlLnB0cigpID09IHNoYXBlQ2xpcC5tX3NoYXBlLnB0cigpOwogICAgIH0K
IAotICAgIGV4cGxpY2l0IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24oUGFzc1JlZjxCYXNpY1NoYXBl
PiBzaGFwZSkKKyAgICBleHBsaWNpdCBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKFJlZjxCYXNpY1No
YXBlPiYmIHNoYXBlKQogICAgICAgICA6IENsaXBQYXRoT3BlcmF0aW9uKFNoYXBlKQogICAgICAg
ICAsIG1fc2hhcGUoV1RGOjptb3ZlKHNoYXBlKSkKICAgICAgICAgLCBtX3JlZmVyZW5jZUJveChC
b3hNaXNzaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXgg
N2I0YTg0MS4uYzk5ZWNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC0xODEsNyArMTgxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFkVmVydGljYWxM
YXlvdXRPdmVyZmxvdzsKIH07CiAKLVJlbmRlckJsb2NrOjpSZW5kZXJCbG9jayhFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFn
cykKK1JlbmRlckJsb2NrOjpSZW5kZXJCbG9jayhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyQm94KGVs
ZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJCbG9ja0ZsYWcp
CiAgICAgLCBtX2xpbmVIZWlnaHQoLTEpCiAgICAgLCBtX2hhc01hcmdpbkJlZm9yZVF1aXJrKGZh
bHNlKQpAQCAtMTkyLDcgKzE5Miw3IEBAIFJlbmRlckJsb2NrOjpSZW5kZXJCbG9jayhFbGVtZW50
JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQKIHsKIH0KIAot
UmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJCbG9jazo6UmVu
ZGVyQmxvY2soRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNp
Z25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyQm94KGRvY3VtZW50LCBXVEY6Om1vdmUo
c3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyQmxvY2tGbGFnKQogICAgICwgbV9saW5lSGVp
Z2h0KC0xKQogICAgICwgbV9oYXNNYXJnaW5CZWZvcmVRdWlyayhmYWxzZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZjE4OWQ5ZC4uZDQyMzE1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgog
ICAgIGZyaWVuZCBjbGFzcyBMaW5lTGF5b3V0U3RhdGU7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5k
ZXJCbG9jayhFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBl
RmxhZ3MpOwotICAgIFJlbmRlckJsb2NrKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4s
IHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckJsb2NrKEVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCbG9jayhE
b2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOwogICAg
IHZpcnR1YWwgflJlbmRlckJsb2NrKCk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggODYzZjEyYi4uZTYyNWY2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTkxLDcgKzkx
LDcgQEAgUmVuZGVyQmxvY2tGbG93OjpNYXJnaW5JbmZvOjpNYXJnaW5JbmZvKFJlbmRlckJsb2Nr
RmxvdyYgYmxvY2ssIExheW91dFVuaXQgYmVmb3IKICAgICBtX25lZ2F0aXZlTWFyZ2luID0gKG1f
Y2FuQ29sbGFwc2VNYXJnaW5CZWZvcmVXaXRoQ2hpbGRyZW4gJiYgIWJsb2NrLm11c3REaXNjYXJk
TWFyZ2luQmVmb3JlKCkpID8gYmxvY2subWF4TmVnYXRpdmVNYXJnaW5CZWZvcmUoKSA6IExheW91
dFVuaXQoKTsKIH0KIAotUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3coRWxlbWVudCYg
ZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJCbG9ja0Zsb3c6OlJl
bmRlckJsb2NrRmxvdyhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQog
ICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgUmVuZGVyQmxvY2tG
bG93RmxhZykKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKICAgICAsIG1fd2lkdGhG
b3JUZXh0QXV0b3NpemluZygtMSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBSZW5kZXJCbG9ja0Zsb3c6
OlJlbmRlckJsb2NrRmxvdyhFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKICAgICBzZXRDaGlsZHJlbklubGluZSh0cnVlKTsKIH0KIAotUmVuZGVyQmxvY2tGbG93
OjpSZW5kZXJCbG9ja0Zsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93KERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50
LCBXVEY6Om1vdmUoc3R5bGUpLCBSZW5kZXJCbG9ja0Zsb3dGbGFnKQogI2lmIEVOQUJMRShJT1Nf
VEVYVF9BVVRPU0laSU5HKQogICAgICwgbV93aWR0aEZvclRleHRBdXRvc2l6aW5nKC0xKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IDE3NTkxNWUuLmVj
Zjk5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAg
LTU0LDggKzU0LDggQEAgZW51bSBMaW5lQ291bnQgewogCiBjbGFzcyBSZW5kZXJCbG9ja0Zsb3cg
OiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckJsb2NrRmxvdyhFbGVt
ZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlckJsb2NrRmxvdyhEb2N1bWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJCbG9ja0Zsb3coRWxlbWVudCYs
IFJlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckJsb2NrRmxvdyhEb2N1bWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlckJsb2NrRmxvdygpOwogICAgICAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlv
dXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDFjMTU4ZDguLjk5NTE2YWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIGJvb2wg
c2tpcEJvZHlCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckJveCogYm9keUVsZW1lbnRSZW5kZXJlcikK
ICAgICAgICAgJiYgKGRvY3VtZW50RWxlbWVudFJlbmRlcmVyID09IGJvZHlFbGVtZW50UmVuZGVy
ZXItPnBhcmVudCgpKTsKIH0KIAotUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxlbWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCitS
ZW5kZXJCb3g6OlJlbmRlckJveChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3Qo
ZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncykKICAgICAsIG1fbWluUHJl
ZmVycmVkTG9naWNhbFdpZHRoKC0xKQogICAgICwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgo
LTEpCkBAIC0xMjAsNyArMTIwLDcgQEAgUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxl
bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2UKICAgICBzZXRJ
c0JveCgpOwogfQogCi1SZW5kZXJCb3g6OlJlbmRlckJveChEb2N1bWVudCYgZG9jdW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQorUmVuZGVy
Qm94OjpSZW5kZXJCb3goRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZG9j
dW1lbnQsIFdURjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MpCiAgICAgLCBtX21pblByZWZl
cnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKC0x
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDdmMzQ3YzUuLmQ3NGNhOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTYxMiw4ICs2MTIsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIG5lZWRzTGF5b3V0QWZ0ZXJSZWdpb25SYW5nZUNoYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJCb3go
RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsK
LSAgICBSZW5kZXJCb3goRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQg
YmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQm94KEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCb3goRG9jdW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3
U3R5bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA5
MTJhNWY1Li5lNjhkYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTE2NiwxMiArMTY2LDEyIEBAIGJvb2wgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgSW1hCiAgICAgcmV0dXJuIHZpZXcoKS5pbWFnZVF1YWxpdHlDb250cm9sbGVyKCkuc2hv
dWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcywgaW1hZ2UsIGxheWVyLCBzaXplKTsK
IH0KIAotUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KEVsZW1lbnQm
IGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZs
YWdzKQorUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KEVsZW1lbnQm
IGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3Mp
CiAgICAgOiBSZW5kZXJMYXllck1vZGVsT2JqZWN0KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSks
IGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJCb3hNb2RlbE9iamVjdEZsYWcpCiB7CiB9CiAKLVJlbmRl
ckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYgZG9jdW1lbnQs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQorUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKICAgICA6
IFJlbmRlckxheWVyTW9kZWxPYmplY3QoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIGJhc2VU
eXBlRmxhZ3MgfCBSZW5kZXJCb3hNb2RlbE9iamVjdEZsYWcpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDA3MDJkNDEuLjE1
ODcwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCkBAIC0yNTEsOCArMjUxLDggQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZEFuaW1h
dGlvbnMoZG91YmxlIHRpbWUgPSAwKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVG
bGFncyk7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRl
clN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOwor
ICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiwgdW5z
aWduZWQgYmFzZVR5cGVGbGFncyk7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVk
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCdXR0b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAK
aW5kZXggOGQzYTEwZS4uODAzMDc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJ1dHRvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJ1dHRvbi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJCdXR0b246OlJlbmRlckJ1dHRvbihIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlckJ1dHRvbjo6UmVuZGVyQnV0dG9uKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIGVsZW1l
bnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVt
ZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9idXR0b25UZXh0KDApCiAgICAgLCBtX2lu
bmVyKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKaW5kZXggNzAxMDdh
OS4uN2QwNTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1
dHRvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaApAQCAt
MzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJUZXh0RnJhZ21lbnQ7CiAvLyB0byBkYXRlIGFzIHRo
ZSBidXR0b24gY2hhbmdlcy4KIGNsYXNzIFJlbmRlckJ1dHRvbiBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyQnV0dG9uKEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyQnV0dG9uKEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5k
ZXJCdXR0b24oKTsKIAogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIGZvcm1Db250cm9sRWxl
bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCAwMTQ1NWJiLi40NzFiZGQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fb3Jk
aW5hbEl0ZXJhdGlvbjsKIH07CiAKLVJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6UmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3goRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAg
ICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDApCiB7CiAgICAgc2V0
Q2hpbGRyZW5JbmxpbmUoZmFsc2UpOyAvLyBBbGwgb2Ygb3VyIGNoaWxkcmVuIG11c3QgYmUgYmxv
Y2stbGV2ZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guaAppbmRleCAwNWE5YjBmLi40MzkwZTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5o
CkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIEZsZXhCb3hJdGVyYXRvcjsKIAogY2xhc3MgUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goRWxlbWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goRWxlbWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eCgpOwogCiAgICAgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVs
ZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAppbmRleCBhZTU4ODBhLi4xYmNmNTRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAotUmVuZGVyRGV0YWlsc01hcmtlcjo6UmVuZGVyRGV0YWlsc01hcmtlcihE
ZXRhaWxzTWFya2VyQ29udHJvbCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJEZXRhaWxzTWFya2VyOjpSZW5kZXJEZXRhaWxzTWFya2VyKERldGFpbHNNYXJrZXJD
b250cm9sJiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyQmxv
Y2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAppbmRleCBkM2FlYWJlLi41Y2JiMTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgK
QEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJEZXRh
aWxzTWFya2VyIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxzTWFya2VyQ29udHJvbCYsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJEZXRhaWxzTWFya2VyKERldGFpbHNNYXJrZXJDb250cm9sJiwg
UmVmPFJlbmRlclN0eWxlPik7CiAgICAgRGV0YWlsc01hcmtlckNvbnRyb2wmIGVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXRhaWxzTWFya2VyQ29udHJvbCY+KG5vZGVGb3JO
b25Bbm9ueW1vdXMoKSk7IH0KIAogICAgIGVudW0gT3JpZW50YXRpb24geyBVcCwgRG93biwgTGVm
dCwgUmlnaHQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApp
bmRleCBlYTE2NDgxLi42M2E1Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBIYXNoTWFwPGNvbnN0IFJlbmRl
ck9iamVjdCosIENvbnRyb2xTdGF0ZXMqPiYgY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkKICAg
ICByZXR1cm4gbWFwOwogfQogCi1pbmxpbmUgUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChD
b250YWluZXJOb2RlJiBlbGVtZW50T3JEb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCitpbmxpbmUgUmVuZGVyRWxlbWVudDo6UmVuZGVy
RWxlbWVudChDb250YWluZXJOb2RlJiBlbGVtZW50T3JEb2N1bWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlck9iamVjdChlbGVt
ZW50T3JEb2N1bWVudCkKICAgICAsIG1fYmFzZVR5cGVGbGFncyhiYXNlVHlwZUZsYWdzKQogICAg
ICwgbV9hbmNlc3RvckxpbmVCb3hEaXJ0eShmYWxzZSkKQEAgLTk1LDEyICs5NSwxMiBAQCBpbmxp
bmUgUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChDb250YWluZXJOb2RlJiBlbGVtZW50T3JE
b2N1bWVudCwgUGFzc1JlZjxSZQogewogfQogCi1SZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBi
YXNlVHlwZUZsYWdzKQorUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAg
IDogUmVuZGVyRWxlbWVudChzdGF0aWNfY2FzdDxDb250YWluZXJOb2RlJj4oZWxlbWVudCksIFdU
Rjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MpCiB7CiB9CiAKLVJlbmRlckVsZW1lbnQ6OlJl
bmRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKK1JlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQo
RG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNl
VHlwZUZsYWdzKQogICAgIDogUmVuZGVyRWxlbWVudChzdGF0aWNfY2FzdDxDb250YWluZXJOb2Rl
Jj4oZG9jdW1lbnQpLCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQogewogfQpAQCAt
MTM1LDcgKzEzNSw3IEBAIFJlbmRlckVsZW1lbnQ6On5SZW5kZXJFbGVtZW50KCkKICAgICAgICAg
dmlldygpLnJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9ucygqdGhpcyk7CiB9
CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKEVsZW1lbnQmIGVsZW1lbnQsIFJl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAgLy8gTWluaW1hbCBzdXBwb3J0IGZvciBjb250
ZW50IHByb3BlcnRpZXMgcmVwbGFjaW5nIGFuIGVudGlyZSBlbGVtZW50LgogICAgIC8vIFdvcmtz
IG9ubHkgaWYgd2UgaGF2ZSBleGFjdGx5IG9uZSBwaWVjZSBvZiBjb250ZW50IGFuZCBpdCdzIGEg
VVJMLgpAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6aW5pdGlhbGl6ZVN0
eWxlKCkKICAgICAvLyBoYXZlIHRoZWlyIHBhcmVudCBzZXQgYmVmb3JlIGdldHRpbmcgYSBjYWxs
IHRvIGluaXRpYWxpemVTdHlsZSgpIDp8CiB9CiAKLXZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5
bGUoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCit2b2lkIFJlbmRlckVsZW1lbnQ6OnNldFN0
eWxlKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIGNo
YW5nZSBSZW5kZXJWaWV3IHNvIGl0IGNhbiB1c2UgaW5pdGlhbGl6ZVN0eWxlIHRvby4KICAgICAv
LyBJZiB3ZSBkbyB0aGF0LCB3ZSBjYW4gYXNzZXJ0IG1faGFzSW5pdGlhbGl6ZWRTdHlsZSB1bmNv
bmRpdGlvbmFsbHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRl
eCA2NjRhYzNiLi44YTE2Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVuZGVyRWxlbWVudCA6IHB1YmxpYyBSZW5k
ZXJPYmplY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlckVsZW1lbnQoKTsKIAotICAg
IHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRm9yKEVsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVGb3IoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogCiAgICAgYm9vbCBoYXNJbml0
aWFsaXplZFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNJbml0aWFsaXplZFN0eWxlOyB9CiAK
QEAgLTQzLDkgKzQzLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0aWFsaXplU3R5bGUoKTsK
IAotICAgIHZvaWQgc2V0U3R5bGUoUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHZvaWQgc2V0
U3R5bGUoUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICAvLyBDYWxsZWQgdG8gdXBkYXRlIGEgc3R5
bGUgdGhhdCBpcyBhbGxvd2VkIHRvIHRyaWdnZXIgYW5pbWF0aW9ucy4KLSAgICB2b2lkIHNldEFu
aW1hdGFibGVTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgdm9pZCBzZXRBbmltYXRh
YmxlU3R5bGUoUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogICAgIC8vIFRoZSBwc2V1ZG8gZWxlbWVu
dCBzdHlsZSBjYW4gYmUgY2FjaGVkIG9yIHVuY2FjaGVkLiAgVXNlIHRoZSBjYWNoZWQgbWV0aG9k
IGlmIHRoZSBwc2V1ZG8gZWxlbWVudCBkb2Vzbid0IHJlc3BlY3QKICAgICAvLyBhbnkgcHNldWRv
IGNsYXNzZXMgKGFuZCB0aGVyZWZvcmUgaGFzIG5vIGNvbmNlcHQgb2YgY2hhbmdpbmcgc3RhdGUp
LgpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFVwZGF0ZXMgb25seSB0aGUg
bG9jYWwgc3R5bGUgcHRyIG9mIHRoZSBvYmplY3QuIERvZXMgbm90IHVwZGF0ZSB0aGUgc3RhdGUg
b2YgdGhlIG9iamVjdCwKICAgICAvLyBhbmQgc28gb25seSBzaG91bGQgYmUgY2FsbGVkIHdoZW4g
dGhlIHN0eWxlIGlzIGtub3duIG5vdCB0byBoYXZlIGNoYW5nZWQgKG9yIGZyb20gc2V0U3R5bGUp
LgotICAgIHZvaWQgc2V0U3R5bGVJbnRlcm5hbChQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkg
eyBtX3N0eWxlID0gV1RGOjptb3ZlKHN0eWxlKTsgfQorICAgIHZvaWQgc2V0U3R5bGVJbnRlcm5h
bChSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpIHsgbV9zdHlsZSA9IFdURjo6bW92ZShzdHlsZSk7
IH0KIAogICAgIC8vIFJlcGFpbnQgb25seSBpZiBvdXIgb2xkIGJvdW5kcyBhbmQgbmV3IGJvdW5k
cyBhcmUgZGlmZmVyZW50LiBUaGUgY2FsbGVyIG1heSBwYXNzIGluIG5ld0JvdW5kcyBhbmQgbmV3
T3V0bGluZUJveCBpZiB0aGV5IGFyZSBrbm93bi4KICAgICBib29sIHJlcGFpbnRBZnRlckxheW91
dElmTmVlZGVkKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IGNvbnN0IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGlu
ZUJveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRyID0gbnVsbHB0ciwgY29uc3QgTGF5
b3V0UmVjdCogbmV3T3V0bGluZUJveFB0ciA9IG51bGxwdHIpOwpAQCAtMjAxLDggKzIwMSw4IEBA
IHByb3RlY3RlZDoKICAgICAgICAgUmVuZGVyQmxvY2tGbG93RmxhZyA9IDEgPDwgNSwKICAgICB9
OwogCi0gICAgUmVuZGVyRWxlbWVudChFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVu
c2lnbmVkIGJhc2VUeXBlRmxhZ3MpOwotICAgIFJlbmRlckVsZW1lbnQoRG9jdW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyRWxl
bWVudChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7
CisgICAgUmVuZGVyRWxlbWVudChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVk
IGJhc2VUeXBlRmxhZ3MpOwogCiAgICAgYm9vbCBsYXllckNyZWF0aW9uQWxsb3dlZEZvclN1YnRy
ZWUoKSBjb25zdDsKIApAQCAtMjM1LDcgKzIzNSw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMg
dm9pZCBhZGRDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgQ29u
dHJvbFN0YXRlcyopOwogCiBwcml2YXRlOgotICAgIFJlbmRlckVsZW1lbnQoQ29udGFpbmVyTm9k
ZSYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBS
ZW5kZXJFbGVtZW50KENvbnRhaW5lck5vZGUmLCBSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBi
YXNlVHlwZUZsYWdzKTsKICAgICB2b2lkIG5vZGUoKSBjb25zdCA9IGRlbGV0ZTsKICAgICB2b2lk
IG5vblBzZXVkb05vZGUoKSBjb25zdCA9IGRlbGV0ZTsKICAgICB2b2lkIGdlbmVyYXRpbmdOb2Rl
KCkgY29uc3QgPSBkZWxldGU7CkBAIC0yOTAsNyArMjkwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgYm9vbCBzX25vTG9uZ2VyQWZmZWN0c1BhcmVudEJsb2NrOwogfTsKIAotaW5saW5lIHZvaWQg
UmVuZGVyRWxlbWVudDo6c2V0QW5pbWF0YWJsZVN0eWxlKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQoraW5saW5lIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0QW5pbWF0YWJsZVN0eWxlKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBzZXRTdHlsZShhbmltYXRpb24oKS51cGRhdGVB
bmltYXRpb25zKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCA1NTRhMDgzLi5h
NjliYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGljIGNvbnN0IENvbG9yJiB1bmF2YWls
YWJsZVBsdWdpbkJvcmRlckNvbG9yKCkKICAgICByZXR1cm4gc3RhbmRhcmQ7CiB9CiAKLVJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJlZGRlZE9iamVjdChIVE1MRnJhbWVPd25lckVsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRW1iZWRkZWRP
YmplY3Q6OlJlbmRlckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlcldpZGdldChlbGVtZW50LCBX
VEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9pc1BsdWdpblVuYXZhaWxhYmxlKGZhbHNlKQogICAg
ICwgbV9pc1VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySGlkZGVuKGZhbHNlKQpAQCAtMTEyLDcg
KzExMiw3IEBAIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojp+UmVuZGVyRW1iZWRkZWRPYmplY3QoKQog
ICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5yZW1vdmVFbWJlZGRlZE9iamVjdFRvVXBkYXRlKCp0aGlz
KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVtYmVkZGVkT2JqZWN0PiBSZW5kZXJFbWJlZGRlZE9i
amVjdDo6Y3JlYXRlRm9yQXBwbGV0KEhUTUxBcHBsZXRFbGVtZW50JiBhcHBsZXQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVtYmVkZGVkT2JqZWN0PiBSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6Y3JlYXRlRm9yQXBwbGV0KEhUTUxBcHBsZXRFbGVtZW50JiBhcHBs
ZXQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAgYXV0byByZW5kZXJlciA9IGNyZWF0
ZVJlbmRlcmVyPFJlbmRlckVtYmVkZGVkT2JqZWN0PihhcHBsZXQsIFdURjo6bW92ZShzdHlsZSkp
OwogICAgIHJlbmRlcmVyLT5zZXRJbmxpbmUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCmluZGV4IDE0ZjBhMzguLmExYmE5NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCkBA
IC0zNSwxMCArMzUsMTAgQEAgY2xhc3MgVGV4dFJ1bjsKIC8vIEZvciBleGFtcGxlLCA8ZW1iZWQg
c3JjPSJmb28uaHRtbCI+IGRvZXMgbm90IGludm9rZSBhIHBsdWctaW4uCiBjbGFzcyBSZW5kZXJF
bWJlZGRlZE9iamVjdCA6IHB1YmxpYyBSZW5kZXJXaWRnZXQgewogcHVibGljOgotICAgIFJlbmRl
ckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJFbWJlZGRlZE9iamVjdChIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJFbWJlZGRlZE9iamVjdCgpOwog
Ci0gICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJFbWJlZGRlZE9iamVjdD4gY3JlYXRlRm9yQXBw
bGV0KEhUTUxBcHBsZXRFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHN0YXRp
YyBSZW5kZXJQdHI8UmVuZGVyRW1iZWRkZWRPYmplY3Q+IGNyZWF0ZUZvckFwcGxldChIVE1MQXBw
bGV0RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogCiAgICAgZW51bSBQbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvbiB7CiAgICAgICAgIFBsdWdpbk1pc3NpbmcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAppbmRleCAyODFkM2FmLi4zODY4MGMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
Ci1SZW5kZXJGaWVsZHNldDo6UmVuZGVyRmllbGRzZXQoSFRNTEZpZWxkU2V0RWxlbWVudCYgZWxl
bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGaWVsZHNldDo6UmVuZGVy
RmllbGRzZXQoSFRNTEZpZWxkU2V0RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAppbmRleCAxMzg2
Y2NlLi4zMTI0YWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZpZWxkc2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0
LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgSFRNTEZpZWxkU2V0RWxlbWVudDsKIAogY2xhc3Mg
UmVuZGVyRmllbGRzZXQgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJGaWVsZHNldChIVE1MRmllbGRTZXRFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlckZpZWxkc2V0KEhUTUxGaWVsZFNldEVsZW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+KTsKIAogICAgIGVudW0gRmluZExlZ2VuZE9wdGlvbiB7IElnbm9yZUZsb2F0aW5n
T3JPdXRPZkZsb3csIEluY2x1ZGVGbG9hdGluZ09yT3V0T2ZGbG93IH07CiAgICAgUmVuZGVyQm94
KiBmaW5kTGVnZW5kKEZpbmRMZWdlbmRPcHRpb24gPSBJZ25vcmVGbG9hdGluZ09yT3V0T2ZGbG93
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuY3BwCmluZGV4IGZhZjU0MTEuLmY4ZGE5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBjb25zdCBpbnQgZGVmYXVsdFdpZHRoTnVtQ2hhcnMgPSAzODsKICNlbmRpZgog
Y29uc3QgaW50IGJ1dHRvblNoYWRvd0hlaWdodCA9IDI7CiAKLVJlbmRlckZpbGVVcGxvYWRDb250
cm9sOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6UmVuZGVy
RmlsZVVwbG9hZENvbnRyb2woSFRNTElucHV0RWxlbWVudCYgaW5wdXQsIFJlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coaW5wdXQsIFdURjo6bW92ZShzdHlsZSkp
CiAgICAgLCBtX2NhblJlY2VpdmVEcm9wcGVkRmlsZXMoaW5wdXQuY2FuUmVjZWl2ZURyb3BwZWRG
aWxlcygpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZp
bGVVcGxvYWRDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuaAppbmRleCA2NjQ2MzQyLi40N2M4NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaApAQCAtMzMsNyArMzMs
NyBAQCBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRl
ckZpbGVVcGxvYWRDb250cm9sKEhUTUxJbnB1dEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2woSFRNTElucHV0RWxlbWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlckZpbGVVcGxvYWRDb250cm9sKCk7CiAK
ICAgICBTdHJpbmcgYnV0dG9uVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDM2YWQ3MWUuLmIyOWUyMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtNjYsNyArNjYs
NyBAQCBzdHJ1Y3QgUmVuZGVyRmxleGlibGVCb3g6OlZpb2xhdGlvbiB7CiB9OwogCiAKLVJlbmRl
ckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJv
eChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVy
QmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fb3JkZXJJdGVyYXRv
cigqdGhpcykKICAgICAsIG1fbnVtYmVyT2ZJbkZsb3dDaGlsZHJlbk9uRmlyc3RMaW5lKC0xKQpA
QCAtNzQsNyArNzQsNyBAQCBSZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bAogICAgIHNldENoaWxkcmVu
SW5saW5lKGZhbHNlKTsgLy8gQWxsIG9mIG91ciBjaGlsZHJlbiBtdXN0IGJlIGJsb2NrLWxldmVs
LgogfQogCi1SZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goRG9jdW1lbnQmIGRv
Y3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZsZXhpYmxlQm94OjpS
ZW5kZXJGbGV4aWJsZUJveChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCiAgICAgOiBSZW5kZXJCbG9jayhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAg
ICAsIG1fb3JkZXJJdGVyYXRvcigqdGhpcykKICAgICAsIG1fbnVtYmVyT2ZJbkZsb3dDaGlsZHJl
bk9uRmlyc3RMaW5lKC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guaAppbmRleCAyYjZlZmFjLi42ZjE1MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtMzgsOCArMzgsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFJlbmRlckZsZXhpYmxlQm94IDogcHVibGljIFJlbmRlckJsb2NrIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJGbGV4aWJsZUJveChFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOwotICAgIFJlbmRlckZsZXhpYmxlQm94KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlckZsZXhpYmxlQm94KEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
KTsKKyAgICBSZW5kZXJGbGV4aWJsZUJveChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwog
ICAgIHZpcnR1YWwgflJlbmRlckZsZXhpYmxlQm94KCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCBjMGYwMTNlLi5mN2VlOWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC01Miw3ICs1
Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRmxvd1RocmVhZDo6UmVuZGVy
Rmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3ByZXZpb3VzUmVnaW9uQ291bnQoMCkKICAgICAs
IG1fYXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zQ291bnQoMCkKQEAgLTY4LDcgKzY4LDcgQEAgUmVu
ZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWwKICAgICBzZXRGbG93VGhyZWFkU3RhdGUoSW5zaWRlT3V0T2ZG
bG93VGhyZWFkKTsKIH0KIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyRmxvd1RocmVhZDo6
Y3JlYXRlRmxvd1RocmVhZFN0eWxlKFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkKK1JlZjxSZW5k
ZXJTdHlsZT4gUmVuZGVyRmxvd1RocmVhZDo6Y3JlYXRlRmxvd1RocmVhZFN0eWxlKFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZSgpOwogICAgIG5ld1N0eWxlLmdldCgpLmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCmluZGV4IDYyM2ViZmEu
LjljMmYwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
aApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgd2hlbiBhIGRlc2Nl
bmRhbnQgYm94J3MgbGF5b3V0IGlzIGZpbmlzaGVkIGFuZCBpdCBoYXMgYmVlbiBwb3NpdGlvbmVk
IHdpdGhpbiBpdHMgY29udGFpbmVyLgogICAgIHZpcnR1YWwgdm9pZCBmbG93VGhyZWFkRGVzY2Vu
ZGFudEJveExhaWRPdXQoUmVuZGVyQm94KikgeyB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gY3JlYXRlRmxvd1RocmVhZFN0eWxlKFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7
CisgICAgc3RhdGljIFJlZjxSZW5kZXJTdHlsZT4gY3JlYXRlRmxvd1RocmVhZFN0eWxlKFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwog
CkBAIC0yNDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVk
OgotICAgIFJlbmRlckZsb3dUaHJlYWQoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyRmxvd1RocmVhZChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogCiAg
ICAgdmlydHVhbCBSZW5kZXJGbG93VGhyZWFkKiBsb2NhdGVGbG93VGhyZWFkQ29udGFpbmluZ0Js
b2NrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJGbG93VGhyZWFk
Kj4odGhpcyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHAKaW5k
ZXggMzBhMmU2My4uYWRmZTI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWUuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVy
RnJhbWU6OlJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQmIGZyYW1lLCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlckZyYW1lOjpSZW5kZXJGcmFtZShIVE1MRnJhbWVFbGVtZW50
JiBmcmFtZSwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckZyYW1lQmFzZShm
cmFtZSwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lLmgKaW5kZXggNzRmNjg4Zi4uMjYzYWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRNTEZyYW1lRWxlbWVudDsK
IAogY2xhc3MgUmVuZGVyRnJhbWUgZmluYWwgOiBwdWJsaWMgUmVuZGVyRnJhbWVCYXNlIHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJGcmFtZShIVE1MRnJhbWVFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5
bGU+KTsKIAogICAgIEhUTUxGcmFtZUVsZW1lbnQmIGZyYW1lRWxlbWVudCgpIGNvbnN0OwogICAg
IEZyYW1lRWRnZUluZm8gZWRnZUluZm8oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKaW5kZXggM2FlNDRiYS4uODEzY2MzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJGcmFtZUJhc2U6OlJlbmRlckZyYW1l
QmFzZShIVE1MRnJhbWVFbGVtZW50QmFzZSYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJGcmFtZUJhc2U6OlJlbmRlckZyYW1lQmFzZShIVE1MRnJhbWVFbGVtZW50
QmFzZSYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlcldpZGdl
dChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lQmFzZS5oCmluZGV4IDE3YzlkOGYuLmMxN2E5ZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgSFRNTEZyYW1lRWxlbWVudEJhc2U7CiAvLyBCYXNlIGNsYXNzIGZvciBSZW5kZXJGcmFtZSBh
bmQgUmVuZGVySUZyYW1lCiBjbGFzcyBSZW5kZXJGcmFtZUJhc2UgOiBwdWJsaWMgUmVuZGVyV2lk
Z2V0IHsKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJGcmFtZUJhc2UoSFRNTEZyYW1lRWxlbWVudEJh
c2UmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRnJhbWVCYXNlKEhUTUxGcmFt
ZUVsZW1lbnRCYXNlJiwgUmVmPFJlbmRlclN0eWxlPik7CiAKIHB1YmxpYzoKICAgICBGcmFtZVZp
ZXcqIGNoaWxkVmlldygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4oUmVuZGVy
V2lkZ2V0Ojp3aWRnZXQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWVTZXQuY3BwCmluZGV4IDJhMWMxZDIuLmFhNmViNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcApAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlbmRlckZyYW1lU2V0OjpSZW5kZXJGcmFtZVNldChIVE1MRnJhbWVTZXRF
bGVtZW50JiBmcmFtZVNldCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGcmFt
ZVNldDo6UmVuZGVyRnJhbWVTZXQoSFRNTEZyYW1lU2V0RWxlbWVudCYgZnJhbWVTZXQsIFJlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZnJhbWVTZXQsIFdURjo6bW92ZShz
dHlsZSksIDApCiAgICAgLCBtX2lzUmVzaXppbmcoZmFsc2UpCiAgICAgLCBtX2lzQ2hpbGRSZXNp
emluZyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgKaW5k
ZXggYjBlZTg5YS4uODYxMWNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lU2V0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgUmVuZGVyRnJhbWVT
ZXQgZmluYWwgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGcmFtZVNl
dChIVE1MRnJhbWVTZXRFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
ckZyYW1lU2V0KEhUTUxGcmFtZVNldEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2
aXJ0dWFsIH5SZW5kZXJGcmFtZVNldCgpOwogCiAgICAgSFRNTEZyYW1lU2V0RWxlbWVudCYgZnJh
bWVTZXRFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnVsbFNjcmVlbi5jcHAKaW5kZXggZTExNWY3Zi4uOTNkYmM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlciBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlckZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlcihSZW5kZXJGdWxsU2NyZWVuJiBvd25lciwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCisgICAgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyKFJlbmRlckZ1bGxTY3Jl
ZW4mIG93bmVyLCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgICAgICA6IFJlbmRlckJsb2Nr
Rmxvdyhvd25lci5kb2N1bWVudCgpLCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICAgICAsIG1fb3du
ZXIob3duZXIpIAogICAgIHsKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBSZW5kZXJGdWxsU2NyZWVu
UGxhY2Vob2xkZXI6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgUmVuZGVyQmxvY2tGbG93Ojp3aWxs
QmVEZXN0cm95ZWQoKTsKIH0KIAotUmVuZGVyRnVsbFNjcmVlbjo6UmVuZGVyRnVsbFNjcmVlbihE
b2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRnVs
bFNjcmVlbjo6UmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChkb2N1bWVudCwgV1RGOjptb3Zl
KHN0eWxlKSkKICAgICAsIG1fcGxhY2Vob2xkZXIoMCkKIHsKQEAgLTc4LDcgKzc4LDcgQEAgdm9p
ZCBSZW5kZXJGdWxsU2NyZWVuOjp3aWxsQmVEZXN0cm95ZWQoKQogICAgIFJlbmRlckZsZXhpYmxl
Qm94Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IGNyZWF0ZUZ1bGxTY3JlZW5TdHlsZSgpCitzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVG
dWxsU2NyZWVuU3R5bGUoKQogewogICAgIGF1dG8gZnVsbHNjcmVlblN0eWxlID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZURlZmF1bHRTdHlsZSgpOwogCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBSZW5k
ZXJGdWxsU2NyZWVuOjpzZXRQbGFjZWhvbGRlcihSZW5kZXJCbG9jayogcGxhY2Vob2xkZXIpCiAg
ICAgbV9wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyOwogfQogCi12b2lkIFJlbmRlckZ1bGxTY3Jl
ZW46OmNyZWF0ZVBsYWNlaG9sZGVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBM
YXlvdXRSZWN0JiBmcmFtZVJlY3QpCit2b2lkIFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZVBsYWNl
aG9sZGVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZnJhbWVS
ZWN0KQogewogICAgIGlmIChzdHlsZS5nZXQoKS53aWR0aCgpLmlzQXV0bygpKQogICAgICAgICBz
dHlsZS5nZXQoKS5zZXRXaWR0aChMZW5ndGgoZnJhbWVSZWN0LndpZHRoKCksIEZpeGVkKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAppbmRleCA5YjZjOGRi
Li5mZGEyZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVs
bFNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVu
LmgKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRl
ckZ1bGxTY3JlZW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgot
ICAgIFJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogCiAgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlckZ1bGxTY3JlZW4iOyB9CiAKICAgICB2b2lkIHNldFBsYWNlaG9sZGVyKFJlbmRlckJs
b2NrKik7CiAgICAgUmVuZGVyQmxvY2sqIHBsYWNlaG9sZGVyKCkgeyByZXR1cm4gbV9wbGFjZWhv
bGRlcjsgfQotICAgIHZvaWQgY3JlYXRlUGxhY2Vob2xkZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4s
IGNvbnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCk7CisgICAgdm9pZCBjcmVhdGVQbGFjZWhvbGRl
cihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCk7CiAKICAg
ICBzdGF0aWMgUmVuZGVyRnVsbFNjcmVlbiogd3JhcFJlbmRlcmVyKFJlbmRlck9iamVjdCosIFJl
bmRlckVsZW1lbnQqLCBEb2N1bWVudCYpOwogICAgIHZvaWQgdW53cmFwUmVuZGVyZXIoYm9vbCYg
cmVxdWlyZXNSZW5kZXJUcmVlUmVidWlsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHAKaW5kZXggMDEyYmFjNi4uNTQ1MGUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8
dW5zaWduZWQ+IGdyb3dBYm92ZU1heEJyZWFkdGhUcmFja0luZGV4ZXM7CiB9OwogCi1SZW5kZXJH
cmlkOjpSZW5kZXJHcmlkKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyR3JpZDo6UmVuZGVyR3JpZChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxl
KSwgMCkKICAgICAsIG1fb3JkZXJJdGVyYXRvcigqdGhpcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5oCmluZGV4IDU1NmRlYmUuLmVjMTY5ODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBHcmlkSXRlbVdpdGhT
cGFuOwogCiBjbGFzcyBSZW5kZXJHcmlkIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJHcmlkKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyR3JpZChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+
UmVuZGVyR3JpZCgpOwogCiAgICAgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAppbmRleCA2MjFjZjI4Li5iMjVmYjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAotUmVuZGVySFRNTENhbnZhczo6UmVuZGVySFRNTENhbnZhcyhIVE1MQ2FudmFz
RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJIVE1M
Q2FudmFzOjpSZW5kZXJIVE1MQ2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSwgZWxlbWVudC5zaXplKCkpCiB7CiAgICAgLy8gQWN0dWFsIHNpemUgaXMgbm90
IGtub3duIHlldCwgcmVwb3J0IHRoZSBkZWZhdWx0IGludHJpbnNpYyBzaXplLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgKaW5kZXggZDI1YzFjNy4uZjY5OWFi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCkBAIC0z
NCw3ICszNCw3IEBAIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJIVE1M
Q2FudmFzIGZpbmFsIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJIVE1MQ2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlckhUTUxDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
KTsKIAogICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50KCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKaW5kZXggOTBjNjM1Ny4uMjY0
MmZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogICAgIAotUmVuZGVySUZyYW1lOjpSZW5kZXJJRnJhbWUoSFRNTElGcmFtZUVsZW1lbnQm
IGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVySUZyYW1lOjpSZW5k
ZXJJRnJhbWUoSFRNTElGcmFtZUVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCiAgICAgOiBSZW5kZXJGcmFtZUJhc2UoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaAppbmRleCA0MjA5NjViLi4x
M2E1MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCkBAIC0zNCw3
ICszNCw3IEBAIGNsYXNzIFJlbmRlclZpZXc7CiAKIGNsYXNzIFJlbmRlcklGcmFtZSBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJGcmFtZUJhc2UgewogcHVibGljOgotICAgIFJlbmRlcklGcmFtZShIVE1M
SUZyYW1lRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJJRnJhbWUo
SFRNTElGcmFtZUVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogICAgIEhUTUxJRnJhbWVF
bGVtZW50JiBpZnJhbWVFbGVtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCmluZGV4IGZhNTc0MjQuLjM0ODM0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgUmVuZGVy
SW1hZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mIHJlY3Rz
LCB1bnNpZ25lZCwKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVySW1hZ2U6
OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
LCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjb25zdCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0
aW8pCitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgY29uc3QgZmxvYXQgaW1hZ2VE
ZXZpY2VQaXhlbFJhdGlvKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGOjptb3Zl
KHN0eWxlKSwgSW50U2l6ZSgpKQogICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFn
ZSkgOiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX25l
ZWRzVG9TZXRTaXplRm9yQWx0VGV4dChmYWxzZSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBSZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUsIFN0eWxlSW1hZwogICAgICAgICBtX2hhc1NoYWRvd0NvbnRyb2xzID0gZG93bmNhc3Q8
SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkuaGFzU2hhZG93Q29udHJvbHMoKTsKIH0KIAotUmVu
ZGVySW1hZ2U6OlJlbmRlckltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCitSZW5kZXJJbWFnZTo6UmVuZGVy
SW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBTdHlsZUlt
YWdlKiBzdHlsZUltYWdlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQsIFdURjo6bW92
ZShzdHlsZSksIEludFNpemUoKSkKICAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1h
Z2UpIDogc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9u
ZWVkc1RvU2V0U2l6ZUZvckFsdFRleHQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCmluZGV4IDRhOGM2OWYuLjk1MTQyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIEhUTUxNYXBFbGVtZW50Owog
CiBjbGFzcyBSZW5kZXJJbWFnZSA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVySW1hZ2UoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCBTdHlsZUltYWdl
KiA9IG51bGxwdHIsIGNvbnN0IGZsb2F0ID0gMS4wZik7Ci0gICAgUmVuZGVySW1hZ2UoRG9jdW1l
bnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgU3R5bGVJbWFnZSogPSBudWxscHRyKTsKKyAgICBS
ZW5kZXJJbWFnZShFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiwgU3R5bGVJbWFnZSogPSBudWxs
cHRyLCBjb25zdCBmbG9hdCA9IDEuMGYpOworICAgIFJlbmRlckltYWdlKERvY3VtZW50JiwgUmVm
PFJlbmRlclN0eWxlPiwgU3R5bGVJbWFnZSogPSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5SZW5k
ZXJJbWFnZSgpOwogCiAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSYgaW1hZ2VSZXNvdXJjZSgpIHsg
cmV0dXJuICptX2ltYWdlUmVzb3VyY2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKaW5kZXggNGZhN2VkYS4uMDcwODFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTUxLDEzICs1MSwxMyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlbmRlcklubGluZTo6UmVuZGVySW5saW5lKEVsZW1lbnQmIGVsZW1lbnQs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVySW5saW5lOjpSZW5kZXJJbmxpbmUo
RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJv
eE1vZGVsT2JqZWN0KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIFJlbmRlcklubGluZUZsYWcp
CiB7CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUodHJ1ZSk7CiB9CiAKLVJlbmRlcklubGluZTo6UmVu
ZGVySW5saW5lKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJJbmxpbmU6OlJlbmRlcklubGluZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChkb2N1bWVudCwgV1RG
Ojptb3ZlKHN0eWxlKSwgUmVuZGVySW5saW5lRmxhZykKIHsKICAgICBzZXRDaGlsZHJlbklubGlu
ZSh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCBjNGIz
YmIxLi41ZjU2ZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBA
IC0zNCw4ICszNCw4IEBAIGNsYXNzIFJlbmRlclJlZ2lvbjsKIAogY2xhc3MgUmVuZGVySW5saW5l
IDogcHVibGljIFJlbmRlckJveE1vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbmxp
bmUoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJJbmxpbmUoRG9j
dW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVySW5saW5lKEVsZW1lbnQm
LCBSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJJbmxpbmUoRG9jdW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+KTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5l
d0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGQ5ZDVkMjcuLjgxNzcyODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjYwMyw3ICs2
NjAzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVtb3ZlUmVmbGVjdGlvbigpCiAgICAgbV9yZWZs
ZWN0aW9uID0gbnVsbHB0cjsKIH0KIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyTGF5ZXI6
OmNyZWF0ZVJlZmxlY3Rpb25TdHlsZSgpCitSZWY8UmVuZGVyU3R5bGU+IFJlbmRlckxheWVyOjpj
cmVhdGVSZWZsZWN0aW9uU3R5bGUoKQogewogICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y3JlYXRlKCk7CiAgICAgbmV3U3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20oJnJlbmRlcmVyKCku
c3R5bGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDczMTM2
NzIuLmRmYjIzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0x
MTIwLDcgKzExMjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUmVmbGVjdGlvbigpOwog
ICAgIHZvaWQgcmVtb3ZlUmVmbGVjdGlvbigpOwogCi0gICAgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
Y3JlYXRlUmVmbGVjdGlvblN0eWxlKCk7CisgICAgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVSZWZs
ZWN0aW9uU3R5bGUoKTsKICAgICBib29sIHBhaW50aW5nSW5zaWRlUmVmbGVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uOyB9CiAgICAgdm9pZCBzZXRQYWlu
dGluZ0luc2lkZVJlZmxlY3Rpb24oYm9vbCBiKSB7IG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9u
ID0gYjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHAKaW5kZXggMGEwMGU4NS4uNzViODczOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtMzUsMTIg
KzM1LDEyIEBAIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c19oYWRMYXllciA9IGZhbHNl
OwogYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzX2hhZFRyYW5zZm9ybSA9IGZhbHNlOwog
Ym9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzX2xheWVyV2FzU2VsZlBhaW50aW5nID0gZmFs
c2U7CiAKLVJlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VU
eXBlRmxhZ3MpCitSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VU
eXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJFbGVtZW50KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSks
IGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJMYXllck1vZGVsT2JqZWN0RmxhZykKIHsKIH0KIAotUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChEb2N1bWVudCYgZG9j
dW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdz
KQorUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxh
Z3MpCiAgICAgOiBSZW5kZXJFbGVtZW50KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNl
VHlwZUZsYWdzIHwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWcpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAppbmRleCBjMzY4
NzBlLi5jNzFkOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQm94KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVudCYs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKLSAgICBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVuc2ln
bmVkIGJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVudCYs
IFJlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckxh
eWVyTW9kZWxPYmplY3QoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNl
VHlwZUZsYWdzKTsKIAogICAgIHZvaWQgY3JlYXRlTGF5ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCAxNmU2N2VjLi42YWMwNTIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcApAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgaW52YWxp
ZExpbmVIZWlnaHQgPSAtMTsKIAotUmVuZGVyTGluZUJyZWFrOjpSZW5kZXJMaW5lQnJlYWsoSFRN
TEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTGlu
ZUJyZWFrOjpSZW5kZXJMaW5lQnJlYWsoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChlbGVtZW50LCBXVEY6Om1v
dmUoc3R5bGUpLCAwKQogICAgICwgbV9pbmxpbmVCb3hXcmFwcGVyKG51bGxwdHIpCiAgICAgLCBt
X2NhY2hlZExpbmVIZWlnaHQoaW52YWxpZExpbmVIZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKaW5kZXggZjVmOTY0My4uZDhlYmE2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaApAQCAtMzIsNyArMzIsNyBAQCBj
bGFzcyBQb3NpdGlvbjsKIAogY2xhc3MgUmVuZGVyTGluZUJyZWFrIGZpbmFsIDogcHVibGljIFJl
bmRlckJveE1vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaW5lQnJlYWsoSFRNTEVs
ZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTGluZUJyZWFrKEhUTUxF
bGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyTGluZUJyZWFr
KCk7CiAKICAgICAvLyBGSVhNRTogVGhlIGxpZXMgaGVyZSBrZWVwIHJlbmRlciB0cmVlIGR1bXAg
YmFzZWQgdGVzdCByZXN1bHRzIHVuY2hhbmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcAppbmRleCA5YjIwZTA0Li4wZWM0YjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IGlu
dCBkZWZhdWx0U2l6ZSA9IDQ7CiAvLyB3aWRnZXQsIGJ1dCBJJ20gbm90IHN1cmUgdGhpcyBpcyBy
aWdodCBmb3IgdGhlIG5ldyBjb250cm9sLgogY29uc3QgaW50IGJhc2VsaW5lQWRqdXN0bWVudCA9
IDc7CiAKLVJlbmRlckxpc3RCb3g6OlJlbmRlckxpc3RCb3goSFRNTFNlbGVjdEVsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTGlzdEJveDo6UmVuZGVy
TGlzdEJveChIVE1MU2VsZWN0RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAg
ICwgbV9vcHRpb25zQ2hhbmdlZCh0cnVlKQogICAgICwgbV9zY3JvbGxUb1JldmVhbFNlbGVjdGlv
bkFmdGVyTGF5b3V0KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmgKaW5kZXggOGFlNjlkYi4uYTI2MzZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50Owog
CiBjbGFzcyBSZW5kZXJMaXN0Qm94IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdywgcHVi
bGljIFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaXN0Qm94KEhUTUxTZWxl
Y3RFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckxpc3RCb3goSFRN
TFNlbGVjdEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJM
aXN0Qm94KCk7CiAKICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0RWxlbWVudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKaW5kZXggOGM5
OWNlMC4uZTNlMjRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0
ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyTGlzdEl0ZW06OlJlbmRlckxpc3RJdGVtKEVsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTGlzdEl0ZW06
OlJlbmRlckxpc3RJdGVtKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAs
IG1fbWFya2VyKG51bGxwdHIpCiAgICAgLCBtX2hhc0V4cGxpY2l0VmFsdWUoZmFsc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCmluZGV4IDlhNWM5NDAuLmVkMzZm
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCkBAIC0zMyw3
ICszMyw3IEBAIGNsYXNzIFJlbmRlckxpc3RNYXJrZXI7CiAKIGNsYXNzIFJlbmRlckxpc3RJdGVt
IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTGlz
dEl0ZW0oRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJMaXN0SXRl
bShFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyTGlzdEl0
ZW0oKTsKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxl
bWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggOWVhNzUwZC4uNmUzMGY0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTExNyw3
ICsxMTE3LDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KEVMaXN0U3R5bGVUeXBlIHR5cGUsIGlu
dCB2YWx1ZSkKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1SZW5kZXJMaXN0
TWFya2VyOjpSZW5kZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJiBsaXN0SXRlbSwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJMaXN0TWFya2VyOjpSZW5kZXJMaXN0TWFya2Vy
KFJlbmRlckxpc3RJdGVtJiBsaXN0SXRlbSwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6
IFJlbmRlckJveChsaXN0SXRlbS5kb2N1bWVudCgpLCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAg
ICwgbV9saXN0SXRlbShsaXN0SXRlbSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5oCmluZGV4IDFhN2ZiNzAuLmNjOTUzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApAQCAtMzUsNyArMzUsNyBAQCBTdHJpbmcg
bGlzdE1hcmtlclRleHQoRUxpc3RTdHlsZVR5cGUsIGludCB2YWx1ZSk7CiAvLyBUaGUgUmVuZGVy
TGlzdE1hcmtlciBhbHdheXMgaGFzIHRvIGJlIGEgY2hpbGQgb2YgYSBSZW5kZXJMaXN0SXRlbS4K
IGNsYXNzIFJlbmRlckxpc3RNYXJrZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0mLCBSZWY8UmVuZGVy
U3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJMaXN0TWFya2VyKCk7CiAKICAgICBjb25zdCBT
dHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVkaWEuY3BwCmluZGV4IDAwNTQ2YTAuLmZlYTcxZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhUTUxNZWRpYUVs
ZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWVkaWE6
OlJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCiAgICAgOiBSZW5kZXJJbWFnZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewog
ICAgIHNldEhhc1NoYWRvd0NvbnRyb2xzKHRydWUpOwogfQogCi1SZW5kZXJNZWRpYTo6UmVuZGVy
TWVkaWEoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUsIGNvbnN0IEludFNpemUmIGludHJpbnNpY1NpemUpCitSZW5kZXJNZWRpYTo6UmVuZGVyTWVk
aWEoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgY29u
c3QgSW50U2l6ZSYgaW50cmluc2ljU2l6ZSkKICAgICA6IFJlbmRlckltYWdlKGVsZW1lbnQsIFdU
Rjo6bW92ZShzdHlsZSkpCiB7CiAgICAgc2V0SW50cmluc2ljU2l6ZShpbnRyaW5zaWNTaXplKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKaW5kZXggYzM2NjgwMC4uNzQyYzAy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKQEAgLTM1LDggKzM1LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJNZWRpYSA6IHB1YmxpYyBSZW5k
ZXJJbWFnZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50Jiwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4sIGNvbnN0IEludFNpemUmIGludHJpbnNpY1NpemUpOworICAg
IFJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiwgY29uc3QgSW50
U2l6ZSYgaW50cmluc2ljU2l6ZSk7CiAgICAgdmlydHVhbCB+UmVuZGVyTWVkaWEoKTsKIAogICAg
IEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PEhUTUxNZWRpYUVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
CmluZGV4IDk1ZmZjNzguLjQwODUyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtMzUsNyArMzUsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFp
bmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihFbGVtZW50JiBlbGVtZW50LCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFp
bmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihFbGVtZW50JiBlbGVtZW50LCBS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdU
Rjo6bW92ZShzdHlsZSkpCiB7CiB9CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgUmVuZGVyTWVkaWFW
b2x1bWVTbGlkZXJDb250YWluZXI6OmxheW91dCgpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotUmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXI6OlJlbmRlck1l
ZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXI6OlJl
bmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEY6
Om1vdmUoc3R5bGUpKQogewogfQpAQCAtODEsNyArODEsNyBAQCB2b2lkIFJlbmRlck1lZGlhQ29u
dHJvbFRpbWVsaW5lQ29udGFpbmVyOjpsYXlvdXQoKQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogCi1SZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpSZW5kZXJUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVuZGVyVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAg
IDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50
cy5oCmluZGV4IDdhNjVjMjkuLjMwMjExODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250
YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKEVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+KTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3Zl
cnJpZGU7CkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFJlbmRlck1lZGlhQ29u
dHJvbFRpbWVsaW5lQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcihFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5l
Q29udGFpbmVyKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6
CiAKIGNsYXNzIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
UmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGV4dFRy
YWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggODEzMDFkNC4uMWEyYmY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC03MSw3ICs3
MSw3IEBAIHN0YXRpYyBzaXplX3Qgc2VsZWN0ZWRPcHRpb25Db3VudChjb25zdCBSZW5kZXJNZW51
TGlzdCYgcmVuZGVyTWVudUxpc3QpCiB9CiAjZW5kaWYKIAotUmVuZGVyTWVudUxpc3Q6OlJlbmRl
ck1lbnVMaXN0KEhUTUxTZWxlY3RFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlck1lbnVMaXN0OjpSZW5kZXJNZW51TGlzdChIVE1MU2VsZWN0RWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxl
Qm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2J1dHRvblRleHQobnVsbHB0
cikKICAgICAsIG1faW5uZXJCbG9jayhudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuaAppbmRleCAzZDliNWY0Li44ZjU5ODEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSZW5k
ZXJUZXh0OwogY2xhc3MgUmVuZGVyTWVudUxpc3QgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGli
bGVCb3gsIHByaXZhdGUgUG9wdXBNZW51Q2xpZW50IHsKIAogcHVibGljOgotICAgIFJlbmRlck1l
bnVMaXN0KEhUTUxTZWxlY3RFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJl
bmRlck1lbnVMaXN0KEhUTUxTZWxlY3RFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAg
dmlydHVhbCB+UmVuZGVyTWVudUxpc3QoKTsKIAogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxl
Y3RFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWV0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNw
cAppbmRleCBkM2M0MjkxLi45ODYzMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZXRlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJNZXRlcjo6UmVuZGVyTWV0ZXIoSFRNTEVs
ZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWV0ZXI6
OlJlbmRlck1ldGVyKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCmluZGV4IGM2ZTI2MGEuLjgwNWEx
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCkBAIC0zMiw3ICszMiw3
IEBAIGNsYXNzIEhUTUxNZXRlckVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlck1ldGVyIGZpbmFsIDog
cHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWV0ZXIoSFRNTEVs
ZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWV0ZXIoSFRNTEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJNZXRlcigpOwogCiAg
ICAgSFRNTE1ldGVyRWxlbWVudCogbWV0ZXJFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3Bw
CmluZGV4IDhkZjMzMWQuLmJiYTEzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJl
YWQ6OmdTaGlmdGluZ1NwYW5uZXIgPSBmYWxzZTsKIAotUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhy
ZWFkOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6UmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckZsb3dUaHJlYWQoZG9jdW1lbnQsIFdURjo6bW92ZShz
dHlsZSkpCiAgICAgLCBtX2xhc3RTZXRXb3JrZWRPbihudWxscHRyKQogICAgICwgbV9jb2x1bW5D
b3VudCgxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZC5oCmluZGV4IGY5NTVmYTIuLmEwMTczNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgK
QEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXI7CiAKIGNsYXNzIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJGbG93VGhyZWFkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJl
YWQoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTXVsdGlDb2x1
bW5GbG93VGhyZWFkKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgflJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUZsb3dDaGls
ZEluZm8oUmVuZGVyT2JqZWN0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAppbmRleCAyOWZiNmZhLi5mZTIxZWViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJNdWx0
aUNvbHVtblNldDo6UmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYgZmxvd1Ro
cmVhZCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNdWx0aUNvbHVtblNldDo6
UmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYgZmxvd1RocmVhZCwgUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlclJlZ2lvblNldChmbG93VGhyZWFkLmRvY3Vt
ZW50KCksIFdURjo6bW92ZShzdHlsZSksIGZsb3dUaHJlYWQpCiAgICAgLCBtX2NvbXB1dGVkQ29s
dW1uQ291bnQoMSkKICAgICAsIG1fY29tcHV0ZWRDb2x1bW5XaWR0aCgwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAppbmRleCA4Y2FjMDUwLi5m
ZDRlZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBjb21lIGJl
Zm9yZSBhbmQgYWZ0ZXIgdGhlIHNwYW4uCiBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtblNldCBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJSZWdpb25TZXQgewogcHVibGljOgotICAgIFJlbmRlck11bHRpQ29s
dW1uU2V0KFJlbmRlckZsb3dUaHJlYWQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVu
ZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYsIFJlZjxSZW5kZXJTdHlsZT4pOwog
CiAgICAgUmVuZGVyQmxvY2tGbG93KiBtdWx0aUNvbHVtbkJsb2NrRmxvdygpIGNvbnN0IHsgcmV0
dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocGFyZW50KCkpOyB9CiAgICAgUmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkKiBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqPihmbG93VGhyZWFkKCkp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcAppbmRleCBlYWExZjM3Li5kMGEwNDBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5T
cGFubmVyUGxhY2Vob2xkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgUmVu
ZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIqIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyOjpjcmVhdGUKICAgICByZXR1cm4gcGxhY2Vob2xkZXI7CiB9CiAKLVJlbmRl
ck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlcihSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQsIFJlbmRl
ckJveCogc3Bhbm5lciwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNdWx0aUNv
bHVtblNwYW5uZXJQbGFjZWhvbGRlcjo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXIoUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkLCBSZW5kZXJCb3gqIHNw
YW5uZXIsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZmxvd1RocmVh
ZC0+ZG9jdW1lbnQoKSwgV1RGOjptb3ZlKHN0eWxlKSwgUmVuZGVyQm94TW9kZWxPYmplY3RGbGFn
KQogICAgICwgbV9zcGFubmVyKHNwYW5uZXIpCiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVh
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
blNwYW5uZXJQbGFjZWhvbGRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKaW5kZXggY2Y5ZDFiMy4uZDA4OTBjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmxvd1RocmVhZDsgfQogCiBwcml2YXRlOgotICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bh
bm5lciwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5l
clBsYWNlaG9sZGVyKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bh
bm5lciwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTXVsdGlD
b2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQuY3BwCmluZGV4IGY3OGIzYjIuLjhlNjI3NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcApA
QCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50OjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKICAgICA6IFJlbmRlclJlZ2lvbihkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgbnVs
bHB0cikKICAgICAsIG1faGFzQ3VzdG9tUmVnaW9uU3R5bGUoZmFsc2UpCiAgICAgLCBtX2hhc0F1
dG9Mb2dpY2FsSGVpZ2h0KGZhbHNlKQpAQCAtNTcsNyArNTcsNyBAQCBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudDo6flJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkKIHsKIH0KIAotUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmNyZWF0ZVN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSkKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQ6OmNyZWF0ZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKIHsKICAg
ICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3Bs
YXkoJnBhcmVudFN0eWxlLCBCTE9DSyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKaW5kZXggMmMyNDY5Zi4uYjg2ZDkxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmgKQEAgLTQ5LDEwICs0OSwxMCBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogY2xhc3MgUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQgZmluYWwgOiBwdWJsaWMgUmVuZGVyUmVnaW9uIHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudChEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudChEb2N1bWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7CiAKLSAgICBz
dGF0aWMgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
IHBhcmVudFN0eWxlKTsKKyAgICBzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmNwcAppbmRleCBmNWU4ODI1Li5kNGY1M2MzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAtNDYsNyArNDYs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVu
ZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUsIFBhc3NSZWY8V2ViS2l0TmFtZWRGbG93PiBuYW1lZEZsb3cpCitSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJlZjxXZWJLaXROYW1lZEZsb3c+IG5hbWVkRmxvdykKICAg
ICA6IFJlbmRlckZsb3dUaHJlYWQoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBt
X2hhc1JlZ2lvbnNXaXRoU3R5bGluZyhmYWxzZSkKICAgICAsIG1fZGlzcGF0Y2hSZWdpb25PdmVy
c2V0Q2hhbmdlRXZlbnQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmgKaW5kZXggYjVmMTY0Yi4uMmQ4NDlkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaApAQCAtNDYsNyAr
NDYsNyBAQCB0eXBlZGVmIExpc3RIYXNoU2V0PEVsZW1lbnQqPiBOYW1lZEZsb3dDb250ZW50RWxl
bWVudHM7CiAKIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVhZCBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJGbG93VGhyZWFkLCBwdWJsaWMgU2VsZWN0aW9uU3VidHJlZVJvb3QgewogcHVibGljOgotICAg
IFJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCBQ
YXNzUmVmPFdlYktpdE5hbWVkRmxvdz4pOworICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1
bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4sIFJlZjxXZWJLaXROYW1lZEZsb3c+KTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJOYW1lZEZsb3dUaHJlYWQoKTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
Zmxvd1RocmVhZE5hbWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJQcm9ncmVzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UHJvZ3Jlc3MuY3BwCmluZGV4IGIyNWFhMDEuLmE0ZTk2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlbmRlclByb2dyZXNzOjpSZW5kZXJQcm9ncmVzcyhIVE1MRWxlbWVu
dCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQcm9ncmVzczo6
UmVuZGVyUHJvZ3Jlc3MoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAg
ICAsIG1fcG9zaXRpb24oSFRNTFByb2dyZXNzRWxlbWVudDo6SW52YWxpZFBvc2l0aW9uKQogICAg
ICwgbV9hbmltYXRpb25TdGFydFRpbWUoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQcm9ncmVzcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clByb2dyZXNzLmgKaW5kZXggNzdjYjQ0Yy4uY2ZiZjE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclByb2dyZXNzLmgKQEAgLTI5LDcgKzI5LDcgQEAgY2xhc3MgSFRNTFByb2dy
ZXNzRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyUHJvZ3Jlc3MgZmluYWwgOiBwdWJsaWMgUmVuZGVy
QmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJQcm9ncmVzcyhIVE1MRWxlbWVudCYsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJQcm9ncmVzcyhIVE1MRWxlbWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclByb2dyZXNzKCk7CiAKICAgICBk
b3VibGUgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcAppbmRleCA1NWZmNmZkLi43YWFjNWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJRdW90ZTo6UmVuZGVyUXVvdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSwgUXVvdGVUeXBlIHF1b3RlKQorUmVuZGVyUXVvdGU6OlJlbmRlclF1b3Rl
KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgUXVvdGVUeXBlIHF1
b3RlKQogICAgIDogUmVuZGVySW5saW5lKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAg
ICwgbV90eXBlKHF1b3RlKQogICAgICwgbV9kZXB0aCgtMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclF1b3RlLmgKaW5kZXggM2JiNTBkZi4uN2QwNDUzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclF1b3RlLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSZW5kZXJRdW90ZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJJbmxpbmUgewogcHVi
bGljOgotICAgIFJlbmRlclF1b3RlKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIFF1
b3RlVHlwZSk7CisgICAgUmVuZGVyUXVvdGUoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+LCBR
dW90ZVR5cGUpOwogICAgIHZpcnR1YWwgflJlbmRlclF1b3RlKCk7CiAKICAgICB2b2lkIGF0dGFj
aFF1b3RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4
IGZmMjljMjguLjM3YzRiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b24uY3BwCkBAIC00OCw3ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVy
UmVnaW9uOjpSZW5kZXJSZWdpb24oRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCitSZW5kZXJSZWdpb246OlJl
bmRlclJlZ2lvbihFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBSZW5k
ZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKICAgICAs
IG1fcGFyZW50TmFtZWRGbG93VGhyZWFkKG51bGxwdHIpCkBAIC01Niw3ICs1Niw3IEBAIFJlbmRl
clJlZ2lvbjo6UmVuZGVyUmVnaW9uKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlLCBSZW5kZXJGCiB7CiB9CiAKLVJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKERv
Y3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJlbmRlckZsb3dU
aHJlYWQqIGZsb3dUaHJlYWQpCitSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dU
aHJlYWQpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKICAgICAsIG1fcGFyZW50TmFtZWRGbG93
VGhyZWFkKG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5k
ZXggYjNmMzFiOC4uN2VkOGIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b24uaApAQCAtMTI5LDggKzEyOSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVRdWFkc0ZvckJveEluUmVnaW9uKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCosIGNvbnN0IFJl
bmRlckJveCosIGZsb2F0LCBmbG9hdCkgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJSZWdp
b24oRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCBSZW5kZXJGbG93VGhyZWFkKik7Ci0g
ICAgUmVuZGVyUmVnaW9uKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIFJlbmRlckZs
b3dUaHJlYWQqKTsKKyAgICBSZW5kZXJSZWdpb24oRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4s
IFJlbmRlckZsb3dUaHJlYWQqKTsKKyAgICBSZW5kZXJSZWdpb24oRG9jdW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+LCBSZW5kZXJGbG93VGhyZWFkKik7CiAKICAgICB2b2lkIGVuc3VyZU92ZXJmbG93
Rm9yQm94KGNvbnN0IFJlbmRlckJveCosIFJlZlB0cjxSZW5kZXJPdmVyZmxvdz4mLCBib29sKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcAppbmRleCBh
ZTA3M2IxLi5kOWI1YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uU2V0LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
bmRlclJlZ2lvblNldDo6UmVuZGVyUmVnaW9uU2V0KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQpCitSZW5k
ZXJSZWdpb25TZXQ6OlJlbmRlclJlZ2lvblNldChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQpCiAgICAgOiBSZW5k
ZXJSZWdpb24oZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksICZmbG93VGhyZWFkKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oCmluZGV4IDkxNjliNjAu
LmM2YTRiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b25TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZXhwYW5kVG9FbmNvbXBhc3NGbG93
VGhyZWFkQ29udGVudHNJZk5lZWRlZCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyUmVnaW9u
U2V0KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIFJlbmRlckZsb3dUaHJlYWQmKTsK
KyAgICBSZW5kZXJSZWdpb25TZXQoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+LCBSZW5kZXJG
bG93VGhyZWFkJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluc3RhbGxGbG93VGhy
ZWFkKCkgb3ZlcnJpZGUgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcAppbmRleCBiMjdkZjJjLi4wMGU5MmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTQ2LDIxICs0NiwyMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjb25zdCBpbnQgY0RlZmF1bHRXaWR0aCA9IDMwMDsKIGNvbnN0IGludCBjRGVm
YXVsdEhlaWdodCA9IDE1MDsKIAotUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKEVsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUmVwbGFjZWQ6
OlJlbmRlclJlcGxhY2VkKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgUmVuZGVyUmVwbGFj
ZWRGbGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXplKGNEZWZhdWx0V2lkdGgsIGNEZWZhdWx0SGVp
Z2h0KQogewogICAgIHNldFJlcGxhY2VkKHRydWUpOwogfQogCi1SZW5kZXJSZXBsYWNlZDo6UmVu
ZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUs
IGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCitSZW5kZXJSZXBsYWNlZDo6UmVuZGVy
UmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3Qg
TGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEY6
Om1vdmUoc3R5bGUpLCBSZW5kZXJSZXBsYWNlZEZsYWcpCiAgICAgLCBtX2ludHJpbnNpY1NpemUo
aW50cmluc2ljU2l6ZSkKIHsKICAgICBzZXRSZXBsYWNlZCh0cnVlKTsKIH0KIAotUmVuZGVyUmVw
bGFjZWQ6OlJlbmRlclJlcGxhY2VkKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCitSZW5kZXJSZXBs
YWNlZDo6UmVuZGVyUmVwbGFjZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQogICAgIDogUmVuZGVyQm94
KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBSZW5kZXJSZXBsYWNlZEZsYWcpCiAgICAgLCBt
X2ludHJpbnNpY1NpemUoaW50cmluc2ljU2l6ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmgKaW5kZXggNTUwMWNkMy4uNzE3NDI2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoK
LSAgICBSZW5kZXJSZXBsYWNlZChFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwotICAg
IFJlbmRlclJlcGxhY2VkKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgY29uc3QgTGF5
b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSk7Ci0gICAgUmVuZGVyUmVwbGFjZWQoRG9jdW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSk7Cisg
ICAgUmVuZGVyUmVwbGFjZWQoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clJlcGxhY2VkKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+LCBjb25zdCBMYXlvdXRTaXplJiBp
bnRyaW5zaWNTaXplKTsKKyAgICBSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4sIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpOwogCiAgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGljYS5jcHAKaW5kZXggMzZhZDlkNS4uYzViOGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlbmRlclJlcGxpY2E6OlJlbmRlclJlcGxpY2EoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclJlcGxpY2E6OlJlbmRlclJl
cGxpY2EoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDog
UmVuZGVyQm94KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogewogICAgIC8vIFRoaXMg
aXMgYSBoYWNrLiBSZXBsaWNhcyBhcmUgc3ludGhldGljLCBhbmQgZG9uJ3QgcGljayB1cCB0aGUg
YXR0cmlidXRlcyBvZiB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsaWNhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5o
CmluZGV4IDVmNGE1YWUuLmRjMjM5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsaWNhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxpY2EuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFJlbmRlclJlcGxpY2EgZmluYWwgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJSZXBsaWNhKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clJlcGxpY2EoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5k
ZXJSZXBsaWNhKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGljYSI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5LmNwcAppbmRleCA0NDU2ZGJmLi42M2RiOTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIGlu
bGluZSBSZW5kZXJSdWJ5UnVuJiBmaW5kUnVieVJ1blBhcmVudChSZW5kZXJPYmplY3QmIGNoaWxk
KQogCiAvLz09PSBydWJ5IGFzIGlubGluZSBvYmplY3QgPT09CiAKLVJlbmRlclJ1YnlBc0lubGlu
ZTo6UmVuZGVyUnVieUFzSW5saW5lKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyUnVieUFzSW5saW5lOjpSZW5kZXJSdWJ5QXNJbmxpbmUoRWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlcklubGluZShl
bGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQg
UmVuZGVyUnVieUFzSW5saW5lOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmIGNoaWxkKQogCiAv
Lz09PSBydWJ5IGFzIGJsb2NrIG9iamVjdCA9PT0KIAotUmVuZGVyUnVieUFzQmxvY2s6OlJlbmRl
clJ1YnlBc0Jsb2NrKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyUnVieUFzQmxvY2s6OlJlbmRlclJ1YnlBc0Jsb2NrKEVsZW1lbnQmIGVsZW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5o
CmluZGV4IGYzYTg2ZDcuLmYzMmZiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnkuaApAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyA8cnVieT4gd2hl
biB1c2VkIGFzICdkaXNwbGF5OmlubGluZScKIGNsYXNzIFJlbmRlclJ1YnlBc0lubGluZSBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJJbmxpbmUgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlBc0lubGlu
ZShFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlBc0lubGlu
ZShFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUFz
SW5saW5lKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwpAQCAtNzEsNyArNzEs
NyBAQCBwcml2YXRlOgogLy8gPHJ1Ynk+IHdoZW4gdXNlZCBhcyAnZGlzcGxheTpibG9jaycgb3Ig
J2Rpc3BsYXk6aW5saW5lLWJsb2NrJwogY2xhc3MgUmVuZGVyUnVieUFzQmxvY2sgZmluYWwgOiBw
dWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5QXNCbG9jayhF
bGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlBc0Jsb2NrKEVs
ZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QXNCbG9j
aygpOwogCiAgICAgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVs
ZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUnVieUJhc2UuY3BwCmluZGV4IDMxMzI5OTguLmRhNjM4YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcApAQCAtMzYsNyArMzYsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJ1YnlCYXNlOjpSZW5kZXJSdWJ5QmFzZShE
b2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUnVi
eUJhc2U6OlJlbmRlclJ1YnlCYXNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxl
KSkKIHsKICAgICBzZXRJbmxpbmUoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieUJhc2UuaAppbmRleCBmYjc1YjYzLi45MmYyZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBSZW5kZXJS
dWJ5UnVuOwogCiBjbGFzcyBSZW5kZXJSdWJ5QmFzZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9j
a0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlCYXNlKERvY3VtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlCYXNlKERvY3VtZW50JiwgUmVmPFJlbmRlclN0
eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUJhc2UoKTsKICAgICAKICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
UnVieUJhc2UgKGFub255bW91cykiOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieVJ1bi5jcHAKaW5kZXggMjVkOTAwYy4uNzkyZDc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLVJlbmRlclJ1YnlSdW46OlJlbmRlclJ1
YnlSdW4oRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclJ1YnlSdW46OlJlbmRlclJ1YnlSdW4oRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEY6Om1vdmUo
c3R5bGUpKQogewogICAgIHNldFJlcGxhY2VkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5UnVuLmgKaW5kZXggMDk2ODViNi4uNjUwYTM5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlbmRl
clJ1YnlUZXh0OwogCiBjbGFzcyBSZW5kZXJSdWJ5UnVuIGZpbmFsIDogcHVibGljIFJlbmRlckJs
b2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieVJ1bihEb2N1bWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5UnVuKERvY3VtZW50JiwgUmVmPFJlbmRlclN0
eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieVJ1bigpOwogCiAgICAgYm9vbCBoYXNSdWJ5
VGV4dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJ1YnlUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5j
cHAKaW5kZXggZGM3NmY3Ny4uMjQyNTViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVRleHQuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVuZGVyUnVieVRleHQ6OlJlbmRlclJ1YnlUZXh0KEVsZW1lbnQmIGVsZW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUnVieVRleHQ6OlJlbmRlclJ1YnlUZXh0
KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJC
bG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgKaW5kZXggOGZkM2MyMy4uZmJmMzc1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgKQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJSdWJ5VGV4dCBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlUZXh0KEVsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieVRleHQoRWxlbWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlUZXh0KCk7CiAKICAgICBF
bGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZv
ck5vbkFub255bW91cygpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuY3BwCmluZGV4IDY2ZGZkMmYuLjg3NDNiNzgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCkBAIC0zNCw3ICsz
NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU2Nyb2xsYmFyUGFydDo6UmVu
ZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlLCBSZW5kZXJTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQor
UmVuZGVyU2Nyb2xsYmFyUGFydDo6UmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJlbmRlclNjcm9sbGJhciogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0IHBhcnQpCiAgICAgOiBSZW5kZXJCbG9jayhkb2N1bWVudCwgV1RGOjptb3Zl
KHN0eWxlKSwgMCkKICAgICAsIG1fc2Nyb2xsYmFyKHNjcm9sbGJhcikKICAgICAsIG1fcGFydChw
YXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgK
aW5kZXggZWU2NDIyYi4uOWRjZjUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclNjcm9s
bGJhcjsKIAogY2xhc3MgUmVuZGVyU2Nyb2xsYmFyUGFydCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJC
bG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+LCBSZW5kZXJTY3JvbGxiYXIqID0gMCwgU2Nyb2xsYmFyUGFydCA9IE5v
UGFydCk7CisgICAgUmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHls
ZT4sIFJlbmRlclNjcm9sbGJhciogPSAwLCBTY3JvbGxiYXJQYXJ0ID0gTm9QYXJ0KTsKICAgICAK
ICAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxiYXJQYXJ0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4IGQ4MjQ4NjUuLjg4NzUzZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcApA
QCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLVJlbmRlclNlYXJjaEZpZWxkOjpSZW5kZXJTZWFyY2hGaWVsZChIVE1MSW5w
dXRFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNl
YXJjaEZpZWxkOjpSZW5kZXJTZWFyY2hGaWVsZChIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxl
KGZhbHNlKQogICAgICwgbV9zZWFyY2hQb3B1cCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2VhcmNoRmllbGQuaAppbmRleCBmOTNlNWY1Li45Y2EwMDQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaApAQCAtMzMsNyArMzMsNyBA
QCBjbGFzcyBTZWFyY2hQb3B1cE1lbnU7CiAKIGNsYXNzIFJlbmRlclNlYXJjaEZpZWxkIGZpbmFs
IDogcHVibGljIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSwgcHJpdmF0ZSBQb3B1cE1lbnVD
bGllbnQgewogcHVibGljOgotICAgIFJlbmRlclNlYXJjaEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU2VhcmNoRmllbGQoSFRNTElucHV0
RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclNlYXJjaEZp
ZWxkKCk7CiAKICAgICB2b2lkIHVwZGF0ZUNhbmNlbEJ1dHRvblZpc2liaWxpdHkoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5kZXggMTA3OTc5ZS4u
OWFlN2NkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBpbnQgUmVuZGVyU2xp
ZGVyOjpkZWZhdWx0VHJhY2tMZW5ndGggPSAxMjk7CiAKLVJlbmRlclNsaWRlcjo6UmVuZGVyU2xp
ZGVyKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyU2xpZGVyOjpSZW5kZXJTbGlkZXIoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwg
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCiB7CiAgICAgLy8gV2UgYXNzdW1lIFJlbmRlclNsaWRlciB3b3Jr
cyBvbmx5IHdpdGggPGlucHV0IHR5cGU9cmFuZ2U+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNsaWRlci5oCmluZGV4IDg2ZGEyMjUuLjMxZDMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2xpZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgUmVuZGVyU2xpZGVy
IGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgaW50IGRlZmF1bHRUcmFja0xlbmd0aDsKIAotICAgIFJlbmRlclNsaWRlcihIVE1MSW5w
dXRFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNsaWRlcihIVE1M
SW5wdXRFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyU2xp
ZGVyKCk7CiAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApp
bmRleCA1Njk3MjEyLi42ZGZjMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKICAgICA6IFJlbmRlckVtYmVkZGVkT2JqZWN0KGVsZW1lbnQsIFdURjo6bW92ZShz
dHlsZSkpCiAgICAgLCBtX3NuYXBzaG90UmVzb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJ
bWFnZVJlc291cmNlPigpKQogICAgICwgbV9pc1BvdGVudGlhbE1vdXNlQWN0aXZhdGlvbihmYWxz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1
Z0luLmgKaW5kZXggNjliNWE2MS4uOTRlMTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyRW1iZWRkZWRPYmplY3QgewogcHVibGljOgotICAgIFJl
bmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdl
RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclNuYXBzaG90
dGVkUGx1Z0luKCk7CiAKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBwbHVnSW5JbWFnZUVs
ZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmlu
ZGV4IDkwZTQ0NTAuLjI1MTk2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclRhYmxlOjpSZW5kZXJUYWJsZShFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlOjpSZW5kZXJU
YWJsZShFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVu
ZGVyQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faGVhZChudWxs
cHRyKQogICAgICwgbV9mb290KG51bGxwdHIpCkBAIC03Myw3ICs3Myw3IEBAIFJlbmRlclRhYmxl
OjpSZW5kZXJUYWJsZShFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKICAgICBtX2NvbHVtblBvcy5maWxsKDAsIDEpOwogfQogCi1SZW5kZXJUYWJsZTo6UmVuZGVy
VGFibGUoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclRhYmxlOjpSZW5kZXJUYWJsZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9jayhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1faGVhZChudWxscHRyKQogICAgICwgbV9mb290KG51bGxwdHIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmluZGV4IDk0ZDFjYmQuLjkwN2Q1YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCkBAIC00NCw4ICs0NCw4IEBAIGVudW0g
U2tpcEVtcHR5U2VjdGlvbnNWYWx1ZSB7IERvTm90U2tpcEVtcHR5U2VjdGlvbnMsIFNraXBFbXB0
eVNlY3Rpb25zIH07CiAKIGNsYXNzIFJlbmRlclRhYmxlIDogcHVibGljIFJlbmRlckJsb2NrIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZShFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4p
OwotICAgIFJlbmRlclRhYmxlKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlclRhYmxlKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUYWJs
ZShEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclRhYmxl
KCk7CiAKICAgICAvLyBQZXIgQ1NTIDMgd3JpdGluZy1tb2RlOiAiVGhlIGZpcnN0IGFuZCBzZWNv
bmQgdmFsdWVzIG9mIHRoZSAnYm9yZGVyLXNwYWNpbmcnIHByb3BlcnR5IHJlcHJlc2VudCBzcGFj
aW5nIGJldHdlZW4gY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2FwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDYXB0aW9uLmNwcAppbmRleCBjZTMyNDFjLi5mOGZlNWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmNwcApAQCAtMjQsNyArMjQsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclRhYmxlQ2FwdGlvbjo6UmVuZGVyVGFi
bGVDYXB0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyVGFibGVDYXB0aW9uOjpSZW5kZXJUYWJsZUNhcHRpb24oRWxlbWVudCYgZWxlbWVudCwg
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBX
VEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2FwdGlvbi5oCmluZGV4IGE3NjNmODMuLmZkMzg3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmgKQEAgLTI4LDcgKzI4LDcgQEAgY2xh
c3MgUmVuZGVyVGFibGU7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ2FwdGlvbiBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclRhYmxlQ2FwdGlvbihFbGVt
ZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlQ2FwdGlvbihFbGVt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGFibGVDYXB0aW9u
KCk7CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxl
bWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCAxMjgyMDg5Li45YzkwNzQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtNTQsNyArNTQsNyBA
QCBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclRhYmxlQ2VsbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zs
b3cgewogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlbmRlclRhYmxlQ2VsbCkgPT0gc2l6ZW9mKFNh
bWVTaXplQXNSZW5kZXJUYWJsZUNlbGwpLCBSZW5kZXJUYWJsZUNlbGxfc2hvdWxkX3N0YXlfc21h
bGwpOwogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKENvbGxhcHNlZEJvcmRlclZhbHVlKSA9PSA4LCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKLVJlbmRlclRhYmxlQ2Vs
bDo6UmVuZGVyVGFibGVDZWxsKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwoRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50
LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9jb2x1bW4odW5zZXRDb2x1bW5JbmRleCkKICAg
ICAsIG1fY2VsbFdpZHRoQ2hhbmdlZChmYWxzZSkKQEAgLTY2LDcgKzY2LDcgQEAgUmVuZGVyVGFi
bGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCiAgICAgdXBkYXRlQ29sQW5kUm93U3BhbkZsYWdzKCk7CiB9CiAKLVJlbmRl
clRhYmxlQ2VsbDo6UmVuZGVyVGFibGVDZWxsKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChEb2N1
bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9j
a0Zsb3coZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2NvbHVtbih1bnNldENv
bHVtbkluZGV4KQogICAgICwgbV9jZWxsV2lkdGhDaGFuZ2VkKGZhbHNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCmluZGV4IDY1MTMzNGMuLmM2ODczMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTM4LDggKzM4
LDggQEAgZW51bSBJbmNsdWRlQm9yZGVyQ29sb3JPck5vdCB7IERvTm90SW5jbHVkZUJvcmRlckNv
bG9yLCBJbmNsdWRlQm9yZGVyQ29sb3IgfTsKIAogY2xhc3MgUmVuZGVyVGFibGVDZWxsIGZpbmFs
IDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVDZWxs
KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGVDZWxsKERv
Y3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlQ2VsbChFbGVt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVDZWxsKERvY3VtZW50Jiwg
UmVmPFJlbmRlclN0eWxlPik7CiAgICAgCiAgICAgdW5zaWduZWQgY29sU3BhbigpIGNvbnN0CiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKaW5kZXgg
YmMxODQ5OC4uODhlNGUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDb2wuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGFibGVDb2w6OlJlbmRlclRhYmxlQ29sKEVs
ZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVD
b2w6OlJlbmRlclRhYmxlQ29sKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAs
IG1fc3BhbigxKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaApp
bmRleCAwZjNjZDk3Li4zMTk5N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDb2wuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJUYWJsZUNlbGw7CiAKIGNs
YXNzIFJlbmRlclRhYmxlQ29sIGZpbmFsIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyVGFibGVDb2woRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJUYWJsZUNvbChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgRWxlbWVudCYg
ZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9u
eW1vdXMoKSk7IH0KIAogICAgIHZvaWQgY2xlYXJQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHlC
aXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAppbmRl
eCAyZDU4OWQzLi4yYTk5NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVJvdy5jcHAKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclRhYmxlUm93OjpSZW5kZXJUYWJsZVJv
dyhFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRh
YmxlUm93OjpSZW5kZXJUYWJsZVJvdyhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDApCiAg
ICAgLCBtX3Jvd0luZGV4KHVuc2V0Um93SW5kZXgpCiB7CiAgICAgc2V0SW5saW5lKGZhbHNlKTsK
IH0KIAotUmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KERvY3VtZW50JiBkb2N1bWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVS
b3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVu
ZGVyQm94KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9yb3dJbmRleCh1
bnNldFJvd0luZGV4KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cu
aAppbmRleCAxMDk2MTIwLi44ZWU0ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuaApAQCAtMzQsOCArMzQsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4
Um93SW5kZXggPSAweDdGRkZGRkZFOyAvLyAyLDE0Nyw0ODMsNjQ2CiAKIGNsYXNzIFJlbmRlclRh
YmxlUm93IGZpbmFsIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFi
bGVSb3coRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJUYWJsZVJv
dyhEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUYWJsZVJvdyhF
bGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVSb3coRG9jdW1lbnQm
LCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogICAgIFJlbmRlclRhYmxlUm93KiBuZXh0Um93KCkgY29u
c3Q7CiAgICAgUmVuZGVyVGFibGVSb3cqIHByZXZpb3VzUm93KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IGRhNDMxMDQu
LmQ3YTc1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVMb2dp
Y2FsSGVpZ2h0Rm9yQ2VsbChSZW5kZXJUYWJsZVNlY3Rpb246OlJvd1N0cnVjdCYgcm93CiAgICAg
fQogfQogCi1SZW5kZXJUYWJsZVNlY3Rpb246OlJlbmRlclRhYmxlU2VjdGlvbihFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlU2VjdGlvbjo6
UmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAs
IG1fY0NvbCgwKQogICAgICwgbV9jUm93KDApCkBAIC05Niw3ICs5Niw3IEBAIFJlbmRlclRhYmxl
U2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0CiAgICAgc2V0SW5saW5lKGZhbHNlKTsKIH0KIAotUmVuZGVyVGFibGVTZWN0
aW9uOjpSZW5kZXJUYWJsZVNlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJv
eChkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fY0NvbCgwKQogICAgICwg
bV9jUm93KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmgKaW5kZXggZWU4NTkyOS4uNjMxNzZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uaApAQCAtNjQsOCArNjQsOCBAQCBjbGFzcyBSZW5kZXJUYWJs
ZVJvdzsKIAogY2xhc3MgUmVuZGVyVGFibGVTZWN0aW9uIGZpbmFsIDogcHVibGljIFJlbmRlckJv
eCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGVTZWN0aW9uKERvY3VtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlU2VjdGlvbihFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyVGFibGVTZWN0aW9uKERvY3VtZW50JiwgUmVmPFJlbmRlclN0
eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGFibGVTZWN0aW9uKCk7CiAKICAgICBSZW5kZXJU
YWJsZVJvdyogZmlyc3RSb3coKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDFkMWIzZTUuLjI2MTJkMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtMzcsNyArMzcs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclRleHRDb250cm9sOjpSZW5kZXJU
ZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2wo
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXgg
ZWFjNTVlNS4uOTM1Y2UyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRl
clRleHRDb250cm9sKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudCYgdGV4dEZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUq
IHN0YXJ0U3R5bGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxSZW5kZXJTdHlsZT4gY3Jl
YXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0ID0g
MDsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIGNhblNjcm9sbCgpIGNvbnN0OwpAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclRl
eHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jiwg
UmVmPFJlbmRlclN0eWxlPik7CiAKICAgICAvLyBUaGlzIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHNo
b3VsZCBub3QgYmUgbWFkZSBwdWJsaWMgYmVjYXVzZSBpbm5lclRleHRFbGVtZW50IG1heSBvdXRs
aXZlIHRoZSByZW5kZXIgdHJlZS4KICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQqIGlu
bmVyVGV4dEVsZW1lbnQoKSBjb25zdDsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKIC8vIGFu
eW1vcmUuCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyIGZpbmFsIDogcHVi
bGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZW5kZXJUZXh0
Q29udHJvbElubmVyQ29udGFpbmVyKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorICAgIGV4cGxpY2l0IFJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXIo
RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICAgICAgOiBSZW5k
ZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgIHsgfQogICAgIHZp
cnR1YWwgflJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXIoKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3Bw
CmluZGV4IDgyZmIzNWIuLjM0ZmQzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtMzIsNyArMzIsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpS
ZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50JiBlbGVtZW50LCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpS
ZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50JiBlbGVtZW50LCBS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyVGV4dENvbnRyb2woZWxlbWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTg3LDcgKzg3LDcgQEAgaW50IFJlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5
cGUsIGJvb2wKICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5l
VHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpOwogfQogCi1QYXNz
UmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y3JlYXRlSW5uZXJU
ZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0CitSZWY8UmVuZGVy
U3R5bGU+IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QKIHsKICAgICBhdXRvIHRleHRCbG9j
a1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgIHRleHRCbG9ja1N0eWxlLmdldCgp
LmluaGVyaXRGcm9tKHN0YXJ0U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAppbmRleCAwNjc5YTBmLi5hZWFjZjMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuaApAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBIVE1MVGV4dEFyZWFFbGVtZW50
OwogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJUZXh0Q29udHJvbCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUo
SFRNTFRleHRBcmVhRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxl
Pik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoKTsKIAogICAgIEhU
TUxUZXh0QXJlYUVsZW1lbnQmIHRleHRBcmVhRWxlbWVudCgpIGNvbnN0OwpAQCAtNDcsNyArNDcs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlQ29udHJvbExvZ2lj
YWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNvbnRlbnRIZWln
aHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlv
bk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8
UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFy
dFN0eWxlKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogbGF5b3V0
U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKSBvdmVycmlkZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggY2RlY2IzMy4uOWRkZjEyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi1SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJUZXh0Q29udHJvbChlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpKQogICAgICwgbV9zaG91bGREcmF3Q2Fwc0xvY2tJbmRpY2F0b3IoZmFsc2UpCiAgICAgLCBt
X2Rlc2lyZWRJbm5lclRleHRMb2dpY2FsSGVpZ2h0KC0xKQpAQCAtMzY0LDcgKzM2NCw3IEBAIExh
eW91dFVuaXQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjb21wdXRlQ29udHJvbExvZ2lj
YWxIZWlnaHQoTGF5b3V0VW5pdCBsCiAgICAgcmV0dXJuIGxpbmVIZWlnaHQgKyBub25Db250ZW50
SGVpZ2h0OwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxl
KSBjb25zdAorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNy
ZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdAog
ewogICAgIGF1dG8gdGV4dEJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAg
dGV4dEJsb2NrU3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20oc3RhcnRTdHlsZSk7CkBAIC0zODcsNyAr
Mzg3LDcgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
OjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW4KICAgICByZXR1cm4gdGV4dEJsb2NrU3R5
bGU7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6Y3JlYXRlSW5uZXJCbG9ja1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBj
b25zdAorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0
ZUlubmVyQmxvY2tTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QKIHsK
ICAgICBhdXRvIGlubmVyQmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKICAgICBp
bm5lckJsb2NrU3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20oc3RhcnRTdHlsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgK
aW5kZXggOTA2M2M0My4uNjYzYWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaApAQCAtMzIsMTEgKzMyLDExIEBA
IGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZSA6IHB1YmxpYyBSZW5kZXJUZXh0Q29udHJvbCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUoKTsKICAgICAvLyBGSVhNRTogTW92ZSBjcmVhdGUqU3R5bGUoKSB0byB0aGVpciBjbGFzc2Vz
LgotICAgIHZpcnR1YWwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0IG92ZXJyaWRlOwotICAgIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyQmxvY2tTdHlsZShjb25zdCBSZW5kZXJTdHlsZSog
c3RhcnRTdHlsZSkgY29uc3Q7CisgICAgdmlydHVhbCBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlu
bmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyQmxvY2tTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7CiAKICAgICB2b2lkIGNhcHNMb2NrU3RhdGVNYXlI
YXZlQ2hhbmdlZCgpOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgaW5saW5lIEhUTUxFbGVtZW50KiBS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmlubmVyQmxvY2tFbGVtZW50KCkgY29uc3QKIAog
Y2xhc3MgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrIGZpbmFsIDogcHVibGljIFJlbmRlckJs
b2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKEVsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIFJlbmRlclRleHRD
b250cm9sSW5uZXJCbG9jayhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQogICAgICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQog
ICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCmlu
ZGV4IGQ0M2Y5OTYuLjNiNTFjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
VFRDdWUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVu
ZGVyVlRUQ3VlOjpSZW5kZXJWVFRDdWUoVlRUQ3VlQm94JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclZUVEN1ZTo6UmVuZGVyVlRUQ3VlKFZUVEN1ZUJveCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVt
ZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9jdWUoZWxlbWVudC5nZXRDdWUoKSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAppbmRleCAzMDZiMjU4Li4zNjJh
ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oCkBAIC00MCw3ICs0
MCw3IEBAIGNsYXNzIFZUVEN1ZUJveDsKIAogY2xhc3MgUmVuZGVyVlRUQ3VlIGZpbmFsIDogcHVi
bGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVlRUQ3VlKFZUVEN1ZUJv
eCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJWVFRDdWUoVlRUQ3VlQm94Jiwg
UmVmPFJlbmRlclN0eWxlPik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXgg
ZjdlY2ZjYS4uZWJlYzc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8u
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVmlkZW86OlJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVmlkZW86OlJl
bmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCiAgICAgOiBSZW5kZXJNZWRpYShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogICAg
IHNldEludHJpbnNpY1NpemUoY2FsY3VsYXRlSW50cmluc2ljU2l6ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggNzQ4MjRiNy4uOWRjMGFhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRN
TFZpZGVvRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyVmlkZW8gZmluYWwgOiBwdWJsaWMgUmVuZGVy
TWVkaWEgewogcHVibGljOgotICAgIFJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVmlkZW8oSFRNTFZpZGVvRWxlbWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclZpZGVvKCk7CiAKICAgICBIVE1M
VmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcAppbmRleCBkMWQ1MzM2Li45NjgyODIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBTZWxlY3Rp
b25JdGVyYXRvciB7CiAgICAgfQogfTsKIAotUmVuZGVyVmlldzo6UmVuZGVyVmlldyhEb2N1bWVu
dCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVmlldzo6UmVu
ZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAg
OiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2Zy
YW1lVmlldygqZG9jdW1lbnQudmlldygpKQogICAgICwgbV9zZWxlY3Rpb25VbnNwbGl0U3RhcnQo
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IGU3NWM5ZTQuLmJiOTdk
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtNDQsNyArNDQsNyBA
QCBjbGFzcyBSZW5kZXJRdW90ZTsKIAogY2xhc3MgUmVuZGVyVmlldyBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJCbG9ja0Zsb3csIHB1YmxpYyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyVmlldyhEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5k
ZXJWaWV3KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVy
VmlldygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmNwcAppbmRleCBmNTQ5OWU5Li4wYTQwYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgdm9pZCBtb3Zl
V2lkZ2V0VG9QYXJlbnRTb29uKFdpZGdldCogY2hpbGQsIEZyYW1lVmlldyogcGFyZW50KQogICAg
IFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNjaGVkdWxlV2lkZ2V0VG9N
b3ZlKGNoaWxkLCBwYXJlbnQpOwogfQogCi1SZW5kZXJXaWRnZXQ6OlJlbmRlcldpZGdldChIVE1M
RnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyV2lkZ2V0OjpSZW5kZXJXaWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAppbmRleCBhNTU1NzhhLi4wZTBkOGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCkBAIC03NSw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICBXZWFrUHRyPFJlbmRlcldpZGdldD4gY3JlYXRlV2Vha1B0cigpIHsgcmV0
dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKIHByb3RlY3RlZDoKLSAg
ICBSZW5kZXJXaWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlcldpZGdldChIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBSZWY8UmVuZGVy
U3R5bGU+KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmly
dHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAppbmRleCAzZTlhNTQyLi40ZWZj
N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKICAgICAKLVJlbmRlck1hdGhNTEJs
b2NrOjpSZW5kZXJNYXRoTUxCbG9jayhFbGVtZW50JiBjb250YWluZXIsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKEVsZW1l
bnQmIGNvbnRhaW5lciwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhp
YmxlQm94KGNvbnRhaW5lciwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KIAotUmVuZGVyTWF0aE1M
QmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxCbG9jazo6UmVuZGVyTWF0aE1MQmxvY2soRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyRmxl
eGlibGVCb3goZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggZjhm
MTJhOC4uNjg4ZWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtNDEsOCArNDEsOCBAQCBjbGFzcyBSZW5kZXJNYXRo
TUxPcGVyYXRvcjsKIAogY2xhc3MgUmVuZGVyTWF0aE1MQmxvY2sgOiBwdWJsaWMgUmVuZGVyRmxl
eGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTEJsb2NrKEVsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWF0aE1MQmxvY2soRG9jdW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MQmxvY2soRWxlbWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTEJsb2NrKERvY3VtZW50JiwgUmVmPFJlbmRl
clN0eWxlPik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVy
T2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKICAgICAKQEAgLTcx
LDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgUmVuZGVyTWF0aE1MVGFibGUgZmluYWwgOiBw
dWJsaWMgUmVuZGVyVGFibGUgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlck1hdGhNTFRh
YmxlKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIGV4
cGxpY2l0IFJlbmRlck1hdGhNTFRhYmxlKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCiAgICAgICAgIDogUmVuZGVyVGFibGUoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxl
KSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCmluZGV4IGE4NDkzNWEuLjFmMjYwMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2Vk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZl
bmNlZC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwog
c3RhdGljIGNvbnN0IGNoYXIqIGdPcGVuaW5nQnJhY2VDaGFyID0gIigiOwogc3RhdGljIGNvbnN0
IGNoYXIqIGdDbG9zaW5nQnJhY2VDaGFyID0gIikiOwogCi1SZW5kZXJNYXRoTUxGZW5jZWQ6OlJl
bmRlck1hdGhNTEZlbmNlZChNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0
aE1MRmVuY2VkKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RGOjptb3Zl
KHN0eWxlKSkKICAgICAsIG1fY2xvc2VGZW5jZVJlbmRlcmVyKG51bGxwdHIpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaApp
bmRleCAzNzAzYTljLi4wM2YxODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MRmVuY2VkIGZpbmFsIDogcHVi
bGljIFJlbmRlck1hdGhNTFJvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MRmVuY2VkKE1h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyTWF0aE1MRmVuY2VkKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+KTsKICAgICBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50KCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCY+KG5vZGVG
b3JOb25Bbm9ueW1vdXMoKSk7IH0KICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCmluZGV4
IDVjZDNhNjAuLjQxMGY2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0
YXRpYyBjb25zdCBmbG9hdCBnTGluZU1lZGl1bSA9IDEuZjsKIHN0YXRpYyBjb25zdCBmbG9hdCBn
TGluZVRoaWNrID0gMy5mOwogc3RhdGljIGNvbnN0IGZsb2F0IGdGcmFjdGlvbkJhcldpZHRoID0g
MC4wNWY7CiAKLVJlbmRlck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFjdGlvbihNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFjdGlvbihNYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQog
ICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAs
IG1fbGluZVRoaWNrbmVzcyhnTGluZU1lZGl1bSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCA4ZjJjNzE3
Li5iYjM3NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUmVuZGVyTWF0aE1MRnJhY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVuZGVy
TWF0aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
TWF0aE1MRnJhY3Rpb24oTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4pOwogCiAgICAgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmPihub2RlRm9y
Tm9uQW5vbnltb3VzKCkpOyB9CiAgICAgZmxvYXQgbGluZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0
dXJuIG1fbGluZVRoaWNrbmVzczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5jcHAKaW5kZXggNDdlMDBjMi4uOTFlOTk1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRo
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1h
dGguY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxNYXRoOjpSZW5kZXJNYXRoTUxNYXRo
KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0
aE1MTWF0aDo6UmVuZGVyTWF0aE1MTWF0aChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MUm93KGVsZW1lbnQsIFdURjo6bW92ZShzdHls
ZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE1hdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MTWF0aC5oCmluZGV4IGM1MWJiMGIuLjkyNWYwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCkBAIC0zNCw3ICszNCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTE1hdGggZmlu
YWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxN
YXRoKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MTWF0
aChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyTWF0aE1MTWF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWVuY2xvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNZW5jbG9zZS5jcHAKaW5kZXggNmZhZDIyZS4uZWI2MjIyYyAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
TWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTE1lbmNsb3NlOjpSZW5kZXJNYXRoTUxNZW5jbG9z
ZShFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1h
dGhNTE1lbmNsb3NlOjpSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MUm93KGVsZW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgKaW5kZXggNzY5ODQ4OS4uYWQwMmY2MyAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5j
bG9zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWVuY2xvc2UuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBj
bGFzcyBSZW5kZXJNYXRoTUxNZW5jbG9zZSBmaW5hbDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MTWVuY2xvc2UoRWxlbWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNsb3NlIjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9w
ZXJhdG9yLmNwcAppbmRleCA4NWUxZWZlLi5mMDc5Yzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcApAQCAt
MTEzNSw3ICsxMTM1LDcgQEAgc3RhdGljIGNvbnN0IFVDaGFyIGhvcml6b250YWxPcGVyYXRvcnNb
XSA9IHsKIAogfQogCi1SZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3Io
TWF0aE1MRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoTWF0aE1MRWxlbWVudCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFRva2VuKGVs
ZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3N0cmV0Y2hIZWlnaHRBYm92ZUJhc2Vs
aW5lKDApCiAgICAgLCBtX3N0cmV0Y2hEZXB0aEJlbG93QmFzZWxpbmUoMCkKQEAgLTExNDUsNyAr
MTE0NSw3IEBAIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihNYXRo
TUxFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlCiAgICAgdXBkYXRlVG9rZW5Db250ZW50
KCk7CiB9CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihEb2N1
bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBTdHJpbmcm
IG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0gZm9ybSwgdW5z
aWduZWQgc2hvcnQgZmxhZ3MpCitSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBT
dHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0gZm9y
bSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpCiAgICAgOiBSZW5kZXJNYXRoTUxUb2tlbihkb2N1bWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUo
MCkKICAgICAsIG1fc3RyZXRjaERlcHRoQmVsb3dCYXNlbGluZSgwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4
IGU4NzFjZTAuLmZhZDEyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTYwLDggKzYwLDggQEAgc3RydWN0
IEVudHJ5IHsKIAogY2xhc3MgUmVuZGVyTWF0aE1MT3BlcmF0b3IgOiBwdWJsaWMgUmVuZGVyTWF0
aE1MVG9rZW4gewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKE1hdGhNTEVsZW1l
bnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoRG9j
dW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgY29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmlu
ZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtLCB1bnNpZ25lZCBzaG9ydCBmbGFncyA9
IDApOworICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKE1hdGhNTEVsZW1lbnQmLCBSZWY8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvcihEb2N1bWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4sIGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsIE1hdGhNTE9wZXJhdG9yRGljdGlv
bmFyeTo6Rm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzdHJldGNoVG8oTGF5b3V0VW5pdCBoZWlnaHRBYm92ZUJhc2VsaW5lLCBMYXlvdXRVbml0IGRl
cHRoQmVsb3dCYXNlbGluZSk7CiAgICAgdm9pZCBzdHJldGNoVG8oTGF5b3V0VW5pdCB3aWR0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJhZGljYWxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKaW5kZXggYjY4YzI5Mi4uNTFlNjk3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRp
Y2FsT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcApAQCAtNTYsNyArNTYsNyBAQCBjb25zdCBmbG9h
dCBnUmFkaWNhbExpbmVUaGlja25lc3NFbXMgPSAwLjAyZjsKIC8vIFJhZGljYWwgdGhpY2sgbGlu
ZSB0aGlja25lc3MgKGVtKQogY29uc3QgZmxvYXQgZ1JhZGljYWxUaGlja0xpbmVUaGlja25lc3NF
bXMgPSAwLjFmOwogCi1SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OlJlbmRlck1hdGhNTFJh
ZGljYWxPcGVyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxSYWRpY2FsT3Bl
cmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDog
UmVuZGVyTWF0aE1MT3BlcmF0b3IoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIFN0cmluZygm
Z1JhZGljYWxDaGFyYWN0ZXIsIDEpLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlByZWZpeCkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUmFkaWNhbE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oCmluZGV4IDVhMmE3OWYuLmQ1MzQ0MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFk
aWNhbE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJNYXRoTUxPcGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MUmFkaWNh
bE9wZXJhdG9yKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1h
dGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJldGNoVG8oTGF5b3V0VW5pdCBoZWlnaHRBYm92ZUJhc2VsaW5lLCBMYXlv
dXRVbml0IGRlcHRoQmVsb3dCYXNlbGluZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5p
dCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwCmluZGV4IGFmMmQ5MGEuLmQzNWM2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcApAQCAtNTUsMTIgKzU1
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEluIG9yZGVyIHRvIGFjY2VwdCBpbnZhbGlk
IG1hcmt1cCBhbmQgdG8gaGFuZGxlIDxtcm9vdD4gYW5kIDxtc3FydD4gY29uc2lzdGVudGx5LCB3
ZSB3aWxsIGFsbG93IGFueSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhlIEJhc2VXcmFwcGVyIG9m
IDxtcm9vdD4gdG9vLgogLy8gV2Ugd2lsbCBhbGxvdyB0aGUgSW5kZXhXcmFwcGVyIHRvIGJlIGVt
cHR5IGFuZCBpdCB3aWxsIGFsd2F5cyBjb250YWluIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSA8bXJv
b3Q+IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGVsZW1lbnRzLgogCi1SZW5kZXJNYXRoTUxSb290
OjpSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdChFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxl
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KIAotUmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVy
TWF0aE1MUm9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhkb2N1bWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKaW5kZXggZWNhNTc1MS4uZDg4OWE2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290
LmgKQEAgLTQyLDggKzQyLDggQEAgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdCA6IHB1YmxpYyBSZW5k
ZXJNYXRoTUxCbG9jayB7CiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI7CiAK
IHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0
eWxlPik7Ci0gICAgUmVuZGVyTWF0aE1MUm9vdChEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJNYXRoTUxSb290KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3Zl
cnJpZGU7CkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyIGZp
bmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1M
Um9vdDsKIAogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyKERvY3VtZW50JiBk
b2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCisgICAgUmVuZGVyTWF0aE1MUm9v
dFdyYXBwZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAg
ICAgICA6IFJlbmRlck1hdGhNTFJvdyhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkgeyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvdy5jcHAKaW5kZXggY2YwNDlhZC4uM2IxMTkxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcApAQCAtMzgsMTIg
KzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5h
bWVzOwogCi1SZW5kZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhFbGVtZW50JiBlbGVtZW50
LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0
aE1MUm93KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBS
ZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQogCi1SZW5k
ZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyTWF0
aE1MQmxvY2soZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAppbmRleCBiODdkOTY0
Li42YTZiNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93LmgKQEAgLTM2LDggKzM2LDggQEAgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdDsK
IAogY2xhc3MgUmVuZGVyTWF0aE1MUm93IDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb3coRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKLSAgICBSZW5kZXJNYXRoTUxSb3coRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyTWF0aE1MUm93KEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJNYXRoTUxSb3coRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogICAgIHN0YXRp
YyBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm93PiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVu
ZGVyZXIoUmVuZGVyTWF0aE1MUm9vdCYpOwogICAgIHZvaWQgdXBkYXRlT3BlcmF0b3JQcm9wZXJ0
aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNjcmlwdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTY3JpcHRzLmNwcAppbmRleCBiNWFkYzIzLi5jNGMzNjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGJvb2wgaXNQcmVzY3JpcHQoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJPYmplY3QpCiAgICAgcmV0dXJuIHJlbmRlck9iamVjdC5ub2RlKCkgJiYg
cmVuZGVyT2JqZWN0Lm5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXByZXNjcmlwdHNU
YWcpOwogfQogCi1SZW5kZXJNYXRoTUxTY3JpcHRzOjpSZW5kZXJNYXRoTUxTY3JpcHRzKEVsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MU2Ny
aXB0czo6UmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKICAgICAsIG1fYmFzZVdyYXBwZXIoMCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKaW5kZXggMTc5YzRiMi4u
N2M0ZTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTY3JpcHRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
LSAgICBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlcihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBXcmFwcGVyVHlwZSBraW5kKQorICAgIFJlbmRlck1hdGhN
TFNjcmlwdHNXcmFwcGVyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSwgV3JhcHBlclR5cGUga2luZCkKICAgICAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhkb2N1bWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAgICAgLCBtX2tpbmQoa2luZCkKICAgICB7CkBAIC03
MSw3ICs3MSw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHMgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyTWF0aE1MQmxvY2sgewogZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVy
OwogCiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYsIFJlZjxSZW5k
ZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxk
LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcApp
bmRleCAyODQ0YTAzLi5hZjgxZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKLVJl
bmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVudCYgZWxl
bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxTcGFjZTo6UmVu
ZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpKQogICAgICwgbV93aWR0aCgwKQogICAgICwgbV9oZWlnaHQoMCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAppbmRleCBjZGZj
NTcxLi5kMjgwZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTcGFjZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTFNwYWNlIGZpbmFsIDogcHVibGljIFJlbmRlck1h
dGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxl
bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxTcGFjZShNYXRo
TUxUZXh0RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIE1hdGhNTFRleHRFbGVtZW50
JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MVGV4dEVsZW1lbnQmPihub2Rl
Rm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcAppbmRl
eCA0YmU3NjIwLi43YjRiOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAKQEAgLTM0LDEyICszNCwx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1SZW5kZXJNYXRoTUxTcXVhcmVSb290
OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MU3F1YXJlUm9vdDo6UmVuZGVyTWF0aE1MU3F1YXJl
Um9vdChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVu
ZGVyTWF0aE1MUm9vdChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQogCi1SZW5kZXJN
YXRoTUxTcXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KERvY3VtZW50JiBkb2N1bWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpS
ZW5kZXJNYXRoTUxTcXVhcmVSb290KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJvb3QoZG9jdW1lbnQsIFdURjo6bW92ZShzdHls
ZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNxdWFyZVJvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCmluZGV4IDYxNDAwNTguLjc3YTBjYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9v
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1
YXJlUm9vdC5oCkBAIC0zOCw4ICszOCw4IEBAIGNsYXNzIFJlbmRlck1hdGhNTE1lbmNsb3NlOwog
Ly8gUmVuZGVyIHNxcnQoYmFzZSksIHVzaW5nIHJhZGljYWwgbm90YXRpb24uCiBjbGFzcyBSZW5k
ZXJNYXRoTUxTcXVhcmVSb290IGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJvb3QgewogcHVi
bGljOgotICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxTcXVhcmVSb290KERvY3VtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRG9jdW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+KTsKICAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlck1hdGhNTFNxdWFyZVJv
b3Q+IGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihSZW5kZXJNYXRoTUxNZW5jbG9z
ZSYpOwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXggOTlhNWViMS4uMWNkMGU4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tl
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5jcHAKQEAgLTM2LDEzICszNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAotUmVuZGVyTWF0aE1MVG9rZW46OlJlbmRlck1hdGhN
TFRva2VuKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyTWF0aE1MVG9rZW46OlJlbmRlck1hdGhNTFRva2VuKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEY6
Om1vdmUoc3R5bGUpKQogICAgICwgbV9jb250YWluc0VsZW1lbnQoZmFsc2UpCiB7CiB9CiAKLVJl
bmRlck1hdGhNTFRva2VuOjpSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYgZG9jdW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MVG9rZW46OlJlbmRlck1hdGhN
TFRva2VuKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6
IFJlbmRlck1hdGhNTEJsb2NrKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9j
b250YWluc0VsZW1lbnQoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKaW5kZXggMGE0ZDY0YS4uZWZjMTgxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tl
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9r
ZW4uaApAQCAtMzYsOCArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBS
ZW5kZXJNYXRoTUxUb2tlbiA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyTWF0aE1MVG9rZW4oRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAg
ICBSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJNYXRoTUxUb2tlbihFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVu
ZGVyTWF0aE1MVG9rZW4oRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogICAgIE1hdGhN
TFRleHRFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MVGV4dEVs
ZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAppbmRl
eCBkZTQ2OTMxLi42NDVlYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogICAg
IAotUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVudCYg
ZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxVbmRlck92
ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKIHsKICAgICAvLyBEZXRlcm1pbmUgd2hhdCBraW5kIG9mIHVuZGVyL292ZXIgZXhwcmVz
c2lvbiB3ZSBoYXZlIGJ5IGVsZW1lbnQgbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKaW5kZXggNmY2NTNkNS4u
ZWRlYjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxVbmRlck92ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTFVuZGVyT3ZlciBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVyKEVs
ZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVy
KEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICAKICAgICB2aXJ0dWFsIFJlbmRlck1h
dGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggNmM5ODU2
OC4uYjMxMmMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jh
c2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZXMuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBCYXNpY1NoYXBlQ2lyY2xlOjpwYXRo
KFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCiAgICAgKSk7CiB9CiAK
LVBhc3NSZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZUNpcmNsZTo6YmxlbmQoY29uc3QgQmFzaWNT
aGFwZSYgb3RoZXIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKK1JlZjxCYXNpY1NoYXBlPiBCYXNp
Y1NoYXBlQ2lyY2xlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBvdGhlciwgZG91YmxlIHByb2dy
ZXNzKSBjb25zdAogewogICAgIEFTU0VSVCh0eXBlKCkgPT0gb3RoZXIudHlwZSgpKTsKICAgICBj
b25zdCBhdXRvJiBvdGhlckNpcmNsZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVDaXJjbGU+KG90aGVy
KTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIEJhc2ljU2hhcGVFbGxpcHNlOjpwYXRoKFBhdGgm
IHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCiAgICAgICAgIHJhZGl1c1kgKiAy
KSk7CiB9CiAKLVBhc3NSZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZUVsbGlwc2U6OmJsZW5kKGNv
bnN0IEJhc2ljU2hhcGUmIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CitSZWY8QmFzaWNT
aGFwZT4gQmFzaWNTaGFwZUVsbGlwc2U6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyLCBk
b3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHR5cGUoKSA9PSBvdGhlci50eXBl
KCkpOwogICAgIGNvbnN0IGF1dG8mIG90aGVyRWxsaXBzZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVF
bGxpcHNlPihvdGhlcik7CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBCYXNpY1NoYXBlUG9seWdv
bjo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQogICAgIHBh
dGguY2xvc2VTdWJwYXRoKCk7CiB9CiAKLVBhc3NSZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZVBv
bHlnb246OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNv
bnN0CitSZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZVBvbHlnb246OmJsZW5kKGNvbnN0IEJhc2lj
U2hhcGUmIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHR5cGUo
KSA9PSBvdGhlci50eXBlKCkpOwogCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBCYXNpY1NoYXBl
SW5zZXQ6OnBhdGgoUGF0aCYgcGF0aCwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKICAg
ICBwYXRoLmFkZFJvdW5kZWRSZWN0KHIpOwogfQogCi1QYXNzUmVmPEJhc2ljU2hhcGU+IEJhc2lj
U2hhcGVJbnNldDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJsZSBwcm9ncmVz
cykgY29uc3QKK1JlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlSW5zZXQ6OmJsZW5kKGNvbnN0IEJh
c2ljU2hhcGUmIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHR5
cGUoKSA9PSBvdGhlci50eXBlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9CYXNpY1NoYXBlcy5oCmluZGV4IDQ5NDhkZjEuLjgwN2E3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7
CiAgICAgdmlydHVhbCBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IHsgcmV0dXJuIFJVTEVfTk9O
WkVSTzsgfQotICAgIHZpcnR1YWwgUGFzc1JlZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNp
Y1NoYXBlJiwgZG91YmxlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8QmFzaWNTaGFwZT4g
YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYsIGRvdWJsZSkgY29uc3QgPSAwOwogCiAgICAgdmlydHVh
bCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CiB9OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFJhZGl1cyhCYXNpY1NoYXBlUmFkaXVzIHJhZGl1cykgeyBtX3JhZGl1cyA9
IFdURjo6bW92ZShyYWRpdXMpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29u
c3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmPEJhc2ljU2hhcGU+
IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBCYXNpY1NoYXBlQ2lyY2xlVHlwZTsgfQogcHJpdmF0ZToKQEAgLTE4Niw3ICsxODYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSYWRpdXNZKEJhc2ljU2hhcGVSYWRpdXMgcmFkaXVz
WSkgeyBtX3JhZGl1c1kgPSBXVEY6Om1vdmUocmFkaXVzWSk7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBh
c3NSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYsIGRvdWJsZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNT
aGFwZSYsIGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhc2ljU2hhcGVFbGxpcHNlVHlwZTsgfQogcHJpdmF0
ZToKQEAgLTIxMCw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRQb2ludChMZW5n
dGggeCwgTGVuZ3RoIHkpIHsgbV92YWx1ZXMuYXBwZW5kKFdURjo6bW92ZSh4KSk7IG1fdmFsdWVz
LmFwcGVuZChXVEY6Om1vdmUoeSkpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwg
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmPEJhc2ljU2hh
cGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3VibGUp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KIApAQCAtMjQ5LDcgKzI0OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEJvdHRvbUxlZnRSYWRpdXMoTGVuZ3RoU2l6ZSByYWRpdXMpIHsg
bV9ib3R0b21MZWZ0UmFkaXVzID0gV1RGOjptb3ZlKHJhZGl1cyk7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFBhc3NSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYsIGRvdWJsZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFz
aWNTaGFwZSYsIGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhc2ljU2hhcGVJbnNldFR5cGU7IH0KIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaAppbmRleCA5MjQ0NTM3
Li5mYjhmZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0
YVJlZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmgKQEAg
LTI0LDE0ICsyNCwxMyBAQAogI2lmbmRlZiBEYXRhUmVmX2gKICNkZWZpbmUgRGF0YVJlZl9oCiAK
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRGF0YVJlZiB7CiBw
dWJsaWM6Ci0gICAgRGF0YVJlZihQYXNzUmVmPFQ+IGRhdGEpIDogbV9kYXRhKFdURjo6bW92ZShk
YXRhKSkgeyB9CisgICAgRGF0YVJlZihSZWY8VD4mJiBkYXRhKSA6IG1fZGF0YShXVEY6Om1vdmUo
ZGF0YSkpIHsgfQogICAgIERhdGFSZWYoY29uc3QgRGF0YVJlZiYgb3RoZXIpIDogbV9kYXRhKGNv
bnN0X2Nhc3Q8VCY+KG90aGVyLm1fZGF0YS5nZXQoKSkpIHsgfQogICAgIERhdGFSZWYmIG9wZXJh
dG9yPShjb25zdCBEYXRhUmVmJiBvdGhlcikgeyBtX2RhdGEgPSBjb25zdF9jYXN0PFQmPihvdGhl
ci5tX2RhdGEuZ2V0KCkpOyByZXR1cm4gKnRoaXM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKaW5kZXggMDQxNGM3OC4uNTdlY2Qx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUlt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1h
Z2UuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGlubGluZSBOaW5lUGllY2VJbWFnZURhdGE6Ok5pbmVQ
aWVjZUltYWdlRGF0YShjb25zdCBOaW5lUGllY2VJbWFnZURhdGEmIG90aGVyKQogewogfQogCi1Q
YXNzUmVmPE5pbmVQaWVjZUltYWdlRGF0YT4gTmluZVBpZWNlSW1hZ2VEYXRhOjpjb3B5KCkgY29u
c3QKK1JlZjxOaW5lUGllY2VJbWFnZURhdGE+IE5pbmVQaWVjZUltYWdlRGF0YTo6Y29weSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmluZVBpZWNlSW1hZ2VEYXRhKCp0aGlz
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBp
ZWNlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFn
ZS5oCmluZGV4IGQ2ODY4ZmYuLjViYWIzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCkBAIC0zNyw4ICszNyw4IEBAIGVudW0gRU5pbmVQ
aWVjZUltYWdlUnVsZSB7CiAKIGNsYXNzIE5pbmVQaWVjZUltYWdlRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPE5pbmVQaWVjZUltYWdlRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
PE5pbmVQaWVjZUltYWdlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBOaW5l
UGllY2VJbWFnZURhdGEpOyB9Ci0gICAgUGFzc1JlZjxOaW5lUGllY2VJbWFnZURhdGE+IGNvcHko
KSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPE5pbmVQaWVjZUltYWdlRGF0YT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBOaW5lUGllY2VJbWFnZURhdGEpOyB9CisgICAgUmVmPE5pbmVQ
aWVjZUltYWdlRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE5pbmVQaWVjZUltYWdlRGF0YSYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBO
aW5lUGllY2VJbWFnZURhdGEmIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGNk
MzVjYjMuLjhlNTgxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcApAQCAtODYsMTcgKzg2LDE3IEBAIGlubGluZSBSZW5kZXJTdHlsZSYgZGVm
YXVsdFN0eWxlKCkKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+
IFJlbmRlclN0eWxlOjpjcmVhdGUoKQorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3Jl
YXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJTdHlsZShkZWZhdWx0U3R5
bGUoKSkpOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlRGVm
YXVsdFN0eWxlKCkKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZURlZmF1bHRT
dHlsZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVuZGVyU3R5bGUodHJ1ZSkpOwog
fQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIEVEaXNwbGF5IGRp
c3BsYXkpCitSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHls
ZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgRURpc3BsYXkgZGlz
cGxheSkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAg
IG5ld1N0eWxlLmdldCgpLmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKQEAgLTEwNSwxMiArMTA1
LDEyIEBAIFBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0CiAgICAgcmV0dXJuIG5ld1N0eWxlOwogfQog
Ci1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3QgUmVuZGVyU3R5
bGUqIG90aGVyKQorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3QgUmVu
ZGVyU3R5bGUqIG90aGVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRlclN0eWxl
KCpvdGhlcikpOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRl
U3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwc2V1ZG9T
dHlsZSkKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGlu
Z0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUpCiB7CiAgICAg
QVNTRVJUKHBzZXVkb1N0eWxlLnN0eWxlVHlwZSgpID09IEJFRk9SRSB8fCBwc2V1ZG9TdHlsZS5z
dHlsZVR5cGUoKSA9PSBBRlRFUik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKaW5kZXggZGFkYTQxNy4uYTk1ZWYxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTQ4MSwxMyArNDgxLDEzIEBAIHBy
aXZhdGU6CiAgICAgQUxXQVlTX0lOTElORSBSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYp
OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZSgpOwot
ICAgIHN0YXRpYyBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVEZWZhdWx0U3R5bGUoKTsKLSAg
ICBzdGF0aWMgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIEVEaXNwbGF5KTsKLSAgICBzdGF0
aWMgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY2xvbmUoY29uc3QgUmVuZGVyU3R5bGUqKTsKKyAgICBz
dGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFJlbmRlclN0
eWxlPiBjcmVhdGVEZWZhdWx0U3R5bGUoKTsKKyAgICBzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSwgRURpc3BsYXkpOworICAgIHN0YXRpYyBSZWY8UmVuZGVyU3R5bGU+IGNsb25lKGNvbnN0
IFJlbmRlclN0eWxlKik7CiAKICAgICAvLyBDcmVhdGUgYSBSZW5kZXJTdHlsZSBmb3IgZ2VuZXJh
dGVkIGNvbnRlbnQgYnkgaW5oZXJpdGluZyBmcm9tIGEgcHNldWRvIHN0eWxlLgotICAgIHN0YXRp
YyBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKTsKKyAgICBzdGF0aWMgUmVmPFJlbmRl
clN0eWxlPiBjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmIHBzZXVkb1N0eWxlKTsKIAogICAgIGVudW0gSXNBdFNoYWRvd0JvdW5kYXJ5IHsKICAg
ICAgICAgQXRTaGFkb3dCb3VuZGFyeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCmluZGV4IDdkMjljYTguLmE4NjQ5MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcApAQCAt
NDMsNyArNDMsNyBAQCBzdGF0aWMgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIGRlZmF1bHRTVkdTdHls
ZSgpCiAgICAgcmV0dXJuICpzdHlsZS5nZXQoKS5nZXQoKTsKIH0KIAotUGFzc1JlZjxTVkdSZW5k
ZXJTdHlsZT4gU1ZHUmVuZGVyU3R5bGU6OmNyZWF0ZURlZmF1bHRTdHlsZSgpCitSZWY8U1ZHUmVu
ZGVyU3R5bGU+IFNWR1JlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUoKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNWR1JlbmRlclN0eWxlKENyZWF0ZURlZmF1bHQpKTsKIH0KQEAg
LTkyLDcgKzkyLDcgQEAgaW5saW5lIFNWR1JlbmRlclN0eWxlOjpTVkdSZW5kZXJTdHlsZShjb25z
dCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpCiB7CiB9CiAKLVBhc3NSZWY8U1ZHUmVuZGVyU3R5bGU+
IFNWR1JlbmRlclN0eWxlOjpjb3B5KCkgY29uc3QKK1JlZjxTVkdSZW5kZXJTdHlsZT4gU1ZHUmVu
ZGVyU3R5bGU6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1Jl
bmRlclN0eWxlKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TVkdSZW5kZXJTdHlsZS5oCmluZGV4IDAxNDMyZmUuLmJkZGFmZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCkBAIC00MSw5ICs0MSw5
IEBAIGNsYXNzIFJlbmRlck9iamVjdDsKIAogY2xhc3MgU1ZHUmVuZGVyU3R5bGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxTVkdSZW5kZXJTdHlsZT4geyAgICAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZjxTVkdSZW5kZXJTdHlsZT4gY3JlYXRlRGVmYXVsdFN0eWxlKCk7Ci0gICAgc3RhdGljIFBh
c3NSZWY8U1ZHUmVuZGVyU3R5bGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZH
UmVuZGVyU3R5bGUpOyB9Ci0gICAgUGFzc1JlZjxTVkdSZW5kZXJTdHlsZT4gY29weSgpIGNvbnN0
OworICAgIHN0YXRpYyBSZWY8U1ZHUmVuZGVyU3R5bGU+IGNyZWF0ZURlZmF1bHRTdHlsZSgpOwor
ICAgIHN0YXRpYyBSZWY8U1ZHUmVuZGVyU3R5bGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU1ZHUmVuZGVyU3R5bGUpOyB9CisgICAgUmVmPFNWR1JlbmRlclN0eWxlPiBjb3B5KCkg
Y29uc3Q7CiAgICAgflNWR1JlbmRlclN0eWxlKCk7CiAKICAgICBib29sIGluaGVyaXRlZE5vdEVx
dWFsKGNvbnN0IFNWR1JlbmRlclN0eWxlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCmluZGV4IDdkYTYwZDku
LjNkMjA0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdS
ZW5kZXJTdHlsZURlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
VkdSZW5kZXJTdHlsZURlZnMuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGlubGluZSBTdHlsZUZpbGxE
YXRhOjpTdHlsZUZpbGxEYXRhKGNvbnN0IFN0eWxlRmlsbERhdGEmIG90aGVyKQogewogfQogCi1Q
YXNzUmVmPFN0eWxlRmlsbERhdGE+IFN0eWxlRmlsbERhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0
eWxlRmlsbERhdGE+IFN0eWxlRmlsbERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlRmlsbERhdGEoKnRoaXMpKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBA
QCBpbmxpbmUgU3R5bGVTdHJva2VEYXRhOjpTdHlsZVN0cm9rZURhdGEoY29uc3QgU3R5bGVTdHJv
a2VEYXRhJiBvdGhlcikKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVN0cm9rZURhdGE+IFN0eWxlU3Ry
b2tlRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVTdHJva2VEYXRhPiBTdHlsZVN0cm9rZURh
dGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU3Ryb2tl
RGF0YSgqdGhpcykpOwogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIGlubGluZSBTdHlsZVN0b3BEYXRh
OjpTdHlsZVN0b3BEYXRhKGNvbnN0IFN0eWxlU3RvcERhdGEmIG90aGVyKQogewogfQogCi1QYXNz
UmVmPFN0eWxlU3RvcERhdGE+IFN0eWxlU3RvcERhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxl
U3RvcERhdGE+IFN0eWxlU3RvcERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFN0eWxlU3RvcERhdGEoKnRoaXMpKTsKIH0KQEAgLTE1OSw3ICsxNTksNyBAQCBp
bmxpbmUgU3R5bGVUZXh0RGF0YTo6U3R5bGVUZXh0RGF0YShjb25zdCBTdHlsZVRleHREYXRhJiBv
dGhlcikKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVRleHREYXRhPiBTdHlsZVRleHREYXRhOjpjb3B5
KCkgY29uc3QKK1JlZjxTdHlsZVRleHREYXRhPiBTdHlsZVRleHREYXRhOjpjb3B5KCkgY29uc3QK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVRleHREYXRhKCp0aGlzKSk7CiB9CkBA
IC0xODYsNyArMTg2LDcgQEAgaW5saW5lIFN0eWxlTWlzY0RhdGE6OlN0eWxlTWlzY0RhdGEoY29u
c3QgU3R5bGVNaXNjRGF0YSYgb3RoZXIpCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVNaXNjRGF0YT4g
U3R5bGVNaXNjRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVNaXNjRGF0YT4gU3R5bGVNaXNj
RGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVNaXNj
RGF0YSgqdGhpcykpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGlubGluZSBTdHlsZVNoYWRvd1NW
R0RhdGE6OlN0eWxlU2hhZG93U1ZHRGF0YShjb25zdCBTdHlsZVNoYWRvd1NWR0RhdGEmIG90aGVy
KQogewogfQogCi1QYXNzUmVmPFN0eWxlU2hhZG93U1ZHRGF0YT4gU3R5bGVTaGFkb3dTVkdEYXRh
Ojpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IFN0eWxlU2hhZG93U1ZHRGF0
YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGFkb3dT
VkdEYXRhKCp0aGlzKSk7CiB9CkBAIC0yMzgsNyArMjM4LDcgQEAgaW5saW5lIFN0eWxlUmVzb3Vy
Y2VEYXRhOjpTdHlsZVJlc291cmNlRGF0YShjb25zdCBTdHlsZVJlc291cmNlRGF0YSYgb3RoZXIp
CiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVSZXNvdXJjZURhdGE+IFN0eWxlUmVzb3VyY2VEYXRhOjpj
b3B5KCkgY29uc3QKK1JlZjxTdHlsZVJlc291cmNlRGF0YT4gU3R5bGVSZXNvdXJjZURhdGE6OmNv
cHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUmVzb3VyY2VEYXRh
KCp0aGlzKSk7CiB9CkBAIC0yNjUsNyArMjY1LDcgQEAgaW5saW5lIFN0eWxlSW5oZXJpdGVkUmVz
b3VyY2VEYXRhOjpTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YShjb25zdCBTdHlsZUluaGVyaXQK
IHsKIH0KIAotUGFzc1JlZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gU3R5bGVJbmhlcml0
ZWRSZXNvdXJjZURhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VE
YXRhPiBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGEoKnRoaXMpKTsKIH0K
QEAgLTMwMCw3ICszMDAsNyBAQCBpbmxpbmUgU3R5bGVMYXlvdXREYXRhOjpTdHlsZUxheW91dERh
dGEoY29uc3QgU3R5bGVMYXlvdXREYXRhJiBvdGhlcikKIHsKIH0KIAotUGFzc1JlZjxTdHlsZUxh
eW91dERhdGE+IFN0eWxlTGF5b3V0RGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVMYXlvdXRE
YXRhPiBTdHlsZUxheW91dERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlTGF5b3V0RGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCmluZGV4IDFlNTFlZTEuLjc2
YzFhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5k
ZXJTdHlsZURlZnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVu
ZGVyU3R5bGVEZWZzLmgKQEAgLTExNyw4ICsxMTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgLy8gSW5oZXJpdGVkL05vbi1Jbmhlcml0ZWQgU3R5bGUgRGF0YXN0cnVjdHVyZXMKICAgICBj
bGFzcyBTdHlsZUZpbGxEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVGaWxsRGF0YT4gewog
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWY8U3R5bGVGaWxsRGF0YT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZpbGxEYXRhKTsgfQotICAgICAgICBQYXNz
UmVmPFN0eWxlRmlsbERhdGE+IGNvcHkoKSBjb25zdDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHls
ZUZpbGxEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsbERhdGEp
OyB9CisgICAgICAgIFJlZjxTdHlsZUZpbGxEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsbERhdGEmKSBjb25zdDsKICAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlRmlsbERhdGEmIG90aGVyKSBjb25zdApAQCAtMTQxLDgg
KzE0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0eWxlU3Ryb2tlRGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU3Ryb2tlRGF0YT4gewogICAgIHB1YmxpYzoKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWY8U3R5bGVTdHJva2VEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlU3Ryb2tlRGF0YSk7IH0KLSAgICAgICAgUGFzc1JlZjxTdHlsZVN0
cm9rZURhdGE+IGNvcHkoKSBjb25zdDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHlsZVN0cm9rZURh
dGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTdHJva2VEYXRhKTsgfQor
ICAgICAgICBSZWY8U3R5bGVTdHJva2VEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlU3Ryb2tlRGF0YSYpIGNvbnN0OwogICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTdHJva2VEYXRhJiBvdGhlcikgY29uc3QKQEAgLTE3MSw4
ICsxNzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTdHlsZVN0b3BEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVTdG9wRGF0YT4gewogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWY8U3R5bGVTdG9wRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZVN0b3BEYXRhKTsgfQotICAgICAgICBQYXNzUmVmPFN0eWxlU3RvcERhdGE+
IGNvcHkoKSBjb25zdDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHlsZVN0b3BEYXRhPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU3RvcERhdGEpOyB9CisgICAgICAgIFJlZjxT
dHlsZVN0b3BEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFN0eWxlU3RvcERhdGEmKSBjb25zdDsKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFN0eWxlU3RvcERhdGEmIG90aGVyKSBjb25zdApAQCAtMTkwLDggKzE5MCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0eWxlVGV4dERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdHlsZVRleHREYXRhPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZjxT
dHlsZVRleHREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlVGV4dERh
dGEpOyB9Ci0gICAgICAgIFBhc3NSZWY8U3R5bGVUZXh0RGF0YT4gY29weSgpIGNvbnN0OworICAg
ICAgICBzdGF0aWMgUmVmPFN0eWxlVGV4dERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVUZXh0RGF0YSk7IH0KKyAgICAgICAgUmVmPFN0eWxlVGV4dERhdGE+IGNvcHko
KSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVRl
eHREYXRhJiBvdGhlcikgY29uc3Q7CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHls
ZVRleHREYXRhJiBvdGhlcikgY29uc3QKQEAgLTIwOSw4ICsyMDksOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgLy8gTm90ZTogdGhlIHJ1bGUgZm9yIHRoaXMgY2xhc3MgaXMsICpubyBpbmhl
cml0YW5jZSogb2YgdGhlc2UgcHJvcHMKICAgICBjbGFzcyBTdHlsZU1pc2NEYXRhIDogcHVibGlj
IFJlZkNvdW50ZWQ8U3R5bGVNaXNjRGF0YT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWY8U3R5bGVNaXNjRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHlsZU1pc2NEYXRhKTsgfQotICAgICAgICBQYXNzUmVmPFN0eWxlTWlzY0RhdGE+IGNvcHkoKSBj
b25zdDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHlsZU1pc2NEYXRhPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlTWlzY0RhdGEpOyB9CisgICAgICAgIFJlZjxTdHlsZU1pc2NE
YXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxl
TWlzY0RhdGEmKSBjb25zdDsKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTWlz
Y0RhdGEmIG90aGVyKSBjb25zdApAQCAtMjMyLDggKzIzMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIGNsYXNzIFN0eWxlU2hhZG93U1ZHRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0
eWxlU2hhZG93U1ZHRGF0YT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWY8
U3R5bGVTaGFkb3dTVkdEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
U2hhZG93U1ZHRGF0YSk7IH0KLSAgICAgICAgUGFzc1JlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IGNv
cHkoKSBjb25zdDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGFkb3dTVkdEYXRhKTsgfQorICAgICAg
ICBSZWY8U3R5bGVTaGFkb3dTVkdEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0YSYpIGNvbnN0OwogICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRhJiBvdGhlcikgY29uc3QKQEAgLTI1
MSw4ICsyNTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gTm9uLWluaGVyaXRlZCBy
ZXNvdXJjZXMKICAgICBjbGFzcyBTdHlsZVJlc291cmNlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0eWxlUmVzb3VyY2VEYXRhPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZjxTdHlsZVJlc291cmNlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVJlc291cmNlRGF0YSk7IH0KLSAgICAgICAgUGFzc1JlZjxTdHlsZVJlc291cmNlRGF0YT4gY29w
eSgpIGNvbnN0OworICAgICAgICBzdGF0aWMgUmVmPFN0eWxlUmVzb3VyY2VEYXRhPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUmVzb3VyY2VEYXRhKTsgfQorICAgICAgICBS
ZWY8U3R5bGVSZXNvdXJjZURhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3R5bGVSZXNvdXJjZURhdGEmKSBjb25zdDsKICAgICAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0eWxlUmVzb3VyY2VEYXRhJiBvdGhlcikgY29uc3QKQEAgLTI3Miw4ICsy
NzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gSW5oZXJpdGVkIHJlc291cmNlcwog
ICAgIGNsYXNzIFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8
U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhKTsgfQotICAgICAgICBQYXNz
UmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgICAgIHN0
YXRpYyBSZWY8U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGEpOyB9CisgICAgICAgIFJlZjxT
dHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSYpIGNvbnN0OwogICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGEmIG90
aGVyKSBjb25zdApAQCAtMjkzLDggKzI5Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAv
LyBQb3NpdGlvbmluZyBhbmQgc2l6aW5nIHByb3BlcnRpZXMuCiAgICAgY2xhc3MgU3R5bGVMYXlv
dXREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVMYXlvdXREYXRhPiB7CiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZUxheW91dERhdGE+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVMYXlvdXREYXRhKTsgfQotICAgICAgICBQYXNzUmVmPFN0
eWxlTGF5b3V0RGF0YT4gY29weSgpIGNvbnN0OworICAgICAgICBzdGF0aWMgUmVmPFN0eWxlTGF5
b3V0RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUxheW91dERhdGEp
OyB9CisgICAgICAgIFJlZjxTdHlsZUxheW91dERhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVMYXlvdXREYXRhJikgY29uc3Q7CiAgICAgICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUxheW91dERhdGEmIG90aGVyKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERh
dGEuY3BwCmluZGV4IGM1MWI4MjUuLjFiYTM2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgaW5saW5lIFN0eWxlQmFja2dyb3VuZERhdGE6OlN0eWxlQmFja2dyb3VuZERhdGEoY29u
c3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHlsZUJhY2tncm91
bmREYXRhPiBTdHlsZUJhY2tncm91bmREYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZUJhY2tn
cm91bmREYXRhPiBTdHlsZUJhY2tncm91bmREYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUJhY2tncm91bmREYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaApp
bmRleCBiMjk5NmRjLi4yZTFiNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHlsZUJhY2tncm91bmREYXRhIDogcHVibGljIFJlZkNv
dW50ZWQ8U3R5bGVCYWNrZ3JvdW5kRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
PFN0eWxlQmFja2dyb3VuZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVCYWNrZ3JvdW5kRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IGNv
cHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVCYWNrZ3JvdW5kRGF0YSk7IH0KKyAgICBSZWY8
U3R5bGVCYWNrZ3JvdW5kRGF0YT4gY29weSgpIGNvbnN0OwogICAgIH5TdHlsZUJhY2tncm91bmRE
YXRhKCkgeyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0
YSYgbykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVCb3hEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJv
eERhdGEuY3BwCmluZGV4IGExMTg3ZmYuLjM5MjcwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIGlubGlu
ZSBTdHlsZUJveERhdGE6OlN0eWxlQm94RGF0YShjb25zdCBTdHlsZUJveERhdGEmIG8pCiB7CiB9
CiAKLVBhc3NSZWY8U3R5bGVCb3hEYXRhPiBTdHlsZUJveERhdGE6OmNvcHkoKSBjb25zdAorUmVm
PFN0eWxlQm94RGF0YT4gU3R5bGVCb3hEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdHlsZUJveERhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuaAppbmRleCAyYzZkMDMzLi5lYzI1NWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5oCkBAIC0z
NCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVCb3hEYXRhIDog
cHVibGljIFJlZkNvdW50ZWQ8U3R5bGVCb3hEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWY8U3R5bGVCb3hEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
Qm94RGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlQm94RGF0YT4gY29weSgpIGNvbnN0OworICAg
IHN0YXRpYyBSZWY8U3R5bGVCb3hEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlQm94RGF0YSk7IH0KKyAgICBSZWY8U3R5bGVCb3hEYXRhPiBjb3B5KCkgY29uc3Q7CiAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVCb3hEYXRhJiBvKSBjb25zdDsKICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVCb3hEYXRhJiBvKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVk
RmxleGlibGVCb3hEYXRhLmNwcAppbmRleCAzYzgzNTkyLi4zMmY3ODA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNh
dGVkRmxleGlibGVCb3hEYXRhLmNwcApAQCAtNDksNyArNDksNyBAQCBpbmxpbmUgU3R5bGVEZXBy
ZWNhdGVkRmxleGlibGVCb3hEYXRhOjpTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEoY29u
c3QgU3R5bAogewogfQogCi1QYXNzUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YT4g
U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZURl
cHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6
Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVEZXByZWNhdGVk
RmxleGlibGVCb3hEYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmgK
aW5kZXggNjRjOWM3Zi4uMjBmZWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaApA
QCAtMzIsOCArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxlRGVwcmVj
YXRlZEZsZXhpYmxlQm94RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlRGVwcmVjYXRlZEZs
ZXhpYmxlQm94RGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlRGVwcmVj
YXRlZEZsZXhpYmxlQm94RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZURlcHJlY2F0
ZWRGbGV4aWJsZUJveERhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEpOyB9CisgICAgUmVmPFN0eWxlRGVwcmVjYXRl
ZEZsZXhpYmxlQm94RGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYpIGNvbnN0OwogICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmIG8pIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3Bw
CmluZGV4IDcxY2ZmNjIuLmIwZDNiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBT
dHlsZUZpbHRlckRhdGE6OlN0eWxlRmlsdGVyRGF0YShjb25zdCBTdHlsZUZpbHRlckRhdGEmIG8p
CiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVGaWx0ZXJEYXRhPiBTdHlsZUZpbHRlckRhdGE6OmNvcHko
KSBjb25zdAorUmVmPFN0eWxlRmlsdGVyRGF0YT4gU3R5bGVGaWx0ZXJEYXRhOjpjb3B5KCkgY29u
c3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZpbHRlckRhdGEoKnRoaXMpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRl
ckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEu
aAppbmRleCBlOTg0NDYxLi4yMTBkMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVGaWx0ZXJEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5
bGVGaWx0ZXJEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVGaWx0ZXJE
YXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsdGVyRGF0YSk7IH0K
LSAgICBQYXNzUmVmPFN0eWxlRmlsdGVyRGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0YXRpYyBS
ZWY8U3R5bGVGaWx0ZXJEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
RmlsdGVyRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVGaWx0ZXJEYXRhPiBjb3B5KCkgY29uc3Q7CiAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVGaWx0ZXJEYXRhJikgY29uc3Q7CiAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYgbykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEu
Y3BwCmluZGV4IDc3NTg4NmIuLjk5ZTU1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmNwcApAQCAtNDksNyArNDks
NyBAQCBpbmxpbmUgU3R5bGVGbGV4aWJsZUJveERhdGE6OlN0eWxlRmxleGlibGVCb3hEYXRhKGNv
bnN0IFN0eWxlRmxleGlibGVCb3hEYXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxlRmxleGli
bGVCb3hEYXRhPiBTdHlsZUZsZXhpYmxlQm94RGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVG
bGV4aWJsZUJveERhdGE+IFN0eWxlRmxleGlibGVCb3hEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZsZXhpYmxlQm94RGF0YSgqdGhpcykpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVC
b3hEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJv
eERhdGEuaAppbmRleCAwZTMzNTJjLi5kMzMyZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaApAQCAtMzUsOCArMzUs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxlRmxleGlibGVCb3hEYXRhIDog
cHVibGljIFJlZkNvdW50ZWQ8U3R5bGVGbGV4aWJsZUJveERhdGE+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZjxTdHlsZUZsZXhpYmxlQm94RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZUZsZXhpYmxlQm94RGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlRmxl
eGlibGVCb3hEYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZUZsZXhpYmxl
Qm94RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZsZXhpYmxlQm94
RGF0YSk7IH0KKyAgICBSZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IGNvcHkoKSBjb25zdDsKIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYpIGNvbnN0Owog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYgbykgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRl
ZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRl
ZEltYWdlLmNwcAppbmRleCBhYzA3ZDY2Li4yMjM3MWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVN0eWxlR2VuZXJhdGVkSW1h
Z2U6OlN0eWxlR2VuZXJhdGVkSW1hZ2UoUGFzc1JlZjxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPiB2
YWx1ZSkKK1N0eWxlR2VuZXJhdGVkSW1hZ2U6OlN0eWxlR2VuZXJhdGVkSW1hZ2UoUmVmPENTU0lt
YWdlR2VuZXJhdG9yVmFsdWU+JiYgdmFsdWUpCiAgICAgOiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUo
V1RGOjptb3ZlKHZhbHVlKSkKICAgICAsIG1fZml4ZWRTaXplKG1faW1hZ2VHZW5lcmF0b3JWYWx1
ZS0+aXNGaXhlZFNpemUoKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDM0MWRkNGYuLjk3NWJiZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1h
Z2UuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOwogCiBj
bGFzcyBTdHlsZUdlbmVyYXRlZEltYWdlIGZpbmFsIDogcHVibGljIFN0eWxlSW1hZ2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlR2VuZXJhdGVkSW1hZ2U+IGNyZWF0ZShQ
YXNzUmVmPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+IHZhbHVlKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0eWxlR2VuZXJhdGVkSW1hZ2U+IGNyZWF0ZShSZWY8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZT4mJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVHZW5l
cmF0ZWRJbWFnZShXVEY6Om1vdmUodmFsdWUpKSk7CiAgICAgfQpAQCAtNTYsNyArNTYsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVu
dCosIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBr
bm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgU3R5bGVHZW5lcmF0ZWRJbWFnZShQYXNzUmVmPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KTsK
KyAgICBleHBsaWNpdCBTdHlsZUdlbmVyYXRlZEltYWdlKFJlZjxDU1NJbWFnZUdlbmVyYXRvclZh
bHVlPiYmKTsKICAgICAKICAgICBSZWY8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4gbV9pbWFnZUdl
bmVyYXRvclZhbHVlOwogICAgIEZsb2F0U2l6ZSBtX2NvbnRhaW5lclNpemU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAKaW5kZXggMWIxNWRl
NC4uYmRiM2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR3JpZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdyaWREYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBpbmxpbmUgU3R5bGVHcmlkRGF0YTo6U3R5
bGVHcmlkRGF0YShjb25zdCBTdHlsZUdyaWREYXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxl
R3JpZERhdGE+IFN0eWxlR3JpZERhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlR3JpZERhdGE+
IFN0eWxlR3JpZERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlR3JpZERhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVHcmlkRGF0YS5oCmluZGV4IGJlYjRlZmYuLjNiOTljZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaApAQCAtNDMsOCArNDMs
OCBAQCB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFZlY3RvcjxTdHJpbmc+LCBXVEY6OkludEhh
c2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkVwogCiBjbGFzcyBTdHlsZUdyaWREYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8U3R5bGVHcmlkRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmPFN0eWxlR3JpZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVH
cmlkRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlR3JpZERhdGE+IGNvcHkoKSBjb25zdDsKKyAg
ICBzdGF0aWMgUmVmPFN0eWxlR3JpZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVHcmlkRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVHcmlkRGF0YT4gY29weSgpIGNvbnN0
OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlR3JpZERhdGEmIG8pIGNvbnN0CiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3Jp
ZEl0ZW1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJ
dGVtRGF0YS5jcHAKaW5kZXggOGY1YzhlYi4uMTAyYmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIGlubGluZSBTdHlsZUdyaWRJdGVtRGF0YTo6U3R5bGVHcmlkSXRlbURhdGEoY29uc3Qg
U3R5bGVHcmlkSXRlbURhdGEmIG8pCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVHcmlkSXRlbURhdGE+
IFN0eWxlR3JpZEl0ZW1EYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZUdyaWRJdGVtRGF0YT4g
U3R5bGVHcmlkSXRlbURhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFN0eWxlR3JpZEl0ZW1EYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oCmluZGV4IGIxNzU0NjkuLmQ2Njc4
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJ
dGVtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJ
dGVtRGF0YS5oCkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U3R5bGVHcmlkSXRlbURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUdyaWRJdGVtRGF0YT4g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlR3JpZEl0ZW1EYXRhKTsgfQotICAgIFBhc3NS
ZWY8U3R5bGVHcmlkSXRlbURhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxl
R3JpZEl0ZW1EYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlR3JpZEl0
ZW1EYXRhKTsgfQorICAgIFJlZjxTdHlsZUdyaWRJdGVtRGF0YT4gY29weSgpIGNvbnN0OwogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlR3JpZEl0ZW1EYXRhJiBvKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVy
aXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJp
dGVkRGF0YS5jcHAKaW5kZXggN2YyZTFjNS4uNjMzY2M1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAgaW5saW5lIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKGNv
bnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHlsZUluaGVyaXRl
ZERhdGE+IFN0eWxlSW5oZXJpdGVkRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVJbmhlcml0
ZWREYXRhPiBTdHlsZUluaGVyaXRlZERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlSW5oZXJpdGVkRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCmluZGV4IGE2
NWJlZmYuLmRlZjE0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKQEAgLTM2LDggKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTdHlsZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHls
ZUluaGVyaXRlZERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZUluaGVy
aXRlZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWRE
YXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBjb3B5KCkgY29uc3Q7Cisg
ICAgc3RhdGljIFJlZjxTdHlsZUluaGVyaXRlZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWREYXRhKTsgfQorICAgIFJlZjxTdHlsZUluaGVyaXRlZERh
dGE+IGNvcHkoKSBjb25zdDsKICAgICB+U3R5bGVJbmhlcml0ZWREYXRhKCk7CiAKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRhLmNwcAppbmRl
eCA1ZTI1ZTQ5Li41OTdiM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlTWFycXVlZURhdGEuY3BwCkBAIC00NSw3ICs0NSw3IEBAIGlubGluZSBTdHls
ZU1hcnF1ZWVEYXRhOjpTdHlsZU1hcnF1ZWVEYXRhKGNvbnN0IFN0eWxlTWFycXVlZURhdGEmIG8p
CiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVNYXJxdWVlRGF0YT4gU3R5bGVNYXJxdWVlRGF0YTo6Y29w
eSgpIGNvbnN0CitSZWY8U3R5bGVNYXJxdWVlRGF0YT4gU3R5bGVNYXJxdWVlRGF0YTo6Y29weSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVNYXJxdWVlRGF0YSgqdGhp
cykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
TWFycXVlZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1
ZWVEYXRhLmgKaW5kZXggNjllOWRjYy4uZGQxMWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTWFycXVlZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5oCkBAIC0zNCw4ICszNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVNYXJxdWVlRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPFN0eWxlTWFycXVlZURhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxT
dHlsZU1hcnF1ZWVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTWFy
cXVlZURhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZU1hcnF1ZWVEYXRhPiBjb3B5KCkgY29uc3Q7
CisgICAgc3RhdGljIFJlZjxTdHlsZU1hcnF1ZWVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFN0eWxlTWFycXVlZURhdGEpOyB9CisgICAgUmVmPFN0eWxlTWFycXVlZURhdGE+
IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU1hcnF1ZWVE
YXRhJiBvKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVNYXJxdWVlRGF0
YSYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZU11bHRpQ29sRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVNdWx0aUNvbERhdGEuY3BwCmluZGV4IDY4YjYxNzguLjNmNzcyOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcApAQCAt
NjMsNyArNjMsNyBAQCBpbmxpbmUgU3R5bGVNdWx0aUNvbERhdGE6OlN0eWxlTXVsdGlDb2xEYXRh
KGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxlTXVsdGlD
b2xEYXRhPiBTdHlsZU11bHRpQ29sRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVNdWx0aUNv
bERhdGE+IFN0eWxlTXVsdGlDb2xEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZU11bHRpQ29sRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaAppbmRleCAwZTQyZTZm
Li5mMzc1NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVNdWx0aUNvbERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVNdWx0aUNvbERhdGEuaApAQCAtMzcsOCArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFN0eWxlTXVsdGlDb2xEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVNdWx0aUNv
bERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZU11bHRpQ29sRGF0YT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZU11bHRpQ29sRGF0YSk7IH0KLSAg
ICBQYXNzUmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJl
ZjxTdHlsZU11bHRpQ29sRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZU11bHRpQ29sRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVNdWx0aUNvbERhdGE+IGNvcHkoKSBjb25z
dDsKICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVNdWx0aUNvbERhdGEmIG8p
IGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSAmbykg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmNwcAppbmRleCBhYjc5ZDc2Li4xMjY3MzBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRl
ZERhdGEuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGEKIHsK
IH0KIAotUGFzc1JlZjxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiBTdHlsZVJhcmVJbmhlcml0ZWRE
YXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiBTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHlsZVJhcmVJbmhlcml0ZWREYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAppbmRleCAyZjll
ZmY2Li5hNWQyOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAgLTQ3LDggKzQ3LDggQEAgY2xhc3MgU3R5
bGVJbWFnZTsKIC8vIGFjdHVhbGx5IHVzZXMgb25lIG9mIHRoZXNlIHByb3BlcnRpZXMuCiBjbGFz
cyBTdHlsZVJhcmVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlUmFyZUluaGVy
aXRlZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+IGNvcHkoKSBj
b25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk7IH0KKyAgICBSZWY8
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YT4gY29weSgpIGNvbnN0OwogICAgIH5TdHlsZVJhcmVJbmhl
cml0ZWREYXRhKCk7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YSYgbykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggYzUyNGEwYS4u
OGU3YmUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIGlu
bGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
KGNvbnN0IFN0eWxlUmFyZU5vbkluCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YT4gU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4gU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y29weSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXggZGYwYmViNi4uOTRiODg0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC04MCw4ICs4MCw4IEBAIGVudW0gUGFnZVNpemVU
eXBlIHsKIC8vIGFjdHVhbGx5IHVzZXMgb25lIG9mIHRoZXNlIHByb3BlcnRpZXMuCiBjbGFzcyBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE+IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YSk7IH0KKyAgICBSZWY8U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4gY29weSgpIGNvbnN0
OwogICAgIH5TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCk7CiAgICAgCiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50
cy5jcHAKaW5kZXggOWM4NmRmZi4uYWMxZjUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgaW5saW5lIFN0eWxlU2Nyb2xsU25hcFBvaW50czo6U3R5bGVTY3JvbGxTbmFwUG9p
bnRzKGNvbnN0IFN0eWxlU2Nyb2xsU25hcFBvaW50cyYKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVNj
cm9sbFNuYXBQb2ludHM+IFN0eWxlU2Nyb2xsU25hcFBvaW50czo6Y29weSgpIGNvbnN0CitSZWY8
U3R5bGVTY3JvbGxTbmFwUG9pbnRzPiBTdHlsZVNjcm9sbFNuYXBQb2ludHM6OmNvcHkoKSBjb25z
dAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2Nyb2xsU25hcFBvaW50cygqdGhp
cykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
U2Nyb2xsU25hcFBvaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
U2Nyb2xsU25hcFBvaW50cy5oCmluZGV4IGNmN2Q5ZWIuLjRlYWNlMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgK
QEAgLTUwLDggKzUwLDggQEAgTGVuZ3RoU2l6ZSBkZWZhdWx0U2Nyb2xsU25hcERlc3RpbmF0aW9u
KCk7CiAKIGNsYXNzIFN0eWxlU2Nyb2xsU25hcFBvaW50cyA6IHB1YmxpYyBSZWZDb3VudGVkPFN0
eWxlU2Nyb2xsU25hcFBvaW50cz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxl
U2Nyb2xsU25hcFBvaW50cz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNj
cm9sbFNuYXBQb2ludHMpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZVNjcm9sbFNuYXBQb2ludHM+IGNv
cHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlU2Nyb2xsU25hcFBvaW50cz4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNjcm9sbFNuYXBQb2ludHMpOyB9CisgICAg
UmVmPFN0eWxlU2Nyb2xsU25hcFBvaW50cz4gY29weSgpIGNvbnN0OwogCiAgICAgU2Nyb2xsU25h
cFBvaW50cyB4UG9pbnRzOwogICAgIFNjcm9sbFNuYXBQb2ludHMgeVBvaW50czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuY3BwCmlu
ZGV4IDc2NmE3MGYuLjVjOWJiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmNwcApAQCAtMzksNyArMzksNyBAQCBpbmxpbmUg
U3R5bGVTdXJyb3VuZERhdGE6OlN0eWxlU3Vycm91bmREYXRhKGNvbnN0IFN0eWxlU3Vycm91bmRE
YXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxlU3Vycm91bmREYXRhPiBTdHlsZVN1cnJvdW5k
RGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVTdXJyb3VuZERhdGE+IFN0eWxlU3Vycm91bmRE
YXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVN1cnJv
dW5kRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVTdXJyb3VuZERhdGEuaAppbmRleCAwZGNlMzE4Li4wMGJmNWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuaApAQCAt
MzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxlU3Vycm91bmRE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVTdXJyb3VuZERhdGE+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZjxTdHlsZVN1cnJvdW5kRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZVN1cnJvdW5kRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlU3Vycm91
bmREYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZVN1cnJvdW5kRGF0YT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVN1cnJvdW5kRGF0YSk7IH0KKyAg
ICBSZWY8U3R5bGVTdXJyb3VuZERhdGE+IGNvcHkoKSBjb25zdDsKICAgICAKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3R5bGVTdXJyb3VuZERhdGEmIG8pIGNvbnN0OwogICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTdHlsZVN1cnJvdW5kRGF0YSYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAKaW5kZXgg
YzNmOTFlYS4uZWFmMzEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgaW5saW5lIFN0
eWxlVHJhbnNmb3JtRGF0YTo6U3R5bGVUcmFuc2Zvcm1EYXRhKGNvbnN0IFN0eWxlVHJhbnNmb3Jt
RGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVRyYW5zZm9ybURhdGE+IFN0eWxlVHJhbnNm
b3JtRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBTdHlsZVRyYW5z
Zm9ybURhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
VHJhbnNmb3JtRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oCmluZGV4IGU4MmVhMjAuLjVhNDUyNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1E
YXRhLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHls
ZVRyYW5zZm9ybURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVRyYW5zZm9ybURhdGE+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVRyYW5zZm9ybURhdGE+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVUcmFuc2Zvcm1EYXRhKTsgfQotICAgIFBhc3NS
ZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdHls
ZVRyYW5zZm9ybURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVUcmFu
c2Zvcm1EYXRhKTsgfQorICAgIFJlZjxTdHlsZVRyYW5zZm9ybURhdGE+IGNvcHkoKSBjb25zdDsK
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8pIGNvbnN0
OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8pIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEu
Y3BwCmluZGV4IDIzZTZjZDIuLmQ4ZmI4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIGlubGlu
ZSBTdHlsZVZpc3VhbERhdGE6OlN0eWxlVmlzdWFsRGF0YShjb25zdCBTdHlsZVZpc3VhbERhdGEm
IG8pCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVWaXN1YWxEYXRhPiBTdHlsZVZpc3VhbERhdGE6OmNv
cHkoKSBjb25zdAorUmVmPFN0eWxlVmlzdWFsRGF0YT4gU3R5bGVWaXN1YWxEYXRhOjpjb3B5KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVZpc3VhbERhdGEoKnRoaXMp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZp
c3VhbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERh
dGEuaAppbmRleCAyYjJkNjMwLi41YjI0OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVWaXN1YWxEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8
U3R5bGVWaXN1YWxEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVWaXN1
YWxEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlVmlzdWFsRGF0YSk7
IH0KLSAgICBQYXNzUmVmPFN0eWxlVmlzdWFsRGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0YXRp
YyBSZWY8U3R5bGVWaXN1YWxEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlVmlzdWFsRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVWaXN1YWxEYXRhPiBjb3B5KCkgY29uc3Q7
CiAgICAgflN0eWxlVmlzdWFsRGF0YSgpOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0
eWxlVmlzdWFsRGF0YSYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdCbG9jay5jcHAKaW5kZXggZGNkZjhlNi4uMWM1ZjQxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKQEAgLTI4LDcgKzI4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdCbG9jazo6UmVuZGVyU1ZH
QmxvY2soU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclNWR0Jsb2NrOjpSZW5kZXJTVkdCbG9jayhTVkdHcmFwaGljc0VsZW1lbnQm
IGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3co
ZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAppbmRleCBkZGM1YjkyLi40ZDNlNGVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCkBAIC0zNSw3ICsz
NSw3IEBAIHB1YmxpYzoKICAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFu
b255bW91cygpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHQmxvY2soU1ZHR3JhcGhp
Y3NFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0Jsb2NrKFNW
R0dyYXBoaWNzRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCA0NjI2MjBh
Li4yMDEyZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVuZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYg
ZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdDb250YWluZXI6
OlJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKICAgICAsIG1fb2JqZWN0Qm91bmRpbmdCb3hWYWxpZChmYWxzZSkKICAgICAsIG1fbmVl
ZHNCb3VuZGFyaWVzVXBkYXRlKHRydWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRleCAxMTZhMzcxLi5jZTZkMTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAg
LTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNPYmplY3RCb3VuZGluZ0JveFZhbGlk
KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RCb3VuZGluZ0JveFZhbGlkOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFJlZjxSZW5kZXJTdHls
ZT4pOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclNWR0NvbnRhaW5lciI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAKaW5kZXggZjE2NmUwMC4uYmQ0
NjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdF
bGxpcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Vs
bGlwc2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVu
ZGVyU1ZHRWxsaXBzZTo6UmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1l
bnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHRWxsaXBzZTo6UmVuZGVy
U1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCiAgICAgOiBSZW5kZXJTVkdTaGFwZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQog
ICAgICwgbV91c2VQYXRoRmFsbGJhY2soZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCmluZGV4IDMwMjdmMTAuLjg2YzRlNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCkBA
IC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHRWxs
aXBzZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdTaGFwZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
U1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdFbGxpcHNlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcAppbmRleCA0YjhjNjIzLi5mM2U2ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpS
ZW5kZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBlbGVtZW50LCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OlJlbmRl
clNWR0ZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdCbG9jayhlbGVtZW50LCBXVEY6Om1v
dmUoc3R5bGUpKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3Qu
aAppbmRleCA4NmE1MzRkLi43OTA4MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaApAQCAtMzIsNyArMzIsNyBAQCBj
bGFzcyBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZHRm9yZWlnbk9i
amVjdCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHRm9yZWlnbk9i
amVjdCgpOwogCiAgICAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGZvcmVpZ25PYmplY3RFbGVt
ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0dyYWRpZW50U3RvcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0dyYWRpZW50U3RvcC5jcHAKaW5kZXggMjgzY2ZiYi4uN2Y1NmZiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9w
LmNwcApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBu
YW1lc3BhY2UgU1ZHTmFtZXM7CiAKLVJlbmRlclNWR0dyYWRpZW50U3RvcDo6UmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wKFNWR1N0b3BFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclNWR0dyYWRpZW50U3RvcDo6UmVuZGVyU1ZHR3JhZGllbnRTdG9wKFNWR1N0
b3BFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVy
RWxlbWVudChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKaW5kZXgg
YTlhYjIzZC4uY2FiZTA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIFNWR0dy
YWRpZW50RWxlbWVudDsKIC8vIFRoaXMgY2xhc3MgZXhpc3RzIG1vc3RseSBzbyB3ZSBjYW4gaGVh
ciBhYm91dCBncmFkaWVudCBzdG9wIHN0eWxlIGNoYW5nZXMKIGNsYXNzIFJlbmRlclNWR0dyYWRp
ZW50U3RvcCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJTVkdHcmFkaWVudFN0b3AoU1ZHU3RvcEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wKFNWR1N0b3BFbGVtZW50JiwgUmVmPFJlbmRlclN0
eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHR3JhZGllbnRTdG9wKCk7CiAKICAgICBTVkdT
dG9wRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR1N0b3BFbGVt
ZW50PihSZW5kZXJPYmplY3Q6Om5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
LmNwcAppbmRleCA2ZjQ3NjIzLi43ZWFjMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCkBAIC0yNSw3
ICsyNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHSGlkZGVuQ29udGFp
bmVyOjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OlJlbmRlclNW
R0hpZGRlbkNvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQogICAgIDogUmVuZGVyU1ZHQ29udGFpbmVyKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdIaWRkZW5Db250YWluZXIuaAppbmRleCA5NDczNTE4Li5kODI0ZTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
LmgKQEAgLTMwLDcgKzMwLDcgQEAgY2xhc3MgU1ZHRWxlbWVudDsKIC8vIDxkZWZzPiwgPGxpbmVh
ckdyYWRpZW50PiwgPHJhZGlhbEdyYWRpZW50PiBhcmUgYWxsIGdvb2QgZXhhbXBsZXMKIGNsYXNz
IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciA6IHB1YmxpYyBSZW5kZXJTVkdDb250YWluZXIgewog
cHVibGljOgotICAgIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdFbGVtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdFbGVtZW50
JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwCmluZGV4IDVlMzZlYjIuLjg2Y2FiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC00NCw3ICs0NCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNW
R0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKHRydWUpCiAg
ICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKaW5kZXggMDEzYTA0Zi4uMjRiMzU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBTVkdJbWFnZUVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR0ltYWdlIGZp
bmFsIDogcHVibGljIFJlbmRlclNWR01vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJT
VkdJbWFnZShTVkdJbWFnZUVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVu
ZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmly
dHVhbCB+UmVuZGVyU1ZHSW1hZ2UoKTsKIAogICAgIFNWR0ltYWdlRWxlbWVudCYgaW1hZ2VFbGVt
ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5jcHAKaW5kZXggZTcwNzU5OC4uMGNlMWM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtMzAsNyArMzAsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1SZW5kZXJTVkdJbmxpbmU6OlJlbmRlclNWR0lu
bGluZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyU1ZHSW5saW5lOjpSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50
JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVySW5saW5lKGVs
ZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiAgICAgc2V0QWx3YXlzQ3JlYXRlTGluZUJveGVz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaApp
bmRleCBmN2E3NzM2Li5mZjdkYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSZW5kZXJTVkdJbmxpbmUgOiBwdWJsaWMgUmVuZGVySW5saW5lIHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+KTsKIAogICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50Pihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5kZXggOGUyYjUwMC4uN2Y4MjM0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJT
VkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHRWxlbWVudCYgZWxlbWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdNb2RlbE9iamVjdDo6UmVuZGVy
U1ZHTW9kZWxPYmplY3QoU1ZHRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKICAgICA6IFJlbmRlckVsZW1lbnQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAg
ICAsIG1faGFzU1ZHU2hhZG93KGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IGI0NDU5NWQuLmRmNTRkNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIFNWR0VsZW1lbnQmIGVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlRm9yTm9uQW5vbnlt
b3VzKCkpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdFbGVt
ZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR01vZGVsT2JqZWN0KFNW
R0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVE
ZXN0cm95ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUGF0aC5jcHAKaW5kZXggNjI0NDU3MC4uYmViNjc0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUGF0aDo6UmVuZGVyU1ZHUGF0aChT
VkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyU1ZHUGF0aDo6UmVuZGVyU1ZHUGF0aChTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdTaGFwZShlbGVtZW50LCBX
VEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1BhdGguaAppbmRleCBlYTZlY2MyLi43NTI2MTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR1BhdGggZmluYWwgOiBwdWJsaWMgUmVuZGVy
U1ZHU2hhcGUgewogcHVibGljOgotICAgIFJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NF
bGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUGF0aCgp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVjdC5jcHAKaW5kZXggZGE4NWZmYS4uZDBkZTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVjdDo6UmVuZGVyU1ZHUmVjdChTVkdSZWN0RWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZWN0
OjpSZW5kZXJTVkdSZWN0KFNWR1JlY3RFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHU2hhcGUoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkK
ICAgICAsIG1fdXNlUGF0aEZhbGxiYWNrKGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAppbmRleCA0ZGExYjNiLi4yNTVhOWJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR1JlY3QgZmluYWwgOiBw
dWJsaWMgUmVuZGVyU1ZHU2hhcGUgewogcHVibGljOgotICAgIFJlbmRlclNWR1JlY3QoU1ZHUmVj
dEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVjdChTVkdS
ZWN0RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jl
Y3QoKTsKIAogICAgIFNWR1JlY3RFbGVtZW50JiByZWN0RWxlbWVudCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuY3BwCmluZGV4IDFhZTA5MzQuLmM1ZmQ5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcihTVkdDbGlwUGF0aEVsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBhdGhFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCmluZGV4IDMx
MTQxZjkuLjE5Y2ZiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyKFNWR0NsaXBQYXRoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBhdGhFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxl
Pik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKCk7CiAKICAgICBTVkdD
bGlwUGF0aEVsZW1lbnQmIGNsaXBQYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PFNWR0NsaXBQYXRoRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29u
dGFpbmVyLmNwcAppbmRleCA3OGQzY2U2Li5kMzRmNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNw
cApAQCAtMzQsNyArMzQsNyBAQCBzdGF0aWMgaW5saW5lIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyYg
c3ZnRXh0ZW5zaW9uc0Zyb21FbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbgogICAgIHJldHVybiBl
bGVtZW50LmRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpOwogfQogCi1SZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lcjo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoU1ZHRWxlbWVudCYg
ZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lcjo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwg
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihl
bGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9pZChlbGVtZW50LmdldElkQXR0cmli
dXRlKCkpCiAgICAgLCBtX3JlZ2lzdGVyZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgKaW5kZXgg
OTc3NDhmYi4uYWQyZjdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaApAQCAtNDUsNyArNDUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVDbGllbnRSZW5kZXJMYXllcihSZW5kZXJMYXllciopOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoU1ZHRWxlbWVudCYs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihT
VkdFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKICAgICBlbnVtIEludmFsaWRhdGlvbk1v
ZGUgewogICAgICAgICBMYXlvdXRBbmRCb3VuZGFyaWVzSW52YWxpZGF0aW9uLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcAppbmRleCBlYzcyZTU3Li43ZGNkNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtNDQsNyAr
NDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlRmlsdGVy
OjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVtZW50JiBlbGVtZW50LCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RG
Ojptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAppbmRleCAzZDM5Nzg5Li5kY2YxMDk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5oCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAog
Y2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVz
b3VyY2VDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKFNW
R0ZpbHRlckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIoU1ZHRmlsdGVyRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZp
cnR1YWwgflJlbmRlclNWR1Jlc291cmNlRmlsdGVyKCk7CiAKICAgICBTVkdGaWx0ZXJFbGVtZW50
JiBmaWx0ZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHRmlsdGVyRWxlbWVu
dD4oUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZS5jcHAKaW5kZXggNTQ2ODhjMi4uMWMxMDcxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6UmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
JiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmIGZpbHRlclByaW1p
dGl2ZUVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIoZmlsdGVyUHJpbWl0aXZlRWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAppbmRleCBkZjQ3NTk4Li5lZjVlZGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczsKIAogY2xhc3MgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHSGlkZGVuQ29udGFp
bmVyIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzJiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggMTdjNjhj
Yi4uMDk4OWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6UmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmIG5vZGUsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmIG5vZGUsIFJlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihub2RlLCBXVEY6Om1vdmUoc3R5
bGUpKQogICAgICwgbV9zaG91bGRDb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKHRydWUpCiAjaWYg
VVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuaAppbmRleCBlMzc5MTUyLi4zZmM0MDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGbG9hdFJlY3Qg
cmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiBGbG9hdFJlY3QoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+KTsKIAogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGlu
ZWFyR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcAppbmRleCBhYTZmMzIwLi5jYjEyZWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFy
R3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50OjpSZW5kZXJTVkdS
ZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCYgZWxlbWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRp
ZW50OjpSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJH
cmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUxpbmVhckdyYWRpZW50LmgKaW5kZXggMGZmODQ1OC4uN2I1YTBiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxp
bmVhckdyYWRpZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50IGZpbmFsIDogcHVibGljIFJlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlTGlu
ZWFyR3JhZGllbnQoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQoU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVz
b3VyY2VMaW5lYXJHcmFkaWVudCgpOwogCiAgICAgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50JiBs
aW5lYXJHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmdyYWRpZW50RWxlbWVu
dCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTWFya2VyLmNwcAppbmRleCAzZjcxODI2Li4yYmU4Mjc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFy
a2VyLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRl
clNWR1Jlc291cmNlTWFya2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcihTVkdNYXJrZXJFbGVt
ZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291
cmNlTWFya2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcihTVkdNYXJrZXJFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAppbmRleCAy
N2E5MGE5Li5hNTI0ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIFJl
bmRlck9iamVjdDsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIgZmluYWwgOiBwdWJs
aWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jl
c291cmNlTWFya2VyKFNWR01hcmtlckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIoU1ZHTWFya2VyRWxlbWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNlTWFya2VyKCk7CiAKICAgICBT
VkdNYXJrZXJFbGVtZW50JiBtYXJrZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
U1ZHTWFya2VyRWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggMTBiYzBhYi4uNDk5M2M2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoU1ZHTWFza0VsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXI6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyKFNWR01hc2tFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxl
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCA3Y2Q3NGRjLi40
OGFmNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBAIC0zNyw3ICszNyw3IEBAIHN0cnVjdCBNYXNrZXJEYXRh
IHsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyKFNWR01hc2tFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNW
R1Jlc291cmNlTWFza2VyKFNWR01hc2tFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAg
dmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoKTsKIAogICAgIFNWR01hc2tFbGVtZW50
JiBtYXNrRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR01hc2tFbGVtZW50PihS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6ZWxlbWVudCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
CmluZGV4IDdjMDYxM2MuLjgwOWFlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTMwLDcgKzMw
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybihTVkdQYXR0ZXJuRWxlbWVudCYgZWxlbWVudCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OlJlbmRl
clNWR1Jlc291cmNlUGF0dGVybihTVkdQYXR0ZXJuRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3Nob3VsZENvbGxlY3RQYXR0ZXJuQXR0cmlidXRl
cyh0cnVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKaW5kZXggNjE5MTg5Yi4uOWUzYjI4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4oU1ZHUGF0dGVybkVsZW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuKFNWR1Bh
dHRlcm5FbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgU1ZHUGF0dGVybkVsZW1lbnQm
IHBhdHRlcm5FbGVtZW50KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsQ2xp
ZW50c0Zyb21DYWNoZShib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VSYWRpYWxHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwCmluZGV4IDFkODhkMmIuLjU5Nzg5MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VS
YWRpYWxHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcApAQCAtMjQsNyArMjQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6OlJlbmRl
clNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNlUmFkaWFs
R3JhZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQoU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJh
ZGlhbEdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUmFkaWFsR3JhZGllbnQuaAppbmRleCAxNjVhYzAzLi44ZWVlYmQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3Jh
ZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUmFkaWFsR3JhZGllbnQuaApAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudCB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVu
dChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KCk7CiAKICAgICBTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQmIHJhZGlhbEdyYWRpZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dDo6Z3JhZGllbnRFbGVtZW50KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCAyYjU3Njc1Li5iMGY2YzFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSb290OjpSZW5kZXJTVkdSb290
KFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyU1ZHUm9vdDo6UmVuZGVyU1ZHUm9vdChTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGOjptb3Zl
KHN0eWxlKSkKICAgICAsIG1fb2JqZWN0Qm91bmRpbmdCb3hWYWxpZChmYWxzZSkKICAgICAsIG1f
aXNMYXlvdXRTaXplQ2hhbmdlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggY2JmZTAyMS4uYzUzZWZiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgU1ZHU1ZHRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZHUm9vdCBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUm9vdChTVkdTVkdFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jvb3QoU1ZHU1ZHRWxlbWVu
dCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jvb3QoKTsKIAog
ICAgIFNWR1NWR0VsZW1lbnQmIHN2Z1NWR0VsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggOWE2MWZlMy4uOGYz
MjlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFw
ZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZW5kZXJTVkdTaGFw
ZSYgbV9yZW5kZXJlcjsKIH07CiAKLVJlbmRlclNWR1NoYXBlOjpSZW5kZXJTVkdTaGFwZShTVkdH
cmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyU1ZHU2hhcGU6OlJlbmRlclNWR1NoYXBlKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwg
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1l
bnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZShmYWxz
ZSkgLy8gRGVmYXVsdCBpcyBmYWxzZSwgdGhlIGNhY2hlZCByZWN0cyBhcmUgZW1wdHkgZnJvbSB0
aGUgYmVnaW5uaW5nLgogICAgICwgbV9uZWVkc1NoYXBlVXBkYXRlKHRydWUpIC8vIERlZmF1bHQg
aXMgdHJ1ZSwgc28gd2UgZ3JhYiBhIFBhdGggb2JqZWN0IG9uY2UgZnJvbSBTVkdHcmFwaGljc0Vs
ZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgK
aW5kZXggMTA4Y2U0OC4uYWFjYTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtNDUsOCArNDUsOCBAQCBjbGFzcyBTVkdHcmFwaGljc0Vs
ZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR1NoYXBlIDogcHVibGljIFJlbmRlclNWR01vZGVsT2Jq
ZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyU1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVt
ZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIFBhdGgqLCBib29sKTsKKyAgICBSZW5kZXJTVkdT
aGFwZShTVkdHcmFwaGljc0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJT
VkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+LCBQYXRoKiwgYm9v
bCk7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHU2hhcGUoKTsKIAogICAgIFNWR0dyYXBoaWNzRWxl
bWVudCYgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHR3JhcGhp
Y3NFbGVtZW50PihSZW5kZXJTVkdNb2RlbE9iamVjdDo6ZWxlbWVudCgpKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCmluZGV4IDNmZDk3OTcuLjMw
M2U5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VFNwYW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFu
LmgKQEAgLTI4LDcgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlclNW
R1RTcGFuIGZpbmFsIDogcHVibGljIFJlbmRlclNWR0lubGluZSB7CiBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgUmVuZGVyU1ZHVFNwYW4oU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCYgZWxlbWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCisgICAgZXhwbGljaXQgUmVuZGVyU1ZHVFNwYW4o
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKICAgICAgICAgOiBSZW5kZXJTVkdJbmxpbmUoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkK
ICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5jcHAKaW5kZXggYmFjZGQzYS4uMTE5NWMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHVGV4dDo6UmVuZGVyU1ZHVGV4dChTVkdUZXh0RWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdUZXh0
OjpSZW5kZXJTVkdUZXh0KFNWR1RleHRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkK
ICAgICAsIG1fbmVlZHNSZW9yZGVyaW5nKGZhbHNlKQogICAgICwgbV9uZWVkc1Bvc2l0aW9uaW5n
VmFsdWVzVXBkYXRlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RleHQuaAppbmRleCBmZWQxM2NjLi41ZDEwOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBSZW5k
ZXJTVkdJbmxpbmVUZXh0OwogCiBjbGFzcyBSZW5kZXJTVkdUZXh0IGZpbmFsIDogcHVibGljIFJl
bmRlclNWR0Jsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdUZXh0KFNWR1RleHRFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1RleHQoU1ZHVGV4dEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdUZXh0KCk7CiAK
ICAgICBTVkdUZXh0RWxlbWVudCYgdGV4dEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAKaW5kZXggYTM1ZDZj
Ni4uYmZlNGFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0UGF0aC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZW5kZXJTVkdUZXh0UGF0aDo6UmVuZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBhdGhFbGVt
ZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1RleHRQ
YXRoOjpSZW5kZXJTVkdUZXh0UGF0aChTVkdUZXh0UGF0aEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdJbmxpbmUoZWxlbWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dFBhdGguaAppbmRleCA3MGE1ZmQ3Li42OTM1M2I2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCkBAIC0yNyw3ICsyNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHVGV4dFBhdGggZmluYWwg
OiBwdWJsaWMgUmVuZGVyU1ZHSW5saW5lIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdUZXh0UGF0
aChTVkdUZXh0UGF0aEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
U1ZHVGV4dFBhdGgoU1ZHVGV4dFBhdGhFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKICAg
ICBTVkdUZXh0UGF0aEVsZW1lbnQmIHRleHRQYXRoRWxlbWVudCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFu
c2Zvcm1hYmxlQ29udGFpbmVyLmNwcAppbmRleCBmMzZhOTIwLi40OTIxY2EyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIAotUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6UmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1l
bnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdDb250YWluZXIoZWxl
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1
ZSkKICAgICAsIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKGZhbHNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIuaAppbmRleCA5ZWRhYmVlLi5hZjM4MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
VkdHcmFwaGljc0VsZW1lbnQ7CiBjbGFzcyBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
IGZpbmFsIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFw
aGljc0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICBTVkdHcmFwaGljc0VsZW1lbnQm
IGdyYXBoaWNzRWxlbWVudCgpIHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4o
UmVuZGVyU1ZHQ29udGFpbmVyOjplbGVtZW50KCkpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyLmNwcAppbmRleCA4MDQzNmQ3Li4wMWFjZmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0
Q29udGFpbmVyLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihT
VkdTVkdFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihTVkdTVkdF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZH
Q29udGFpbmVyKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2RpZFRyYW5zZm9y
bVRvUm9vdFVwZGF0ZShmYWxzZSkKICAgICAsIG1faXNMYXlvdXRTaXplQ2hhbmdlZChmYWxzZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmll
d3BvcnRDb250YWluZXIuaAppbmRleCBmNjI0ZjVmLi4yNjU4NTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
ci5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHRodXMgd2UgaW5o
ZXJpdCBmcm9tIFJlbmRlclNWR0NvbnRhaW5lciBpbnN0ZWFkIG9mIFJlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIKIGNsYXNzIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIGZpbmFsIDog
cHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihTVkdTVkdFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxl
Pik7CiAKICAgICBTVkdTVkdFbGVtZW50JiBzdmdTVkdFbGVtZW50KCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmlu
Z0NvbnRleHQuaAppbmRleCA1MWI0MzRjLi40ZmFlMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oCkBA
IC0zMSw3ICszMSw3IEBAIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlOwogCiBjbGFzcyBTVkdUZXh0
UnVuUmVuZGVyaW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBUZXh0UnVuOjpSZW5kZXJpbmdDb250
ZXh0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdUZXh0UnVuUmVuZGVyaW5nQ29u
dGV4dD4gY3JlYXRlKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCisgICAgc3RhdGljIFJlZjxTVkdU
ZXh0UnVuUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUZXh0UnVuUmVuZGVyaW5nQ29u
dGV4dChyZW5kZXJlcikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UmVzb2x2ZUZvckRvY3VtZW50LmNwcAppbmRleCBkZDhkNjM2Li44NjlhNWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFN0eWxlIHsKIAotUGFz
c1JlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkKK1JlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmgK
aW5kZXggZjcyNDczYi4uM2YxMzAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlc29sdmVGb3JEb2N1bWVudC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFN0eWxlUmVz
b2x2ZUZvckRvY3VtZW50X2gKICNkZWZpbmUgU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnRfaAogCi0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogbmFt
ZXNwYWNlIFN0eWxlIHsKIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50
KGNvbnN0IERvY3VtZW50Jik7CitSZWY8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JEb2N1bWVudChj
b25zdCBEb2N1bWVudCYpOwogCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZVRyZWUuY3BwCmluZGV4IGQ1ODg2OWEuLmI4OGQ3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZVRyZWUuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIGJvb2wgc2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyRWxl
bWVudCYgcGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYgaW5oZXJp
dGVkU3R5bGUpCitzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmIGluaGVyaXRlZFN0eWxlKQogewogICAgIGlmIChlbGVt
ZW50Lmhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKSB7CiAgICAgICAgIGlmIChSZWZQ
dHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZWxlbWVudC5jdXN0b21TdHlsZUZvclJlbmRlcmVyKGlu
aGVyaXRlZFN0eWxlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmluZGV4IDE5MjMxZDAu
LmI4NWVjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApAQCAtMTM4LDcgKzEzOCw3
IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiAgICAgfQogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZH
QUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAocGFyZW50Tm9kZSgp
ICYmIHBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVudD4o
KnBhcmVudE5vZGUoKSkuaXNUZXh0Q29udGVudCgpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyU1ZHSW5saW5lPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5oCmluZGV4IDNhYWE5NzkuLmM3ZjVlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
RWxlbWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCmluZGV4IDRhZDA2M2QuLjNiZjE3
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCkBAIC04Miw3
ICs4Miw3IEBAIGJvb2wgU1ZHQWx0R2x5cGhFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVFNw
YW4+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRH
bHlwaEVsZW1lbnQuaAppbmRleCA2YmU5Zjc1Li5mNGFmYThhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FsdEdseXBoRWxlbWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgU1ZHQWx0R2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHQWx0R2x5cGhFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Np
cmNsZUVsZW1lbnQuY3BwCmluZGV4IDA4MmY3YWIuLjg4NzU3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNWR0NpcmNs
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBTVkdDaXJjbGVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2lyY2xlRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHRWxsaXBzZT4oKnRoaXMsIFdURjo6bW92
ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKaW5kZXggZWMx
ODJkYi4uYTM3NzkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCkBAIC00
NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZl
TGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJl
bmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAK
ICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ2lyY2xlRWxlbWVudCkK
ICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCA5NjFjZmQxLi5iMjIzZDQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApAQCAtMTEzLDcgKzExMyw3IEBA
IHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmIGNoYW5nZSkKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwogfQogCi1SZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAppbmRleCA5MzhjZmI0Li5hNzIxNmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FO
SU1BVEVEX1BST1BFUlRJRVMoU1ZHQ2xpcFBhdGhFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0VOVU1FUkFUSU9OKENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5pdHMsIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29s
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCmluZGV4IDAwNzVlZGUuLmM2YzM2
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCkBAIC0zOSwyMSArMzksMjEgQEAgcHVibGljOgogICAg
ICAgICBTVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUiA9IDMKICAgICB9OwogCi0gICAgc3RhdGlj
IFBhc3NSZWY8U1ZHQ29sb3I+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiByZ2JDb2xv
cikKKyAgICBzdGF0aWMgUmVmPFNWR0NvbG9yPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgcmdiQ29sb3IpCiAgICAgewogICAgICAgICBhdXRvIGNvbG9yID0gYWRvcHRSZWYoKm5ldyBT
VkdDb2xvcihTVkdfQ09MT1JUWVBFX1JHQkNPTE9SKSk7CiAgICAgICAgIGNvbG9yLmdldCgpLnNl
dENvbG9yKGNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKHJnYkNvbG9yKSk7CiAgICAgICAgIHJldHVy
biBjb2xvcjsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdDb2xvcj4gY3JlYXRlRnJv
bUNvbG9yKGNvbnN0IENvbG9yJiByZ2JDb2xvcikKKyAgICBzdGF0aWMgUmVmPFNWR0NvbG9yPiBj
cmVhdGVGcm9tQ29sb3IoY29uc3QgQ29sb3ImIHJnYkNvbG9yKQogICAgIHsKICAgICAgICAgYXV0
byBjb2xvciA9IGFkb3B0UmVmKCpuZXcgU1ZHQ29sb3IoU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUikp
OwogICAgICAgICBjb2xvci5nZXQoKS5zZXRDb2xvcihyZ2JDb2xvcik7CiAgICAgICAgIHJldHVy
biBjb2xvcjsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdDb2xvcj4gY3JlYXRlQ3Vy
cmVudENvbG9yKCkKKyAgICBzdGF0aWMgUmVmPFNWR0NvbG9yPiBjcmVhdGVDdXJyZW50Q29sb3Io
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQ29sb3IoU1ZHX0NPTE9S
VFlQRV9DVVJSRU5UQ09MT1IpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRGVmc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50
LmNwcAppbmRleCA4YzUyYWU0Li4wMTRjZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRGVmc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxl
bWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBTVkdEZWZzRWxlbWVudDo6aXNWYWxpZCgp
IGNvbnN0CiAgICAgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0RlZnNF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQog
ewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRkZW5Db250YWluZXI+KCp0
aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEZWZzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgK
aW5kZXggMjNlMjBhOC4uODhiZDc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RlZnNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgK
QEAgLTM4LDcgKzM4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRGVmc0VsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKaW5kZXgg
ZmYzOGEwMC4uNWI0MDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
Y3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0VsbGlwc2VFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlclNWR0VsbGlwc2U+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKaW5kZXggNWI5ZjkyYy4uNGIwNjgxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRWxsaXBzZUVsZW1lbnQpCiAgICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJF
bGVtZW50LmNwcAppbmRleCBiODc5MjQyLi40ZjhjZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlckVsZW1lbnQuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
U1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqdGhpcywgV1RGOjpt
b3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAppbmRleCAx
OTM5ZTMxLi5iNDlmNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKQEAg
LTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAK
aW5kZXggM2M3ZGY3YS4uNTI4MTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTE0MSw3
ICsxNDEsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0
U3RhbmRhcmRBdHRyaWJ1dGVzKEZpbHRlckVmZmVjdCogZgogICAgICAgICBmaWx0ZXJFZmZlY3Qt
PnNldEhhc0hlaWdodCh0cnVlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA2NmFjM2MyLi42OWFkYmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAKaW5kZXggNWQ2
N2JjYi4uZGYwNzQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
TmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZU5hbWVF
bGVtZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBQYXNzUmVmUHRyPFNWR0ZvbnRGYWNlTmFtZUVs
ZW1lbnQ+IFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZQogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCi1QYXNzUmVmPENTU0ZvbnRGYWNlU3JjVmFsdWU+IFNWR0ZvbnRGYWNlTmFt
ZUVsZW1lbnQ6OnNyY1ZhbHVlKCkgY29uc3QKK1JlZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBTVkdG
b250RmFjZU5hbWVFbGVtZW50OjpzcmNWYWx1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENTU0Zv
bnRGYWNlU3JjVmFsdWU6OmNyZWF0ZUxvY2FsKGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6Om5h
bWVBdHRyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VO
YW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlTmFtZUVsZW1lbnQu
aAppbmRleCBjNjg1ZjhhLi41ZTBhOTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VOYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RmFjZU5hbWVFbGVtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgU1ZHRm9udEZhY2VOYW1l
RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTVkdGb250RmFjZU5hbWVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAgICAgCi0gICAgUGFzc1JlZjxDU1NGb250RmFjZVNyY1ZhbHVl
PiBzcmNWYWx1ZSgpIGNvbnN0OworICAgIFJlZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBzcmNWYWx1
ZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RmFjZVVyaUVsZW1lbnQuY3BwCmluZGV4IDQ1YjkwNmQuLmRmZjc4ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFNW
R0ZvbnRGYWNlVXJpRWxlbWVudDo6flNWR0ZvbnRGYWNlVXJpRWxlbWVudCgpCiAgICAgICAgIG1f
Y2FjaGVkRm9udC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCi1QYXNzUmVmPENTU0ZvbnRGYWNl
U3JjVmFsdWU+IFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUoKSBjb25zdAorUmVmPENT
U0ZvbnRGYWNlU3JjVmFsdWU+IFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUoKSBjb25z
dAogewogICAgIGF1dG8gc3JjID0gQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlKGdldEF0dHJp
YnV0ZShYTGlua05hbWVzOjpocmVmQXR0cikpOwogICAgIEF0b21pY1N0cmluZyB2YWx1ZShmYXN0
R2V0QXR0cmlidXRlKGZvcm1hdEF0dHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZVVyaUVsZW1lbnQuaAppbmRleCAzNTBmMWZkLi5mOGMzOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgflNWR0ZvbnRGYWNlVXJpRWxlbWVudCgpOwogCi0gICAgUGFzc1JlZjxDU1NG
b250RmFjZVNyY1ZhbHVlPiBzcmNWYWx1ZSgpIGNvbnN0OworICAgIFJlZjxDU1NGb250RmFjZVNy
Y1ZhbHVlPiBzcmNWYWx1ZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlVXJp
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGJhZjgyYmYuLmZkN2Y1
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNw
cApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q+KCp0aGlzLCBXVEY6
Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmgKaW5kZXggYWI0ZDFhZi4uN2ViN2ZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3Qg
Tm9kZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2Vs
Zkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKaW5kZXggODI5YzNhZC4uOWQ3YmM2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgU1ZHR0VsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R0dFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgLy8gU1ZHIDEuMSB0ZXN0
c3VpdGUgZXhwbGljaXRlbHkgdXNlcyBjb25zdHJ1Y3RzIGxpa2UgPGcgZGlzcGxheT0ibm9uZSI+
PGxpbmVhckdyYWRpZW50PgogICAgIC8vIFdlIHN0aWxsIGhhdmUgdG8gY3JlYXRlIHJlbmRlcmVy
cyBmb3IgdGhlIDxnPiAmIDxsaW5lYXJHcmFkaWVudD4gZWxlbWVudCwgdGhvdWdoIHRoZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR0VsZW1lbnQuaAppbmRleCA4ZTdkMzY5Li5kMzlkYjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR0VsZW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNW
R0dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVh
bCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZH
VGVzdHM6OmlzVmFsaWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuY3BwCmluZGV4IGE5NDM1ZDAuLmMwZWU2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgRmxvYXRSZWN0IFNWR0dyYXBo
aWNzRWxlbWVudDo6Z2V0QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRlU3RyYXRl
Z3kpCiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldEJCb3godGhpcywgc3R5bGVVcGRh
dGVTdHJhdGVneSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdHcmFwaGljc0Vs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdHcmFwaGljc0VsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgLy8gQnkgZGVmYXVs
dCwgYW55IHN1YmNsYXNzIGlzIGV4cGVjdGVkIHRvIGRvIHBhdGgtYmFzZWQgZHJhd2luZwogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdQYXRoPigqdGhpcywgV1RGOjptb3ZlKHN0
eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKaW5kZXggNjEyNjY2
Zi4uMTEwYWQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaApAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyAiYmFzZSBjbGFzcyIgbWV0aG9kcyBmb3Ig
YWxsIHRoZSBlbGVtZW50cyB3aGljaCByZW5kZXIgYXMgcGF0aHMKICAgICB2aXJ0dWFsIHZvaWQg
dG9DbGlwUGF0aChQYXRoJik7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIFNWR0dyYXBo
aWNzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXggYmI4NDc0ZS4uN2FjZWY3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFNW
R0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ltYWdlRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSW1hZ2U+KCp0aGlzLCBXVEY6Om1v
dmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRleCAxNzY3
NjFkLi41YTliOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBAIC00OSw3
ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcAppbmRleCA0
N2ViODNlLi4xZDE4YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3Ro
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcApAQCAtMzM1LDcgKzMz
NSw3IEBAIFNWR0xlbmd0aCBTVkdMZW5ndGg6OmZyb21DU1NQcmltaXRpdmVWYWx1ZShDU1NQcmlt
aXRpdmVWYWx1ZSogdmFsdWUpCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUGFzc1JlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gU1ZHTGVuZ3RoOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xl
bmd0aCYgbGVuZ3RoKQorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBTVkdMZW5ndGg6OnRvQ1NTUHJp
bWl0aXZlVmFsdWUoY29uc3QgU1ZHTGVuZ3RoJiBsZW5ndGgpCiB7CiAgICAgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlcyBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTktOT1dO
OwogICAgIHN3aXRjaCAobGVuZ3RoLnVuaXRUeXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMZW5ndGguaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaApp
bmRleCA0MGM4ZjI1Li44NTlhOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCkBAIC05OSw3ICs5
OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgU1ZHTGVuZ3RoIGZyb21DU1NQcmlt
aXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSopOwotICAgIHN0YXRpYyBQYXNzUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiB0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aCYpOworICAg
IHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3Qg
U1ZHTGVuZ3RoJik7CiAgICAgc3RhdGljIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZUZvckFuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIFNWR0xlbmd0
aCBibGVuZChjb25zdCBTVkdMZW5ndGgmIGZyb20sIGZsb2F0IHByb2dyZXNzKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCBl
NzI1YmQ5Li4xOWIzZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZH
UmVzb3VyY2VMaW5lYXJHcmFkaWVudD4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCmluZGV4IDQ2ZDky
ZGUuLmU5MTQ3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2Vs
Zkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5jcHAKaW5kZXggMmQ5ZGQzMC4uZDgzNzg1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgU1ZH
TWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BbmdsZShjb25zdCBTVkdBbmdsZSYgYW5nbGUpCiAg
ICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChvcmllbnRBbmdsZVByb3BlcnR5SW5mbygpLT5hdHRyaWJ1
dGVOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hcmtlckVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5kZXggOGE5YjQ2Ni4uODI4ZjhlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCkBAIC0xMzIsNyArMTMyLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAppbmRleCA2ZjYy
OTFlLi43M2Y4ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKQEAgLTE1
OSw3ICsxNTksNyBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwog
fQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gbWFza1JlbmRl
cmVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI+KCp0aGlzLCBXVEY6
Om1vdmUoc3R5bGUpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
YXNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKaW5kZXgg
ZDQ2YzcwMi4uN2FiYWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKQEAgLTU1
LDcgKzU1LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiBtX2NsaWVu
dExheWVyczsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZl
TGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFp
bnQuaAppbmRleCBhYTM5YzdlLi43ZGQwNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGFpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaApAQCAtNDMs
NDEgKzQzLDQxIEBAIHB1YmxpYzoKICAgICAgICAgU1ZHX1BBSU5UVFlQRV9VUkkgPSAxMDcKICAg
ICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVua25vd24oKQorICAg
IHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVua25vd24oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9VTktOT1dOKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZU5vbmUoKQorICAgIHN0YXRp
YyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZU5vbmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9OT05FKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZUN1cnJlbnRDb2xvcigpCisgICAgc3RhdGljIFJl
ZjxTVkdQYWludD4gY3JlYXRlQ3VycmVudENvbG9yKCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR1BhaW50KFNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZUNvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPFNWR1BhaW50PiBjcmVhdGVDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCiAgICAgewogICAgICAgICBhdXRvIHBhaW50ID0gYWRvcHRSZWYoKm5ldyBTVkdQ
YWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9SKSk7CiAgICAgICAgIHBhaW50LmdldCgpLnNldENv
bG9yKGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHBhaW50OwogICAgIH0KIAotICAgIHN0YXRpYyBQ
YXNzUmVmPFNWR1BhaW50PiBjcmVhdGVVUkkoY29uc3QgU3RyaW5nJiB1cmkpCisgICAgc3RhdGlj
IFJlZjxTVkdQYWludD4gY3JlYXRlVVJJKGNvbnN0IFN0cmluZyYgdXJpKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9VUkksIHVyaSkp
OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVVUklBbmRDb2xv
cihjb25zdCBTdHJpbmcmIHVyaSwgY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIHN0YXRpYyBSZWY8
U1ZHUGFpbnQ+IGNyZWF0ZVVSSUFuZENvbG9yKGNvbnN0IFN0cmluZyYgdXJpLCBjb25zdCBDb2xv
ciYgY29sb3IpCiAgICAgewogICAgICAgICBhdXRvIHBhaW50ID0gYWRvcHRSZWYoKm5ldyBTVkdQ
YWludChTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiwgdXJpKSk7CiAgICAgICAgIHBhaW50Lmdl
dCgpLnNldENvbG9yKGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHBhaW50OwogICAgIH0KIAotICAg
IHN0YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVVUklBbmROb25lKGNvbnN0IFN0cmluZyYg
dXJpKQorICAgIHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVSSUFuZE5vbmUoY29uc3QgU3Ry
aW5nJiB1cmkpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQYWludChT
VkdfUEFJTlRUWVBFX1VSSV9OT05FLCB1cmkpKTsKICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I7
CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdQYWludD4gY3JlYXRlKGNvbnN0IFNWR1BhaW50VHlw
ZSYgdHlwZSwgY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBzdGF0
aWMgUmVmPFNWR1BhaW50PiBjcmVhdGUoY29uc3QgU1ZHUGFpbnRUeXBlJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHVyaSwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKICAgICAgICAgYXV0byBwYWlu
dCA9IGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQodHlwZSwgdXJpKSk7CiAgICAgICAgIHBhaW50Lmdl
dCgpLnNldENvbG9yKGNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCmlu
ZGV4IGEwNTlkMmEuLjM0ZDYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cApAQCAtNDAzLDcgKzQwMyw3IEBAIEZsb2F0UmVjdCBTVkdQYXRoRWxlbWVudDo6Z2V0QkJveChT
dHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRlU3RyYXRlZ3kpCiAgICAgcmV0dXJuIHJlbmRl
cmVyLT5wYXRoKCkuYm91bmRpbmdSZWN0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdGhFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIC8vIEJ5
IGRlZmF1bHQsIGFueSBzdWJjbGFzcyBpcyBleHBlY3RlZCB0byBkbyBwYXRoLWJhc2VkIGRyYXdp
bmcKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUGF0aD4oKnRoaXMsIFdURjo6
bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAppbmRleCA3NWIxNmEw
Li4yZWQzMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaApAQCAtMTE2LDcgKzEx
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogICAgIEVORF9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIE5v
ZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKaW5k
ZXggOWIzYzdhZi4uODM5YmY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgICAgIG9iamVjdC0+c2V0
TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdHRlcm5F
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHUGF0dGVybkVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlUGF0dGVybj4oKnRoaXMsIFdURjo6bW92ZShzdHls
ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAppbmRleCA0OTJjZDY4
Li5jMmI0MDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaApAQCAtNjIs
NyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5jcHAKaW5kZXggODIxMTdmMS4uZTM5NGEzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTEyOSw3ICsxMjksNyBA
QCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0
KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ+KCp0aGlzLCBXVEY6
Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuaAppbmRleCAxMmJmNGVkLi4yOTNlNTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwog
CiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKaW5kZXggZDgwZDgxYS4uYmMz
YWU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCkBAIC0xNDQsNyArMTQ0
LDcgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1JlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
U1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1JlY3Q+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKaW5k
ZXggM2NlZThkOS4uMmYzNDA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jl
Y3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRp
dmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVh
bCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsK
IAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxlbWVudCkK
ICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcAppbmRleCAxMmZlZDdlLi45MmEyMDJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgYm9vbCBTVkdTVkdFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gU3R5
bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBTVkdTVkdFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU1ZHRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAg
ICBpZiAoaXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJTVkdSb290PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCAyNzgyMjcyLi5kZDMxOWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIElu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKaW5kZXggMTQwNWQ0ZS4u
MmQ0ZGU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBAIC05Nyw3ICs5
Nyw3IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTdG9wRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR1N0b3BFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdHcmFkaWVudFN0
b3A+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVt
ZW50LmgKaW5kZXggN2RhMzdjNi4uNmZkYmY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0b3BFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVt
ZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc0dy
YWRpZW50U3RvcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVm
PFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBv
dmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdG9w
RWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAppbmRleCBmYzNl
MmYzLi4wY2ZjNDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIGJvb2wgU1ZHU3dpdGNoRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTd2l0Y2hFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgKaW5kZXggY2U2M2Y5OS4uYjM2MDBmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVkdU
ZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAogICAgIEJF
R0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVtZW50KQogICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTeW1ib2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50
LmNwcAppbmRleCA4MTA5MDEzLi5hYzljZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJv
bEVsZW1lbnQuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBTVkdTeW1ib2xFbGVtZW50Ojpz
ZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKICAgICByZXR1cm4gaGFzQXR0cmlidXRlKFNW
R05hbWVzOjp2aWV3Qm94QXR0cik7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdT
eW1ib2xFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyPigqdGhpcywgV1RGOjptb3Zl
KHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAppbmRleCAzMTQ2
NWFjLi4xODU1NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5k
ZXggYjAxMjQ4Yy4uN2M4MWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIFBhc3NSZWZQdHI8U1ZHVFJlZkVsZW1lbnQ+IFNWR1RSZWZFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKIAogY2xhc3MgU1ZHVFJl
ZlRhcmdldEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWY8U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI+IGNyZWF0ZShTVkdU
UmVmRWxlbWVudCYgdHJlZkVsZW1lbnQpCisgICAgc3RhdGljIFJlZjxTVkdUUmVmVGFyZ2V0RXZl
bnRMaXN0ZW5lcj4gY3JlYXRlKFNWR1RSZWZFbGVtZW50JiB0cmVmRWxlbWVudCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyKHRy
ZWZFbGVtZW50KSk7CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBT
VkdUUmVmRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RSZWZFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdJbmxpbmU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKaW5kZXggOTg3ZmM2Ni4uYzA5ZTViMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVm
PFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUU3BhbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVu
dC5jcHAKaW5kZXggZDM0NGYwZS4uYjFkNDA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFu
RWxlbWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1JlZlB0cjxTVkdUU3BhbkVsZW1lbnQ+
IFNWR1RTcGFuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1RTcGFuRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdUU3Bhbj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RT
cGFuRWxlbWVudC5oCmluZGV4IDVlZDhiMTIuLmI2ZjE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VFNwYW5FbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBT
VkdUU3BhbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgICAg
ICAgICAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dEVsZW1lbnQuY3BwCmluZGV4IGUwOWUyZGYuLmJlZjUxNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcApAQCAtNjYsNyArNjYsNyBAQCBBZmZpbmVUcmFuc2Zv
cm0gU1ZHVGV4dEVsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdAogICAgIHJl
dHVybiBtYXRyaXg7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUZXh0RWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJTVkdUZXh0PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0RWxlbWVudC5oCmluZGV4IDQzMDg0ZDUuLmQxNTVjM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0RWxlbWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgU1ZHVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0
IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5jcHAKaW5kZXggY2RiOTk1Yi4uMTQwYjdhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFNWR1Rl
eHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVGV4dFBh
dGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUZXh0UGF0aD4oKnRoaXMs
IFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5oCmluZGV4IGYyNDRiYzMuLmUwMWQ2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDQyYmM4ZjEuLjdj
ZTNhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTUyMyw3ICs1MjMs
NyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkU2hhZG93QW5kSW5zdGFuY2VUcmVlKFNWR0Vs
ZW1lbnQqIHRhcmdldCkKICNlbmRpZgogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZH
VXNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+KCp0aGlzLCBXVEY6Om1v
dmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCmluZGV4IDJmMGJjMDUu
LjYxOTcwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaApAQCAtNjksNyArNjksNyBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxBdHRhY2hSZW5kZXJlcnMoKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHRvQ2xpcFBhdGgoUGF0aCYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4
IGVjNzE4MGYuLjlmY2ZkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTI1NSw3ICsyNTUsNyBAQCBib29sIFdlYkVk
aXRvckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKIAogYm9vbCBX
ZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwg
UmFuZ2UqIHJhbmdlKQogewotICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxl
U3R5bGUoc3R5bGUtPmlzTXV0YWJsZSgpID8gc3RhdGljX2Nhc3Q8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcyY+KCpzdHlsZSkgOiBzdHlsZS0+bXV0YWJsZUNvcHkoKSk7CisgICAgUmVmPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IG11dGFibGVTdHlsZShzdHlsZS0+aXNNdXRhYmxlKCkgPyBSZWY8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4oc3RhdGljX2Nhc3Q8TXV0YWJsZVN0eWxlUHJvcGVydGllcyY+
KCpzdHlsZSkpIDogc3R5bGUtPm11dGFibGVDb3B5KCkpOwogICAgIHJldHVybiBbW21fd2ViVmll
dyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldwogICAgICAgICBz
aG91bGRBcHBseVN0eWxlOmtpdChtdXRhYmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRp
b24oKSkgdG9FbGVtZW50c0luRE9NUmFuZ2U6a2l0KHJhbmdlKV07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKaW5k
ZXggYWQxYjIxZi4uNGNiYTJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaApAQCAtMjgsMTEgKzI4LDExIEBACiAK
ICNpbXBvcnQgPFdlYkNvcmUvTGlua0hhc2guaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaXRlZExp
bmtTdG9yZS5oPgotI2ltcG9ydCA8d3RmL1Bhc3NSZWYuaD4KKyNpbXBvcnQgPHd0Zi9SZWYuaD4K
IAogY2xhc3MgV2ViVmlzaXRlZExpbmtTdG9yZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpWaXNp
dGVkTGlua1N0b3JlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxXZWJWaXNpdGVkTGlu
a1N0b3JlPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpc2l0ZWRMaW5rU3RvcmU+IGNy
ZWF0ZSgpOwogICAgIHZpcnR1YWwgfldlYlZpc2l0ZWRMaW5rU3RvcmUoKTsKIAogICAgIHN0YXRp
YyB2b2lkIHNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUubW0KaW5k
ZXggNmNiOGU2Yi4uYTAwZmMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLm1tCkBAIC00NSw3ICs0NSw3IEBAIHN0
YXRpYyBIYXNoU2V0PFdlYlZpc2l0ZWRMaW5rU3RvcmUqPiYgdmlzaXRlZExpbmtTdG9yZXMoKQog
fQogCiAKLVBhc3NSZWY8V2ViVmlzaXRlZExpbmtTdG9yZT4gV2ViVmlzaXRlZExpbmtTdG9yZTo6
Y3JlYXRlKCkKK1JlZjxXZWJWaXNpdGVkTGlua1N0b3JlPiBXZWJWaXNpdGVkTGlua1N0b3JlOjpj
cmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpc2l0ZWRMaW5rU3RvcmUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
TGlzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCmlu
ZGV4IDBlZWJiMjYuLmI1NWM3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0LmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpZiBV
U0UoQ0YpCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBCYWNrRm9yd2FyZExpc3RTdGF0ZTsKIAog
Y2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6QmFja0ZvcndhcmRMaXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWY8V2ViQmFja0ZvcndhcmRMaXN0PiBjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIHN0
YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0PiBjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQmFja0ZvcndhcmRMaXN0KHBh
Z2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCmlu
ZGV4IGJiNDBjZDIuLjE2ZjdjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
R3JvdXAuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFBhc3NSZWZQdHI8V2ViUGFnZUdyb3VwPiBXZWJQ
YWdlR3JvdXA6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlzCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQYWdlR3JvdXAoaWRlbnRpZmllciwgdmlzaWJsZVRvSW5q
ZWN0ZWRCdW5kbGUsIHZpc2libGVUb0hpc3RvcnlDbGllbnQpKTsKIH0KIAotUGFzc1JlZjxXZWJQ
YWdlR3JvdXA+IFdlYlBhZ2VHcm91cDo6Y3JlYXRlTm9uTnVsbChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIGJvb2wgdmlzaWJsZVRvSGlzdG9y
eUNsaWVudCkKK1JlZjxXZWJQYWdlR3JvdXA+IFdlYlBhZ2VHcm91cDo6Y3JlYXRlTm9uTnVsbChj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIGJv
b2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJQYWdlR3JvdXAoaWRlbnRpZmllciwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIHZpc2libGVU
b0hpc3RvcnlDbGllbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlR3JvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAu
aAppbmRleCAwYjUyNDdiLi4xMDhhYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VHcm91cC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdlYlBhZ2VHcm91cCA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2VHcm91cD4gewogcHVibGljOgog
ICAgIFdlYlBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIgPSBTdHJpbmcoKSwgYm9v
bCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSA9IHRydWUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNs
aWVudCA9IHRydWUpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA9IFN0cmluZygpLCBib29sIHZpc2libGVUb0luamVj
dGVkQnVuZGxlID0gdHJ1ZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50ID0gdHJ1ZSk7Ci0g
ICAgc3RhdGljIFBhc3NSZWY8V2ViUGFnZUdyb3VwPiBjcmVhdGVOb25OdWxsKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciA9IFN0cmluZygpLCBib29sIHZpc2libGVUb0luamVjdGVkQnVuZGxlID0g
dHJ1ZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50ID0gdHJ1ZSk7CisgICAgc3RhdGljIFJl
ZjxXZWJQYWdlR3JvdXA+IGNyZWF0ZU5vbk51bGwoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyID0g
U3RyaW5nKCksIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUgPSB0cnVlLCBib29sIHZpc2li
bGVUb0hpc3RvcnlDbGllbnQgPSB0cnVlKTsKICAgICBzdGF0aWMgV2ViUGFnZUdyb3VwKiBnZXQo
dWludDY0X3QgcGFnZUdyb3VwSUQpOwogCiAgICAgdmlydHVhbCB+V2ViUGFnZUdyb3VwKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBlODg0
MjBhLi4wYzNiNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmgKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlck1lZGlh
UmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNmI1NGFmLi40
OTU5ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgYm9v
bCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2UqIGZyb21S
YW5nZSwgUmFuZ2UqIHRvUmFuZ2UKICAgICAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRB
cHBseVN0eWxlKFN0eWxlUHJvcGVydGllcyogc3R5bGUsIFJhbmdlKiByYW5nZSkKIHsKLSAgICBS
ZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gbXV0YWJsZVN0eWxlKHN0eWxlLT5pc011dGFibGUo
KSA/IHN0YXRpY19jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXMmPigqc3R5bGUpIDogc3R5bGUt
Pm11dGFibGVDb3B5KCkpOworICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxl
U3R5bGUoc3R5bGUtPmlzTXV0YWJsZSgpID8gUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+KHN0
YXRpY19jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXMmPigqc3R5bGUpKSA6IHN0eWxlLT5tdXRh
YmxlQ29weSgpKTsKICAgICBib29sIHJlc3VsdCA9IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQoKS5zaG91bGRBcHBseVN0eWxlKG1fcGFnZSwgbXV0YWJsZVN0eWxlLT5lbnN1cmVD
U1NTdHlsZURlY2xhcmF0aW9uKCksIHJhbmdlKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAg
IHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAKaW5kZXggODBkZDI2
My4uYjIyNDE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcApAQCAtNDAsNyArNDAs
NyBAQCB2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cGFnZURlc3Ryb3llZCgpCiAgICAgZGVsZXRl
IHRoaXM7CiB9CiAKLXZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihQ
YXNzUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IHByUmVxdWVzdCkKK3ZvaWQgV2ViVXNlck1lZGlhQ2xp
ZW50OjpyZXF1ZXN0UGVybWlzc2lvbihSZWY8VXNlck1lZGlhUmVxdWVzdD4mJiBwclJlcXVlc3Qp
CiB7CiAgICAgVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCA9IHByUmVxdWVzdC5sZWFrUmVmKCk7
CiAgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnN0YXJ0UmVx
dWVzdChyZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCmluZGV4IGY1NzE2NjQuLmVk
NmRjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZjxXZWJDb3JlOjpVc2VyTWVkaWFS
ZXF1ZXN0Pikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFJl
ZjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAK
ICAgICBXZWJQYWdlJiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAppbmRleCAxZDViZTA0Li4w
NzYzMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d1VwZGF0ZURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVBhc3NSZWY8Vmlld1VwZGF0ZURpc3BhdGNoZXI+IFZpZXdVcGRhdGVE
aXNwYXRjaGVyOjpjcmVhdGUoKQorUmVmPFZpZXdVcGRhdGVEaXNwYXRjaGVyPiBWaWV3VXBkYXRl
RGlzcGF0Y2hlcjo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWV3VXBk
YXRlRGlzcGF0Y2hlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oCmluZGV4IGI1MzhiYmIuLjk3MGRmOWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0
ZURpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d1VwZGF0ZURpc3BhdGNoZXIuaApAQCAtMzAsMTQgKzMwLDE0IEBACiAKICNpbmNsdWRlICJWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvVENTcGluTG9jay5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgVmlld1VwZGF0
ZURpc3BhdGNoZXIgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFZpZXdVcGRhdGVEaXNwYXRjaGVy
PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFZpZXdVcGRhdGVEaXNwYXRjaGVyPiBjcmVhdGUo
KTsKICAgICB+Vmlld1VwZGF0ZURpc3BhdGNoZXIoKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZUNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9SZWYuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVm
LmNwcAppbmRleCBjMzAwOWE0Li4wMjI3YjViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9SZWYuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1JlZi5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIlJlZkxvZ2dlci5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtOTgsOSArOTcsOSBAQCBURVNU
KFdURl9SZWYsIEFzc2lnbm1lbnQpCiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihh
KSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWY8UmVmTG9nZ2VyPiBwYXNzV2l0aFBhc3NSZWYoUGFzc1JlZjxSZWZMb2dnZXI+IHJlZmVyZW5j
ZSkKK3N0YXRpYyBSZWY8UmVmTG9nZ2VyPiBwYXNzV2l0aFJlZihSZWY8UmVmTG9nZ2VyPiYmIHJl
ZmVyZW5jZSkKIHsKLSAgICByZXR1cm4gcmVmZXJlbmNlOworICAgIHJldHVybiBXVEY6Om1vdmUo
cmVmZXJlbmNlKTsKIH0KIAogc3RhdGljIFJlZlB0cjxSZWZMb2dnZXI+IHBhc3NXaXRoUGFzc1Jl
ZlB0cihQYXNzUmVmUHRyPFJlZkxvZ2dlcj4gcmVmZXJlbmNlKQpAQCAtMTE1LDcgKzExNCw3IEBA
IFRFU1QoV1RGX1JlZiwgUmV0dXJuVmFsdWUpCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7
CiAKICAgICB7Ci0gICAgICAgIFJlZjxSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFBhc3NSZWYoYSkp
OworICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoUmVmPFJlZkxvZ2dlcj4o
YSkpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIucHRyKCkpOwogICAgIH0KICAgICBBU1NF
UlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CkBAIC0x
MjQsMjAgKzEyMywyMCBAQCBURVNUKFdURl9SZWYsIFJldHVyblZhbHVlKQogICAgICAgICBSZWY8
UmVmTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnB0cigpKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKLSAgICAgICAgcHRyID0gcGFzc1dpdGhQYXNzUmVmKGIpOwor
ICAgICAgICBwdHIgPSBwYXNzV2l0aFJlZihiKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwdHIu
cHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgIH0KICAgICBBU1NFUlRfU1RSRVEo
InJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKIAogICAgIHsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUGFz
c1JlZihhKSk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFJlZihhKSk7
CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJUX1NU
UkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewot
ICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhQYXNzUmVmUHRyKHBhc3NXaXRo
UGFzc1JlZihhKSkpOworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhQYXNz
UmVmUHRyKHBhc3NXaXRoUmVmKGEpKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdldCgp
KTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOwpAQCAtMTUyLDcgKzE1MSw3IEBAIFRFU1QoV1RGX1JlZiwgUmV0dXJuVmFs
dWUpCiAKICAgICB7CiAgICAgICAgIFJlZjxEZXJpdmVkUmVmTG9nZ2VyPiBkZXJpdmVkUmVmZXJl
bmNlKGEpOwotICAgICAgICBSZWY8UmVmTG9nZ2VyPiBiYXNlUmVmZXJlbmNlKHBhc3NXaXRoUGFz
c1JlZihkZXJpdmVkUmVmZXJlbmNlKSk7CisgICAgICAgIFJlZjxSZWZMb2dnZXI+IGJhc2VSZWZl
cmVuY2UocGFzc1dpdGhSZWYoUmVmPFJlZkxvZ2dlcj4oZGVyaXZlZFJlZmVyZW5jZSkpKTsKICAg
ICAgICAgQVNTRVJUX0VRKCZhLCBkZXJpdmVkUmVmZXJlbmNlLnB0cigpKTsKICAgICAgICAgQVNT
RVJUX0VRKCZhLCBiYXNlUmVmZXJlbmNlLnB0cigpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCmluZGV4IGUwZTFhMjUuLjAxOGQ3YjkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCkBAIC00MCw3
ICs0MCw3IEBAIFRFU1QoV1RGLCBSZWZDb3VudGVyKQogICAgIC8vCiAgICAgLy8gMSkgUmVmQ291
bnRlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOwogICAgIC8vIDIpIH5SZWZDb3VudGVyKCk7Ci0g
ICAgLy8gMykgUGFzc1JlZjxDb3VudD4gY291bnQoKSBjb25zdDsKKyAgICAvLyAzKSBSZWY8Q291
bnQ+IGNvdW50KCkgY29uc3Q7CiAgICAgLy8gNCkgdW5zaWduZWQgdmFsdWUoKSBjb25zdDsKICAg
ICAvLwogICAgIC8vIFdlJ2xsIHRlc3Q6CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9SZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVm
UHRyLmNwcAppbmRleCAyNGFlOTRkLi5mYzkyMjQ2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1JlZlB0ci5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBURVNUKFdURl9SZWZQdHIsIEFz
c2lnblBhc3NSZWZUb1JlZlB0cikKIHsKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAg
ICB7Ci0gICAgICAgIFBhc3NSZWY8UmVmTG9nZ2VyPiBwYXNzUmVmKGEpOworICAgICAgICBSZWY8
UmVmTG9nZ2VyPiBwYXNzUmVmKGEpOwogICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIgPSBX
VEY6Om1vdmUocGFzc1JlZik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdldCgpKTsKICAg
ICAgICAgcHRyLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCAwYWU4NWQ3Li43NjAzODQ0IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25W
YWx1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0
aW9uVmFsdWUuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ2FsY0V4cHJlc3Npb25Ob2RlJikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCi1zdGF0aWMgUGFzc1JlZjxXZWJDb3JlOjpDYWxjdWxh
dGlvblZhbHVlPiBjcmVhdGVUZXN0VmFsdWUoKQorc3RhdGljIFJlZjxXZWJDb3JlOjpDYWxjdWxh
dGlvblZhbHVlPiBjcmVhdGVUZXN0VmFsdWUoKQogewogICAgIGF1dG8gbm9kZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlPigpOwogICAgIHJldHVybiBXZWJD
b3JlOjpDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGOjptb3ZlKG5vZGUpLCBXZWJDb3JlOjpD
YWxjdWxhdGlvblJhbmdlQWxsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243200</attachid>
            <date>2014-12-12 09:13:48 -0800</date>
            <delta_ts>2014-12-12 11:11:33 -0800</delta_ts>
            <desc>Snack for EWS II</desc>
            <filename>ews-139587-2.diff</filename>
            <type>text/plain</type>
            <size>540273</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKaW5kZXggNjc3
N2YxNi4uZTA4MTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
Zmllci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgV1RGOjpUaHJlYWRTcGVjaWZpYzsKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKFZN
KiB2bSwgY29uc3QgY2hhciogYykKK1JlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQoVk0q
IHZtLCBjb25zdCBjaGFyKiBjKQogewogICAgIEFTU0VSVChjKTsKICAgICBBU1NFUlQoY1swXSk7
CkBAIC00OCwxMiArNDgsMTIgQEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQo
Vk0qIHZtLCBjb25zdCBjaGFyKiBjKQogICAgIHJldHVybiAqQXRvbWljU3RyaW5nOjphZGQoYyk7
CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgY2hhciogYykKK1JlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjKQogewogICAgIHJldHVybiBhZGQoJmV4ZWMtPnZtKCks
IGMpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZDgoVk0qIHZtLCBj
b25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkKK1JlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjph
ZGQ4KFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKGxlbmd0
aCA9PSAxKSB7CiAgICAgICAgIFVDaGFyIGMgPSBzWzBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IGQ5ZmUyMGQuLjAxMzJkMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTk3LDggKzk3LDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0
cmluZ0ltcGwqIGIpIHsgcmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0KIAogICAgIC8vIE9ubHkgdG8g
YmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZGQoVk0qLCBjb25zdCBjaGFyKik7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIGNv
bnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGFkZChWTSosIGNvbnN0IGNoYXIqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7CiAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIApAQCAtMTExLDEyICsxMTEsMTIgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBJZGVudGlm
aWVyJiBiKSB7IHJldHVybiBhLm1fc3RyaW5nLmltcGwoKSA9PSBiLm1fc3RyaW5nLmltcGwoKTsg
fQogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IExDaGFy
KiBiKSB7IHJldHVybiBlcXVhbChhLm1fc3RyaW5nLmltcGwoKSwgYik7IH0KIAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZGQoVk0qLCBjb25z
dCBUKiwgaW50IGxlbmd0aCk7Ci0gICAgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkOChW
TSosIGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKFZNKiwgY29uc3QgVCosIGludCBsZW5ndGgpOwor
ICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkOChWTSosIGNvbnN0IFVDaGFyKiwgaW50IGxl
bmd0aCk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEFMV0FZU19JTkxJTkUgc3RhdGljIGJv
b2wgY2FuVXNlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFQpOwogCi0gICAgc3RhdGljIFBhc3NSZWY8
U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqKTsKLSAgICBzdGF0aWMgUGFz
c1JlZjxTdHJpbmdJbXBsPiBhZGQoVk0qLCBTdHJpbmdJbXBsKik7CisgICAgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCopOworICAgIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gYWRkKFZNKiwgU3RyaW5nSW1wbCopOwogCiAjaWZuZGVmIE5ERUJVRwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKEV4ZWNTdGF0ZSopOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHRlbXBsYXRlIDw+IEFMV0FZU19J
TkxJTkUgYm9vbCBJZGVudGlmaWVyOjpjYW5Vc2VTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoVUNoYXIg
YykKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1QYXNzUmVmPFN0cmluZ0ltcGw+IElkZW50
aWZpZXI6OmFkZChWTSogdm0sIGNvbnN0IFQqIHMsIGludCBsZW5ndGgpCitSZWY8U3RyaW5nSW1w
bD4gSWRlbnRpZmllcjo6YWRkKFZNKiB2bSwgY29uc3QgVCogcywgaW50IGxlbmd0aCkKIHsKICAg
ICBpZiAobGVuZ3RoID09IDEpIHsKICAgICAgICAgVCBjID0gc1swXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCmluZGV4IGVmYzNkM2Mu
Ljc0NzJkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIGlubGluZSBJZGVudGlmaWVyOjpJZGVu
dGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiAjZW5k
aWYKIH0KIAotaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKEV4ZWNT
dGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcikKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gSWRlbnRp
Zmllcjo6YWRkKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcikKIHsKICNpZm5kZWYgTkRF
QlVHCiAgICAgY2hlY2tDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhlYyk7CiAjZW5kaWYKICAg
ICByZXR1cm4gKkF0b21pY1N0cmluZzo6YWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoKmV4ZWMs
IHIpOwogfQotaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkKFZNKiB2
bSwgU3RyaW5nSW1wbCogcikKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRk
KFZNKiB2bSwgU3RyaW5nSW1wbCogcikKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgY2hlY2tDdXJy
ZW50QXRvbWljU3RyaW5nVGFibGUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFz
c1JlZi5oIGIvU291cmNlL1dURi93dGYvUGFzc1JlZi5oCmluZGV4IDI2ZDE0ZDQuLjMxYzQ4N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QYXNzUmVmLmgKQEAgLTEsMTU0ICsxIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMy0y
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5k
ZWYgV1RGX1Bhc3NSZWZfaAotI2RlZmluZSBXVEZfUGFzc1JlZl9oCi0KLSNpbmNsdWRlICJBc3Nl
cnRpb25zLmgiCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi1uYW1l
c3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZjsKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBSZWY7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWZQdHI7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFBhc3NSZWY8VD4gYWRvcHRSZWYoVCYpOwotCi1pbmxpbmUgdm9pZCBhZG9w
dGVkKGNvbnN0IHZvaWQqKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1Jl
ZiB7Ci1wdWJsaWM6Ci0gICAgUGFzc1JlZihUJik7Ci0gICAgUGFzc1JlZihQYXNzUmVmJiYpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWYoY29uc3QgUmVmPFU+Jik7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gUGFzc1JlZihQYXNzUmVmPFU+KTsKLQotICAgIGNvbnN0IFQmIGdl
dCgpIGNvbnN0OwotICAgIFQmIGdldCgpOwotCi0gICAgY29uc3QgVCogcHRyKCkgY29uc3Q7Ci0g
ICAgVCogcHRyKCk7Ci0KLSAgICBUJiBsZWFrUmVmKCkgV0FSTl9VTlVTRURfUkVUVVJOOwotCi0g
ICAgflBhc3NSZWYoKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgUGFzc1JlZiBhZG9wdFJlZjxU
PihUJik7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgY2xhc3MgUGFzc1JlZjsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgY2xhc3MgUGFzc1JlZlB0cjsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgY2xhc3MgUmVmOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IGZyaWVuZCBjbGFzcyBSZWZQdHI7Ci0KLSAgICBlbnVtIEFkb3B0VGFnIHsgQWRvcHQg
fTsKLSAgICBQYXNzUmVmKFQmLCBBZG9wdFRhZyk7Ci0KLSAgICBUKiBtX3B0cjsKLSAgICBib29s
IG1fZ2F2ZVVwUmVmZXJlbmNlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBh
c3NSZWY8VD46OlBhc3NSZWYoVCYgcmVmZXJlbmNlKQotICAgIDogbV9wdHIoJnJlZmVyZW5jZSkK
LXsKLSAgICBtX3B0ci0+cmVmKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQ
YXNzUmVmPFQ+OjpQYXNzUmVmKFBhc3NSZWYmJiBvdGhlcikKLSAgICA6IG1fcHRyKCZvdGhlci5s
ZWFrUmVmKCkpCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1l
IFU+IGlubGluZSBQYXNzUmVmPFQ+OjpQYXNzUmVmKFBhc3NSZWY8VT4gb3RoZXIpCi0gICAgOiBt
X3B0cigmb3RoZXIubGVha1JlZigpKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZjxUPjo6UGFzc1JlZihjb25zdCBSZWY8VT4m
IG90aGVyKQotICAgIDogbV9wdHIoc3RhdGljX2Nhc3Q8VCo+KGNvbnN0X2Nhc3Q8VSo+KG90aGVy
LnB0cigpKSkpCi17Ci0gICAgQVNTRVJUKG1fcHRyKTsKLSAgICBtX3B0ci0+cmVmKCk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFBhc3NSZWY8VD46On5QYXNzUmVmKCkKLXsKLSAgICBpZiAo
bV9wdHIpCi0gICAgICAgIG1fcHRyLT5kZXJlZigpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgY29uc3QgVCYgUGFzc1JlZjxUPjo6Z2V0KCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV9wdHIpOwotICAgIHJldHVybiAqbV9wdHI7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBUJiBQYXNzUmVmPFQ+OjpnZXQoKQotewotICAgIEFTU0VSVChtX3B0cik7Ci0gICAgcmV0
dXJuICptX3B0cjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCogUGFzc1JlZjxU
Pjo6cHRyKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9wdHIpOwotICAgIHJldHVybiBtX3B0cjsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCogUGFzc1JlZjxUPjo6cHRyKCkKLXsKLSAgICBB
U1NFUlQobV9wdHIpOwotICAgIHJldHVybiBtX3B0cjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIFQmIFBhc3NSZWY8VD46OmxlYWtSZWYoKQotewotICAgIEFTU0VSVChtX3B0cik7
Ci0gICAgVCogbGVha2VkUHRyID0gbV9wdHI7Ci0gICAgbV9wdHIgPSBudWxscHRyOwotICAgIHJl
dHVybiAqbGVha2VkUHRyOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1Jl
ZjxUPjo6UGFzc1JlZihUJiByZWZlcmVuY2UsIEFkb3B0VGFnKQotICAgIDogbV9wdHIoJnJlZmVy
ZW5jZSkKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWY8VD4gYWRv
cHRSZWYoVCYgcmVmZXJlbmNlKQotewotICAgIGFkb3B0ZWQoJnJlZmVyZW5jZSk7Ci0gICAgcmV0
dXJuIFBhc3NSZWY8VD4ocmVmZXJlbmNlLCBQYXNzUmVmPFQ+OjpBZG9wdCk7Ci19Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGlubGluZSBQYXNzUmVmPFQ+IGNyZWF0
ZVJlZkNvdW50ZWQoQXJncyYmLi4uIGFyZ3MpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RG
Ci0KLXVzaW5nIFdURjo6UGFzc1JlZjsKLXVzaW5nIFdURjo6YWRvcHRSZWY7Ci11c2luZyBXVEY6
OmNyZWF0ZVJlZkNvdW50ZWQ7Ci0KLSNlbmRpZiAvLyBXVEZfUGFzc1JlZl9oCisvLyBEZWxldGUg
bWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYXNzUmVmUHRyLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QYXNzUmVmUHRyLmgKaW5kZXggNmY4MDRhMC4uZGQzNzhlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGFzc1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWZQdHIu
aApAQCAtMjIsMTAgKzIyLDEyIEBACiAjZGVmaW5lIFdURl9QYXNzUmVmUHRyX2gKIAogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZi5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBSZWZQdHI7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNzUmVmUHRyPFQ+IGFkb3B0UmVmKFQqKTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFMV0FZU19JTkxJTkUgdm9pZCByZWZJZk5vdE51bGwo
VCogcHRyKQpAQCAtNTYsNyArNTgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgQUxXQVlT
X0lOTElORSB+UGFzc1JlZlB0cigpIHsgZGVyZWZJZk5vdE51bGwobV9wdHIpOyB9CiAKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUGFzc1JlZlB0cihjb25zdCBSZWZQdHI8VT4mKTsKLSAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUGFzc1JlZlB0cihQYXNzUmVmPFU+IHJlZmVyZW5j
ZSkgOiBtX3B0cigmcmVmZXJlbmNlLmxlYWtSZWYoKSkgeyB9CisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IFBhc3NSZWZQdHIoUmVmPFU+JiYgcmVmZXJlbmNlKSA6IG1fcHRyKCZyZWZlcmVu
Y2UubGVha1JlZigpKSB7IH0KIAogICAgICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0
cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaCBiL1NvdXJjZS9XVEYvd3Rm
L1JlZi5oCmluZGV4IDY1NDg1YjEuLmI5YmE3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1JlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDQ5ICszMSw5OCBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZjsKK2lubGlu
ZSB2b2lkIGFkb3B0ZWQoY29uc3Qgdm9pZCopIHsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBSZWY7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBSZWY8VD4gYWRvcHRSZWYoVCYpOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWYgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlZikKIHB1YmxpYzoKLSAgICBSZWYoVCYgb2JqZWN0KSA6IG1fcHRyKCZvYmplY3QpIHsgbV9w
dHItPnJlZigpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmKFBhc3NSZWY8VT4gcmVm
ZXJlbmNlKSA6IG1fcHRyKCZyZWZlcmVuY2UubGVha1JlZigpKSB7IH0KKyAgICB+UmVmKCkKKyAg
ICB7CisgICAgICAgIGlmIChtX3B0cikKKyAgICAgICAgICAgIG1fcHRyLT5kZXJlZigpOworICAg
IH0KKworICAgIFJlZihUJiBvYmplY3QpCisgICAgICAgIDogbV9wdHIoJm9iamVjdCkKKyAgICB7
CisgICAgICAgIG1fcHRyLT5yZWYoKTsKKyAgICB9CiAKLSAgICB+UmVmKCkgeyBtX3B0ci0+ZGVy
ZWYoKTsgfQorICAgIFJlZihSZWYmJiBvdGhlcikKKyAgICAgICAgOiBtX3B0cigmb3RoZXIubGVh
a1JlZigpKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIFJl
ZihSZWY8VT4mJiBvdGhlcikKKyAgICAgICAgOiBtX3B0cigmb3RoZXIubGVha1JlZigpKQorICAg
IHsKKyAgICB9CiAKICAgICBSZWYmIG9wZXJhdG9yPShUJiBvYmplY3QpCiAgICAgeworICAgICAg
ICBBU1NFUlQobV9wdHIpOwogICAgICAgICBvYmplY3QucmVmKCk7CiAgICAgICAgIG1fcHRyLT5k
ZXJlZigpOwogICAgICAgICBtX3B0ciA9ICZvYmplY3Q7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmJiBvcGVyYXRvcj0oUGFzc1JlZjxV
PiByZWZlcmVuY2UpCisKKyAgICBSZWYmIG9wZXJhdG9yPShSZWYmJiByZWZlcmVuY2UpCisgICAg
eworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICBtX3B0ci0+ZGVyZWYoKTsKKyAgICAg
ICAgbV9wdHIgPSAmcmVmZXJlbmNlLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZiYgb3BlcmF0b3I9KFJlZjxVPiYm
IHJlZmVyZW5jZSkKICAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7CiAgICAgICAgIG1fcHRy
LT5kZXJlZigpOwogICAgICAgICBtX3B0ciA9ICZyZWZlcmVuY2UubGVha1JlZigpOwogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIG1fcHRyOyB9
CisgICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJu
IG1fcHRyOyB9CisgICAgVCogb3BlcmF0b3ItPigpIHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1f
cHRyOyB9CisKKyAgICBjb25zdCBUKiBwdHIoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJldHVy
biBtX3B0cjsgfQorICAgIFQqIHB0cigpIHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9
CiAKLSAgICBjb25zdCBUKiBwdHIoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotICAgIFQqIHB0
cigpIHsgcmV0dXJuIG1fcHRyOyB9CisgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQo
bV9wdHIpOyByZXR1cm4gKm1fcHRyOyB9CisgICAgVCYgZ2V0KCkgeyBBU1NFUlQobV9wdHIpOyBy
ZXR1cm4gKm1fcHRyOyB9CiAKLSAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqbV9w
dHI7IH0KLSAgICBUJiBnZXQoKSB7IHJldHVybiAqbV9wdHI7IH0KKyAgICBvcGVyYXRvciBUJigp
IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQorICAgIG9wZXJhdG9yIGNvbnN0IFQm
KCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gKm1fcHRyOyB9CiAKLSAgICBvcGVyYXRv
ciBUJigpIHsgcmV0dXJuICptX3B0cjsgfQotICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3Qg
eyByZXR1cm4gKm1fcHRyOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmPFQ+IHJlcGxh
Y2UoUmVmPFU+JiYpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IFBhc3NSZWY8VD4gcmVwbGFjZShQYXNzUmVmPFU+KSBXQVJOX1VOVVNFRF9SRVRVUk47Cisg
ICAgUmVmIGNvcHlSZWYoKSBXQVJOX1VOVVNFRF9SRVRVUk4KKyAgICB7CisgICAgICAgIHJldHVy
biBSZWYoKm1fcHRyKTsKKyAgICB9CisKKyAgICBUJiBsZWFrUmVmKCkgV0FSTl9VTlVTRURfUkVU
VVJOCisgICAgeworICAgICAgICBBU1NFUlQobV9wdHIpOworICAgICAgICBUKiBtb3ZlZFB0ciA9
IG1fcHRyOworICAgICAgICBtX3B0ciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiAqbW92ZWRQ
dHI7CisgICAgfQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBSZWYgYWRvcHRSZWY8VD4oVCYpOwor
CisgICAgZW51bSBBZG9wdFRhZyB7IEFkb3B0IH07CisgICAgUmVmKFQmIG9iamVjdCwgQWRvcHRU
YWcpIDogbV9wdHIoJm9iamVjdCkgeyB9CisKICAgICBUKiBtX3B0cjsKIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmPFQ+IFJlZjxU
Pjo6cmVwbGFjZShQYXNzUmVmPFU+IHJlZmVyZW5jZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZWY8VD4gUmVmPFQ+OjpyZXBsYWNlKFJlZjxVPiYm
IHJlZmVyZW5jZSkKIHsKICAgICBhdXRvIG9sZFJlZmVyZW5jZSA9IGFkb3B0UmVmKCptX3B0cik7
CiAgICAgbV9wdHIgPSAmcmVmZXJlbmNlLmxlYWtSZWYoKTsKQEAgLTg2LDYgKzEzNSwxNCBAQCBz
dHJ1Y3QgR2V0UHRySGVscGVyPFJlZjxUPj4gewogICAgIHN0YXRpYyBUKiBnZXRQdHIoY29uc3Qg
UmVmPFQ+JiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQqPihwLnB0cigpKTsgfQogfTsKIAordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBSZWY8VD4gYWRvcHRSZWYoVCYgcmVmZXJlbmNlKQor
eworICAgIGFkb3B0ZWQoJnJlZmVyZW5jZSk7CisgICAgcmV0dXJuIFJlZjxUPihyZWZlcmVuY2Us
IFJlZjxUPjo6QWRvcHQpOworCit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6
OlJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL1JlZkNvdW50ZXIuaAppbmRleCBmYmZkZmZlLi5hMTA2OTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRl
ci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVm
Q291bnRlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gPSBbXSgpIHsgfSk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIH5SZWZDb3VudGVyKCk7CiAKLSAgICBQYXNzUmVmPENvdW50PiBjb3VudCgpIGNv
bnN0CisgICAgUmVmPENvdW50PiBjb3VudCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
Km1fY291bnQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmggYi9T
b3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCA1ZGU1YzczLi43NmQ2MWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApA
QCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gU2VlIGNvbW1lbnRz
IGluIFBhc3NSZWZQdHIuaCBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgdGFrZXMgYSBj
b25zdCByZWZlcmVuY2UuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0cihjb25z
dCBQYXNzUmVmUHRyPFU+Jik7CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRy
KFBhc3NSZWY8VT4mJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0cihSZWY8
VT4mJik7CiAKICAgICAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hpY2ggYXJl
IG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCiAgICAgICAg
IFJlZlB0cihIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fcHRyKGhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpKSB7IH0KQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IAogICAgICAgICB2b2lkIGNsZWFyKCk7CiAgICAgICAgIFBhc3NSZWZQdHI8VD4gcmVsZWFzZSgp
IHsgUGFzc1JlZlB0cjxUPiB0bXAgPSBhZG9wdFJlZihtX3B0cik7IG1fcHRyID0gbnVsbHB0cjsg
cmV0dXJuIHRtcDsgfQotICAgICAgICBQYXNzUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBBU1NF
UlQobV9wdHIpOyBQYXNzUmVmPFQ+IHRtcCA9IGFkb3B0UmVmKCptX3B0cik7IG1fcHRyID0gbnVs
bHB0cjsgcmV0dXJuIHRtcDsgfQorICAgICAgICBSZWY8VD4gcmVsZWFzZU5vbk51bGwoKSB7IEFT
U0VSVChtX3B0cik7IFJlZjxUPiB0bXAoYWRvcHRSZWYoKm1fcHRyKSk7IG1fcHRyID0gbnVsbHB0
cjsgcmV0dXJuIHRtcDsgfQogCiAgICAgICAgIFQqIGxlYWtSZWYoKSBXQVJOX1VOVVNFRF9SRVRV
Uk47CiAKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mKTsKICAg
ICAgICAgUmVmUHRyJiBvcGVyYXRvcj0oUmVmUHRyJiYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShSZWZQdHI8VT4mJik7Ci0gICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KFBhc3NSZWY8VT4pOworICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShSZWY8VT4mJik7CiAKICAgICAgICAg
dm9pZCBzd2FwKFJlZlB0ciYpOwogCkBAIC05Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgIHsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBpbmxpbmUgUmVmUHRyPFQ+OjpSZWZQdHIoUGFzc1JlZjxVPiYmIHJlZmVyZW5jZSkKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRy
PFQ+OjpSZWZQdHIoUmVmPFU+JiYgcmVmZXJlbmNlKQogICAgICAgICA6IG1fcHRyKCZyZWZlcmVu
Y2UubGVha1JlZigpKQogICAgIHsKICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46
Om9wZXJhdG9yPShQYXNzUmVmPFU+IHJlZmVyZW5jZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9wZXJh
dG9yPShSZWY8VT4mJiByZWZlcmVuY2UpCiAgICAgewogICAgICAgICBSZWZQdHIgcHRyID0gV1RG
Ojptb3ZlKHJlZmVyZW5jZSk7CiAgICAgICAgIHN3YXAocHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nLmNwcAppbmRleCA2YjI3NjBkLi4wNjI5MGMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmcuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEhh
c2hTZXQ8U3RyaW5nSW1wbCo+JiBzdHJpbmdUYWJsZSgpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgotc3RhdGljIGlubGluZSBQYXNzUmVmPFN0cmlu
Z0ltcGw+IGFkZFRvU3RyaW5nVGFibGUoY29uc3QgVCYgdmFsdWUpCitzdGF0aWMgaW5saW5lIFJl
ZjxTdHJpbmdJbXBsPiBhZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQogewogICAgIEF0
b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKIApAQCAtODEsNyArODEsOSBAQCBzdGF0aWMg
aW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkVG9TdHJpbmdUYWJsZShjb25zdCBUJiB2YWx1
ZSkKIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3ZSBu
ZWVkIHRvIGFkb3B0IGl0LgogICAgIC8vIFRoZSBib29sZWFuIGluIHRoZSBwYWlyIHRlbGxzIHVz
IGlmIHRoYXQgaXMgc28uCi0gICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRvcHRS
ZWYoKiphZGRSZXN1bHQuaXRlcmF0b3IpIDogKiphZGRSZXN1bHQuaXRlcmF0b3I7CisgICAgaWYg
KGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKiphZGRSZXN1
bHQuaXRlcmF0b3IpOworICAgIHJldHVybiAqKmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0KIAogc3Ry
dWN0IENTdHJpbmdUcmFuc2xhdG9yIHsKQEAgLTI0Nyw3ICsyNDksNyBAQCBSZWZQdHI8U3RyaW5n
SW1wbD4gQXRvbWljU3RyaW5nOjphZGQoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxVQ2hhckJ1ZmZlciwgVUNoYXJCdWZmZXJUcmFu
c2xhdG9yPihidWZmZXIpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IEF0b21pY1N0cmluZzo6
YWRkKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFz
aCkKK1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZChjb25zdCBVQ2hhciogcywgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpCiB7CiAgICAgQVNTRVJUKHMpOwog
ICAgIEFTU0VSVChleGlzdGluZ0hhc2gpOwpAQCAtMzg3LDcgKzM4OSw3IEBAIFJlZlB0cjxTdHJp
bmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZChjb25zdCBMQ2hhciogcywgdW5zaWduZWQgbGVuZ3Ro
KQogICAgIHJldHVybiBhZGRUb1N0cmluZ1RhYmxlPExDaGFyQnVmZmVyLCBMQ2hhckJ1ZmZlclRy
YW5zbGF0b3I+KGJ1ZmZlcik7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5n
OjphZGRGcm9tTGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQorUmVmPFN0cmluZ0ltcGw+IEF0b21pY1N0cmluZzo6YWRkRnJvbUxpdGVyYWxEYXRhKGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBBU1NFUlQoY2hh
cmFjdGVycyk7CiAgICAgQVNTRVJUKGxlbmd0aCk7CkBAIC0zOTYsNyArMzk4LDcgQEAgUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZEZyb21MaXRlcmFsRGF0YShjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzLCB1bnMKICAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxDaGFyQnVmZmVy
LCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvcj4oYnVmZmVyKTsKIH0KIAotUGFz
c1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKFN0cmluZ0ltcGwmIHN0
cmluZykKK1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKFN0cmluZ0lt
cGwmIHN0cmluZykKIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
ICpTdHJpbmdJbXBsOjplbXB0eSgpOwpAQCAtNDE0LDcgKzQxNiw3IEBAIFBhc3NSZWY8U3RyaW5n
SW1wbD4gQXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiAgICAg
cmV0dXJuICoqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IEF0
b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmIHN0cmluZ1RhYmxlLCBT
dHJpbmdJbXBsJiBzdHJpbmcpCitSZWY8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nOjphZGRTbG93
Q2FzZShBdG9taWNTdHJpbmdUYWJsZSYgc3RyaW5nVGFibGUsIFN0cmluZ0ltcGwmIHN0cmluZykK
IHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuICpTdHJpbmdJbXBs
OjplbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
aCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXggMjE5ZjhiODllLi5h
NzkwNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTE3OCw3ICsxNzgsNyBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWZQdHI8U3RyaW5n
SW1wbD4gYWRkKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxTdHJpbmdJ
bXBsPiBhZGQoY29uc3QgY2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZGQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9OwotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CisgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciopOwogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJp
bmdJbXBsKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCogc3RyaW5nKQpA
QCAtMTg5LDcgKzE4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICByZXR1cm4gYWRk
U2xvd0Nhc2UoKnN0cmluZyk7CiAgICAgfQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0
aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICNpZiBVU0UoQ0YpCiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKENGU3RyaW5nUmVmKTsKICNlbmRp
ZgpAQCAtMjE0LDggKzIxNCw4IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAg
ICAgCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+
IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwmKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3Rh
dGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmLCBT
dHJpbmdJbXBsJik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1RhYmxlJiwg
U3RyaW5nSW1wbCYpOwogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9taWNT
dHJpbmdJbXBsKiBmaW5kU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOwogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDFmODQyOTIu
LmQwNGM0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTM0LDE5ICsxMzQs
MTkgQEAgdm9pZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiAg
ICAgZmFzdEZyZWUoc3RyaW5nSW1wbCk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNv
bnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGxlbmd0aCwgIlVzZSBTdHJpbmdJbXBsOjplbXB0eSgpIHRvIGNyZWF0ZSBhbiBl
bXB0eSBzdHJpbmciKTsKICAgICBBU1NFUlQoY2hhcmFjdGVyc0FyZUFsbEFTQ0lJPExDaGFyPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCkpOwogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nKSk7CiB9
CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoY29u
c3QgY2hhciogY2hhcmFjdGVycykKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVG
cm9tTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQogewogICAgIHJldHVybiBjcmVhdGVG
cm9tTGl0ZXJhbChjaGFyYWN0ZXJzLCBzdHJsZW4oY2hhcmFjdGVycykpOwogfQogCi1QYXNzUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuICplbXB0eSgpOwpA
QCAtMTU0LDcgKzE1NCw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RyaW5nSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIENvbnN0cnVjdFdpdGhv
dXRDb3B5aW5nKSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
K1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBM
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQog
ICAgICAgICByZXR1cm4gKmVtcHR5KCk7CkBAIC0xNjMsNyArMTYzLDcgQEAgUGFzc1JlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBMQ2hhciogY2hh
cmFjdGVycywgdW4KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIFBh
c3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFs
KHVuc2lnbmVkIGxlbmd0aCwgQ2hhclR5cGUqJiBkYXRhKQoraW5saW5lIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQgbGVuZ3Ro
LCBDaGFyVHlwZSomIGRhdGEpCiB7CiAgICAgaWYgKCFsZW5ndGgpIHsKICAgICAgICAgZGF0YSA9
IDA7CkBAIC0xNzMsNyArMTczLDcgQEAgaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsKHVuc2lnbmVkIGxlbmcKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkodW5zaWduZWQgbGVu
Z3RoLCBDaGFyVHlwZSomIGRhdGEpCitpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkIGxlbmd0aCwgQ2hh
clR5cGUqJiBkYXRhKQogewogICAgIEFTU0VSVChsZW5ndGgpOwogCkBAIC0xODgsMTggKzE4OCwx
OCBAQCBpbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRp
YWxpemVkSW50ZXJuYWxOb25FbXB0eSh1bnNpZwogICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5h
bDxDaGFyVHlwZT4oc3RyaW5nLCBsZW5ndGgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRh
dGEpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlVW5pbml0aWFs
aXplZEludGVybmFsKGxlbmd0aCwgZGF0YSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0
YSkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGVVbmluaXRpYWxp
emVkSW50ZXJuYWwobGVuZ3RoLCBkYXRhKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgotaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZUlu
dGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxl
bmd0aCwgQ2hhclR5cGUqJiBkYXRhKQoraW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
OjpyZWFsbG9jYXRlSW50ZXJuYWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5hbFN0cmlu
ZywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCiB7ICAgCiAgICAgQVNTRVJUKG9y
aWdpbmFsU3RyaW5nLT5oYXNPbmVSZWYoKSk7CiAgICAgQVNTRVJUKG9yaWdpbmFsU3RyaW5nLT5i
dWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJJbnRlcm5hbCk7CkBAIC0yMjAsMjAgKzIyMCwyMCBA
QCBpbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlSW50ZXJu
YWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPgogICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxD
aGFyVHlwZT4oc3RyaW5nLCBsZW5ndGgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnJlYWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5hbFN0cmluZywg
dW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6cmVhbGxvY2F0ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNp
Z25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKIHsKICAgICBBU1NFUlQob3JpZ2luYWxTdHJpbmct
PmlzOEJpdCgpKTsKICAgICByZXR1cm4gcmVhbGxvY2F0ZUludGVybmFsKG9yaWdpbmFsU3RyaW5n
LCBsZW5ndGgsIGRhdGEpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJl
YWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQg
bGVuZ3RoLCBVQ2hhciomIGRhdGEpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxv
Y2F0ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5n
dGgsIFVDaGFyKiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIW9yaWdpbmFsU3RyaW5nLT5pczhCaXQo
KSk7CiAgICAgcmV0dXJuIHJlYWxsb2NhdGVJbnRlcm5hbChvcmlnaW5hbFN0cmluZywgbGVuZ3Ro
LCBkYXRhKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIFBhc3NS
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWNoYXJhY3RlcnMgfHwgIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuICplbXB0eSgpOwpAQCAtMjQ0LDE3ICsyNDQsMTcgQEAgaW5saW5lIFBhc3NSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqIGNoYXJh
Y3RlcnMKICAgICByZXR1cm4gc3RyaW5nOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OmNyZWF0ZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQor
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChjaGFyYWN0
ZXJzLCBsZW5ndGgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0
ZShjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQogewogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChjaGFyYWN0ZXJzLCBsZW5ndGgp
OwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3Np
YmxlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWNoYXJhY3RlcnMgfHwgIWxlbmd0
aCkKICAgICAgICAgcmV0dXJuICplbXB0eSgpOwpAQCAtMjcxLDEyICsyNzEsMTIgQEAgUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hh
ciogY2hhcmFjdGVycywgdW4KICAgICByZXR1cm4gc3RyaW5nLnJlbGVhc2VOb25OdWxsKCk7CiB9
CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUo
Y29uc3QgVUNoYXIqIHN0cmluZykKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGU4
Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciogc3RyaW5nKQogewogICAgIHJldHVybiBTdHJpbmdJ
bXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShzdHJpbmcsIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRT
dHJpbmcoc3RyaW5nKSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3Jl
YXRlKGNvbnN0IExDaGFyKiBzdHJpbmcpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3Jl
YXRlKGNvbnN0IExDaGFyKiBzdHJpbmcpCiB7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJl
dHVybiAqZW1wdHkoKTsKQEAgLTMwOSw3ICszMDksNyBAQCBib29sIFN0cmluZ0ltcGw6OmNvbnRh
aW5zT25seVdoaXRlc3BhY2UoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OnN1YnN0cmluZyh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVu
Z3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN1YnN0cmluZyh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmIChzdGFydCA+PSBtX2xlbmd0aCkKICAgICAg
ICAgcmV0dXJuICplbXB0eSgpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIFVDaGFyMzIgU3RyaW5nSW1w
bDo6Y2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCBpKQogICAgIHJldHVybiAwOwogfQogCi1Q
YXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omxvd2VyKCkKK1JlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpsb3dlcigpCiB7CiAgICAgLy8gTm90ZTogVGhpcyBpcyBhIGhvdCBmdW5jdGlv
biBpbiB0aGUgRHJvbWFlbyBiZW5jaG1hcmssIHNwZWNpZmljYWxseSB0aGUKICAgICAvLyBuby1v
cCBjb2RlIHBhdGggdXAgdGhyb3VnaCB0aGUgZmlyc3QgJ3JldHVybicgc3RhdGVtZW50LgpAQCAt
NDE3LDcgKzQxNyw3IEBAIFNsb3dQYXRoOgogICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2VOb25O
dWxsKCk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoKQorUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnVwcGVyKCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGNvdWxkIGJlIG9wdGltaXplZCBmb3Igbm8tb3AgY2FzZXMgdGhlIHdheSBsb3dlcigpIGlzLAog
ICAgIC8vIGJ1dCBpbiBlbXBpcmljYWwgdGVzdGluZywgZmV3IGFjdHVhbCBjYWxscyB0byB1cHBl
cigpIGFyZSBuby1vcHMsIHNvCkBAIC01MjksNyArNTI5LDcgQEAgc3RhdGljIGlubGluZSBib29s
IG5lZWRzVHVya2lzaENhc2luZ1J1bGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRp
ZmllcikKICAgICAgICAgJiYgKGxvY2FsZUlkZW50aWZpZXIubGVuZ3RoKCkgPT0gMiB8fCBsb2Nh
bGVJZGVudGlmaWVyWzJdID09ICctJyk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6bG93ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQorUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omxvd2VyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRl
bnRpZmllcikKIHsKICAgICAvLyBVc2UgdGhlIG1vcmUtb3B0aW1pemVkIGNvZGUgcGF0aCBtb3N0
IG9mIHRoZSB0aW1lLgogICAgIC8vIEFzc3VtaW5nIGhlcmUgdGhhdCB0aGUgb25seSBsb2NhbGUt
c3BlY2lmaWMgbG93ZXJjYXNpbmcgaXMgdGhlIFR1cmtpc2ggY2FzaW5nIHJ1bGVzLgpAQCAtNTY1
LDcgKzU2NSw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6bG93ZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQogICAgIHJldHVybiBuZXdTdHJpbmcucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBl
cihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCitSZWY8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6dXBwZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQog
ewogICAgIC8vIFVzZSB0aGUgbW9yZS1vcHRpbWl6ZWQgY29kZSBwYXRoIG1vc3Qgb2YgdGhlIHRp
bWUuCiAgICAgLy8gQXNzdW1pbmcgaGVyZSB0aGF0IHRoZSBvbmx5IGxvY2FsZS1zcGVjaWZpYyBs
b3dlcmNhc2luZyBpcyB0aGUgVHVya2lzaCBjYXNpbmcgcnVsZXMsCkBAIC01OTYsNyArNTk2LDcg
QEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBlcihjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZUlkZW50aWZpZXIpCiAgICAgcmV0dXJuIG5ld1N0cmluZy5yZWxlYXNlTm9uTnVs
bCgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZpbGwoVUNoYXIgY2hh
cmFjdGVyKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZpbGwoVUNoYXIgY2hhcmFjdGVy
KQogewogICAgIGlmICghKGNoYXJhY3RlciAmIH4weDdGKSkgewogICAgICAgICBMQ2hhciogZGF0
YTsKQEAgLTYxMiw3ICs2MTIsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZp
bGwoVUNoYXIgY2hhcmFjdGVyKQogICAgIHJldHVybiBuZXdJbXBsOwogfQogCi1QYXNzUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZvbGRDYXNlKCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpmb2xkQ2FzZSgpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IHRoaXMgZnVuY3Rp
b24gaGF2ZSBhIHByZWZsaWdodCBsaWtlIHRoZSBvbmUgaW4gU3RyaW5nSW1wbDo6bG93ZXI/CiAK
QEAgLTY3MCw3ICs2NzAsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZvbGRD
YXNlKCkKICAgICByZXR1cm4gbmV3SW1wbC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1QYXNzUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkKK1JlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpCiB7CiAgICAg
aWYgKGlzOEJpdCgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGZhaWxpbmdJbmRleDsKQEAgLTY4NSw3
ICs2ODUsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkKIAogU2xvd1BhdGg6CiAgICAgICAgIExDaGFyKiBkYXRhODsKLSAgICAgICAg
UGFzc1JlZjxTdHJpbmdJbXBsPiBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFs
Tm9uRW1wdHkobV9sZW5ndGgsIGRhdGE4KTsKKyAgICAgICAgUmVmPFN0cmluZ0ltcGw+IG5ld0lt
cGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YTgp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmFpbGluZ0luZGV4OyArK2kpCiAg
ICAgICAgICAgICBkYXRhOFtpXSA9IG1fZGF0YThbaV07CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGZhaWxpbmdJbmRleDsgaSA8IG1fbGVuZ3RoOyArK2kpCkBAIC03MDIsMTQgKzcwMiwxNCBA
QCBTbG93UGF0aDoKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgVUNoYXIqIGRhdGExNjsK
LSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50
ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YTE2KTsKKyAgICBSZWY8U3RyaW5nSW1wbD4gbmV3
SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBkYXRh
MTYpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKQogICAgICAg
ICBkYXRhMTZbaV0gPSB0b0FTQ0lJTG93ZXIobV9kYXRhMTZbaV0pOwogICAgIHJldHVybiBuZXdJ
bXBsOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+Ci1pbmxpbmUgUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJl
ZGljYXRlIHByZWRpY2F0ZSkKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3Ry
aXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZSBwcmVkaWNhdGUpCiB7CiAgICAgaWYg
KCFtX2xlbmd0aCkKICAgICAgICAgcmV0dXJuICp0aGlzOwpAQCAtNzU3LDE4ICs3NTcsMTggQEAg
cHVibGljOgogICAgIH0KIH07CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3Ry
aXBXaGl0ZVNwYWNlKCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcFdoaXRlU3Bh
Y2UoKQogewogICAgIHJldHVybiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFNwYWNlT3JOZXdsaW5l
UHJlZGljYXRlKCkpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN0cmlw
V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0ciBpc1doaXRlU3BhY2UpCitSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6c3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9u
UHRyIGlzV2hpdGVTcGFjZSkKIHsKICAgICByZXR1cm4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhV
Q2hhclByZWRpY2F0ZShpc1doaXRlU3BhY2UpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPgotQUxXQVlTX0lOTElORSBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJl
bW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1hdGNo
RnVuY3Rpb25QdHIgZmluZE1hdGNoKQorQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBmaW5kTWF0Y2gpCiB7CiAgICAgY29uc3QgQ2hhclR5cGUq
IGZyb20gPSBjaGFyYWN0ZXJzOwogICAgIGNvbnN0IENoYXJUeXBlKiBmcm9tZW5kID0gZnJvbSAr
IG1fbGVuZ3RoOwpAQCAtODAwLDcgKzgwMCw3IEBAIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjCiAg
ICAgcmV0dXJuIGFkb3B0KGRhdGEpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBmaW5kTWF0Y2gp
CitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJN
YXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaCkKIHsKICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAg
IHJldHVybiByZW1vdmVDaGFyYWN0ZXJzKGNoYXJhY3RlcnM4KCksIGZpbmRNYXRjaCk7CkBAIC04
MDgsNyArODA4LDcgQEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFy
YWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmluZE0KIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlLCBjbGFzcyBVQ2hhclByZWRpY2F0ZT4KLWlubGluZSBQYXNzUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVD
aGFyUHJlZGljYXRlIHByZWRpY2F0ZSkKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUgcHJlZGlj
YXRlKQogewogICAgIFN0cmluZ0J1ZmZlcjxDaGFyVHlwZT4gZGF0YShtX2xlbmd0aCk7CiAKQEAg
LTg0NCwxNCArODQ0LDE0IEBAIGlubGluZSBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFyUHJlCiAgICAgcmV0dXJuIGFk
b3B0KGRhdGEpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5
V2hpdGVTcGFjZSgpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlXaGl0ZVNw
YWNlKCkKIHsKICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpz
aW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZTxMQ2hhcj4oU3BhY2VPck5ld2xpbmVQcmVk
aWNhdGUoKSk7CiAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3Rl
cnNUb1NwYWNlPFVDaGFyPihTcGFjZU9yTmV3bGluZVByZWRpY2F0ZSgpKTsKIH0KIAotUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNl
RnVuY3Rpb25QdHIgaXNXaGl0ZVNwYWNlKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNp
bXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0ciBpc1doaXRlU3BhY2UpCiB7
CiAgICAgaWYgKGlzOEJpdCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6c2ltcGxpZnlN
YXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2U8TENoYXI+KFVDaGFyUHJlZGljYXRlKGlzV2hpdGVTcGFj
ZSkpOwpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAgYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJp
bmdJbXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQgZW5kT2Zmc2V0LCBib29sIGNhc2UKICAgICBy
ZXR1cm4gZXF1YWxJbm5lcihjb25zdF9jYXN0PFN0cmluZ0ltcGwmPigqdGhpcyksIGVuZE9mZnNl
dCAtIG1hdGNoU3RyaW5nLmxlbmd0aCgpLCBtYXRjaFN0cmluZywgY2FzZVNlbnNpdGl2ZSk7CiB9
CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBvbGRDLCBV
Q2hhciBuZXdDKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgb2xk
QywgVUNoYXIgbmV3QykKIHsKICAgICBpZiAob2xkQyA9PSBuZXdDKQogICAgICAgICByZXR1cm4g
KnRoaXM7CkBAIC0xNTEwLDcgKzE1MTAsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UoVUNoYXIgb2xkQywgVUNoYXIgbmV3QykKICAgICByZXR1cm4gbmV3SW1wbDsK
IH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBv
c2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1JlcGxhY2UsIFN0cmluZ0ltcGwqIHN0cikKK1JlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25l
ZCBsZW5ndGhUb1JlcGxhY2UsIFN0cmluZ0ltcGwqIHN0cikKIHsKICAgICBwb3NpdGlvbiA9IHN0
ZDo6bWluKHBvc2l0aW9uLCBsZW5ndGgoKSk7CiAgICAgbGVuZ3RoVG9SZXBsYWNlID0gc3RkOjpt
aW4obGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uKTsKQEAgLTE1NTUsNyArMTU1
NSw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZSh1bnNpZ25lZCBw
b3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsCiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CiAK
LVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBT
dHJpbmdJbXBsKiByZXBsYWNlbWVudCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBs
YWNlKFVDaGFyIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQogewogICAgIGlmICgh
cmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsKQEAgLTE1NjYsNyArMTU2Niw3IEBA
IFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBT
dHJpbmdJbXBsKiByZXBsYWNlbWVudCkKICAgICByZXR1cm4gcmVwbGFjZShwYXR0ZXJuLCByZXBs
YWNlbWVudC0+bV9kYXRhMTYsIHJlcGxhY2VtZW50LT5sZW5ndGgoKSk7CiB9CiAKLVBhc3NSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBMQ2hh
ciogcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHJlcFN0ckxlbmd0aCkKK1JlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIGNvbnN0IExDaGFyKiByZXBsYWNlbWVu
dCwgdW5zaWduZWQgcmVwU3RyTGVuZ3RoKQogewogICAgIEFTU0VSVChyZXBsYWNlbWVudCk7CiAK
QEAgLTE2NDMsNyArMTY0Myw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVw
bGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBMQ2hhciogcmVwbGFjZW1lbnQsCiAgICAgcmV0dXJu
IG5ld0ltcGw7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShV
Q2hhciBwYXR0ZXJuLCBjb25zdCBVQ2hhciogcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHJlcFN0ckxl
bmd0aCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4s
IGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwU3RyTGVuZ3RoKQogewogICAg
IEFTU0VSVChyZXBsYWNlbWVudCk7CiAKQEAgLTE3MjMsNyArMTcyMyw3IEBAIFBhc3NSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBVQ2hhciog
cmVwbGFjZW1lbnQsCiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBsKiBy
ZXBsYWNlbWVudCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0lt
cGwqIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQogewogICAgIGlmICghcGF0dGVy
biB8fCAhcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsKQEAgLTIwNDQsNyArMjA0
NCw3IEBAIFVDaGFyRGlyZWN0aW9uIFN0cmluZ0ltcGw6OmRlZmF1bHRXcml0aW5nRGlyZWN0aW9u
KGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5CiAgICAgcmV0dXJuIFVfTEVGVF9UT19SSUdI
VDsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjphZG9wdChTdHJpbmdCdWZm
ZXI8TENoYXI+JiBidWZmZXIpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQoU3Ry
aW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1ZmZl
ci5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkKQEAgLTIwNTIsNyArMjA1Miw3IEBAIFBhc3NS
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQoU3RyaW5nQnVmZmVyPExDaGFyPiYgYnVm
ZmVyKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoYnVmZmVyLnJlbGVhc2Uo
KSwgbGVuZ3RoKSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQo
U3RyaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmFkb3B0KFN0cmluZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBidWZmZXIubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCmluZGV4IDdlMWRlMGUuLmYyNmVkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5o
CkBAIC0yOTIsMjEgKzI5MiwyMSBAQCBwcml2YXRlOgogcHVibGljOgogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgdm9pZCBkZXN0cm95KFN0cmluZ0ltcGwqKTsKIAotICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0
aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBs
PiBjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci0gICAgc3RhdGljIFBhc3NSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBh
Y2l0eT4mIHZlY3RvcikKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJZlBv
c3NpYmxlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAg
ewogICAgICAgICByZXR1cm4gY3JlYXRlOEJpdElmUG9zc2libGUodmVjdG9yLmRhdGEoKSwgdmVj
dG9yLnNpemUoKSk7CiAgICAgfQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFz
c1JlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciopOworICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJ
ZlBvc3NpYmxlKGNvbnN0IFVDaGFyKik7CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQYXNz
UmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpIHsg
cmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7
IH0KLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlKGNvbnN0IExDaGFyKik7Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1JlZjxT
dHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcykgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkgeyBy
ZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoKTsg
fQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZShjb25zdCBMQ2hhciopOworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBs
PiBjcmVhdGUoY29uc3QgY2hhciogcykgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihzKSk7IH0KIAotICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGw4KFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzdGF0aWMg
QUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGw4
KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXApOwogICAgICAgICBBU1NFUlQobGVuZ3Ro
IDw9IHJlcC0+bGVuZ3RoKCkpOwpAQCAtMzIyLDcgKzMyMiw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZ0ltcGwpIFN0cmluZ0ltcGwocmVw
LT5tX2RhdGE4ICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdWJzdHJpbmdTaGFy
aW5nSW1wbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXAp
OwogICAgICAgICBBU1NFUlQobGVuZ3RoIDw9IHJlcC0+bGVuZ3RoKCkpOwpAQCAtMzQwLDcgKzM0
MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJz
Q291bnQ+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVh
dGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkK
KyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVy
YWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCiAgICAgewogICAg
ICAgICBDT01QSUxFX0FTU0VSVChjaGFyYWN0ZXJzQ291bnQgPiAxLCBTdHJpbmdJbXBsRnJvbUxp
dGVyYWxOb3RFbXB0eSk7CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKChjaGFyYWN0ZXJzQ291bnQg
LSAxIDw9ICgodW5zaWduZWQofjApIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAvIHNpemVvZihMQ2hh
cikpKSwgU3RyaW5nSW1wbEZyb21MaXRlcmFsQ2Fubm90T3ZlcmZsb3cpOwpAQCAtMzQ5LDE0ICsz
NDksMTQgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUcmFuc2l0aW9uIG9mZiBv
ZiB0aGVzZSBmdW5jdGlvbnMgdG8gY3JlYXRlV2l0aG91dENvcHlpbmcgaW5zdGVhZC4KLSAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJv
bUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJv
bUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFy
YWN0ZXJzKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJp
bmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCk7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBh
c3NSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExD
aGFyKiYgZGF0YSk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmPFN0
cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRh
dGEpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpOworICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOwogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBUKiYgb3V0cHV0KQogICAgIHsKICAg
ICAgICAgaWYgKCFsZW5ndGgpIHsKQEAgLTM3OCw3ICszNzgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxUPihyZXN1bHRJbXBsLCBsZW5ndGgpOwogICAgIH0K
IAotICAgIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUVtcHR5VW5pcXVlKCkKKyAg
ICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUVtcHR5VW5pcXVlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlRW1wdHlVbmlxdWUpKTsK
ICAgICB9CkBAIC0zODYsOCArMzg2LDggQEAgcHVibGljOgogICAgIC8vIFJlYWxsb2NhdGUgdGhl
IFN0cmluZ0ltcGwuIFRoZSBvcmlnaW5hbFN0cmluZyBtdXN0IGJlIG9ubHkgb3duZWQgYnkgdGhl
IFBhc3NSZWZQdHIsCiAgICAgLy8gYW5kIHRoZSBidWZmZXIgb3duZXJzaGlwIG11c3QgYmUgQnVm
ZmVySW50ZXJuYWwuIEp1c3QgbGlrZSB0aGUgaW5wdXQgcG9pbnRlciBvZiByZWFsbG9jKCksCiAg
ICAgLy8gdGhlIG9yaWdpbmFsU3RyaW5nIGNhbid0IGJlIHVzZWQgYWZ0ZXIgdGhpcyBmdW5jdGlv
bi4KLSAgICBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiByZWFsbG9jYXRlKFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRh
KTsKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiByZWFsbG9jYXRlKFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRh
KTsKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpOwor
ICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZShQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CiAKICAg
ICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
U3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGZsYWdJ
czhCaXQoKSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQpAQCAtMzk1LDcgKzM5NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgZGF0YU9mZnNldCgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2RhdGE4KTsgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyPgotICAgIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFZlY3RvcjxDaGFy
VHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIHZlY3RvcikKKyAgICBzdGF0
aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFZlY3RvcjxDaGFyVHlwZSwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlcj4mIHZlY3RvcikKICAgICB7CiAgICAgICAgIGlmIChzaXplX3Qgc2l6
ZSA9IHZlY3Rvci5zaXplKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IuZGF0YSgpKTsK
QEAgLTQwNiw4ICs0MDYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqZW1wdHkoKTsKICAg
ICB9CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1w
bD4gYWRvcHQoU3RyaW5nQnVmZmVyPFVDaGFyPiYpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+Jik7
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRvcHQo
U3RyaW5nQnVmZmVyPFVDaGFyPiYpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxMQ2hhcj4mKTsKIAogICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBsZW5ndGhNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RyaW5n
SW1wbCwgbV9sZW5ndGgpOyB9CkBAIC01OTksOSArNTk5LDkgQEAgcHVibGljOgogICAgIC8vIFNv
bWUgc3RyaW5nIGZlYXR1cmVzLCBsaWtlIHJlZmNvdW50aW5nIGFuZCB0aGUgYXRvbWljaXR5IGZs
YWcsIGFyZSBub3QKICAgICAvLyB0aHJlYWQtc2FmZS4gV2UgYWNoaWV2ZSB0aHJlYWQgc2FmZXR5
IGJ5IGlzb2xhdGlvbiwgZ2l2aW5nIGVhY2ggdGhyZWFkCiAgICAgLy8gaXRzIG93biBjb3B5IG9m
IHRoZSBzdHJpbmcuCi0gICAgUGFzc1JlZjxTdHJpbmdJbXBsPiBpc29sYXRlZENvcHkoKSBjb25z
dDsKKyAgICBSZWY8U3RyaW5nSW1wbD4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQg
cG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IFJlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBV
SU5UX01BWCk7CiAKICAgICBVQ2hhciBhdCh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTYz
MywyNSArNjMzLDI1IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAw
KTsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCk7CiAKLSAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwot
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmPFN0cmluZ0ltcGw+IGxvd2VyKCk7Ci0g
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWY8U3RyaW5nSW1wbD4gdXBwZXIoKTsKLSAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiBsb3dlcihjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBQYXNzUmVmPFN0cmluZ0ltcGw+IHVwcGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRl
bnRpZmllcik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBjb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3Ry
aW5nSW1wbD4gbG93ZXIoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0lt
cGw+IHVwcGVyKCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBs
b3dlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOworICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gdXBwZXIoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmPFN0
cmluZ0ltcGw+IGZpbGwoVUNoYXIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3Ry
aW5nSW1wbD4gZmlsbChVQ2hhcik7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgZmlsbChjaGFy
KSBvciBjYW4gd2UganVzdCBkbyB0aGUgcmlnaHQgdGhpbmcgaWYgVUNoYXIgaXMgQVNDSUk/CiAK
LSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IGZvbGRDYXNlKCk7CisgICAgUmVmPFN0cmluZ0ltcGw+
IGZvbGRDYXNlKCk7CiAKLSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFjZSgp
OwotICAgIFBhc3NSZWY8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1
bmN0aW9uUHRyKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBs
PiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKLSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IHNpbXBsaWZ5
V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cik7CisgICAgUmVmPFN0cmluZ0ltcGw+
IHN0cmlwV2hpdGVTcGFjZSgpOworICAgIFJlZjxTdHJpbmdJbXBsPiBzdHJpcFdoaXRlU3BhY2Uo
SXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8
U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgUmVmPFN0cmluZ0ltcGw+IHNp
bXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cik7CiAKLSAgICBQYXNzUmVm
PFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7
CisgICAgUmVmPFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5j
dGlvblB0cik7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZU19J
TkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBl
KiBjaGFyYWN0ZXJzLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKKyAgICBBTFdBWVNfSU5M
SU5FIFJlZjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFy
YWN0ZXJzLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKIAogICAgIHNpemVfdCBmaW5kKExD
aGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAgICBzaXplX3QgZmluZChjaGFy
IGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKQEAgLTY4NiwxMyArNjg2LDEzIEBAIHB1
YmxpYzoKICAgICBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3Ro
XSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgocHJl
Zml4LCBtYXRjaExlbmd0aCAtIDEsIGNhc2VTZW5zaXRpdmUpOyB9CiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCYsIHVuc2lnbmVkIGVuZE9mZnNldCwg
Ym9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQ
YXNzUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBTdHJpbmdJbXBs
Kik7Ci0gICAgQUxXQVlTX0lOTElORSBQYXNzUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIg
cGF0dGVybiwgY29uc3QgY2hhciogcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVu
Z3RoKSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihyZXBsYWNlbWVudCksIHJlcGxhY2VtZW50TGVuZ3RoKTsgfQotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBQYXNzUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IExDaGFy
KiwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpOwotICAgIFBhc3NSZWY8U3RyaW5nSW1wbD4g
cmVwbGFjZShVQ2hhciwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShT
dHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNz
UmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3Ry
aW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVw
bGFjZShVQ2hhciwgVUNoYXIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5n
SW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIEFMV0FZU19JTkxJTkUgUmVm
PFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgY2hhciogcmVwbGFjZW1l
bnQsIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihyZXBsYWNlbWVudCksIHJlcGxhY2VtZW50
TGVuZ3RoKTsgfQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVw
bGFjZShVQ2hhciwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7Cisg
ICAgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
cmVwbGFjZW1lbnRMZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5n
SW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWdu
ZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNoYXJE
aXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9u
YWxpdHkgPSBudWxscHRyKTsKIApAQCAtNzY3LDEzICs3NjcsMTMgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19jb3B5Q2hhcnNJbmxpbmVDdXRPZmYgPSAyMDsKIAogICAg
IEJ1ZmZlck93bmVyc2hpcCBidWZmZXJPd25lcnNoaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxCdWZmZXJPd25lcnNoaXA+KG1faGFzaEFuZEZsYWdzICYgc19oYXNoTWFza0J1ZmZlck93
bmVyc2hpcCk7IH0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFBhc3NSZWY8
U3RyaW5nSW1wbD4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZSk7Ci0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlLCBjbGFzcyBVQ2hhclByZWRpY2F0ZT4gUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShVQ2hhclByZWRp
Y2F0ZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUGFzc1JlZjxT
dHJpbmdJbXBsPiBjb25zdHJ1Y3RJbnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQpOwotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsKHVuc2lnbmVkLCBDaGFyVHlwZSomKTsKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkLCBDaGFyVHlwZSomKTsK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBQYXNzUmVmPFN0cmluZ0lt
cGw+IHJlYWxsb2NhdGVJbnRlcm5hbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+LCB1bnNpZ25lZCwg
Q2hhclR5cGUqJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUGFz
c1JlZjxTdHJpbmdJbXBsPiBjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSosIHVuc2lnbmVk
KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBz
dHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJlZGljYXRlKTsKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGUsIGNsYXNzIFVDaGFyUHJlZGljYXRlPiBSZWY8U3RyaW5nSW1wbD4gc2lt
cGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUpOworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjb25zdHJ1Y3RJ
bnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJu
YWwodW5zaWduZWQsIENoYXJUeXBlKiYpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25F
bXB0eSh1bnNpZ25lZCwgQ2hhclR5cGUqJik7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGVJbnRlcm5hbChQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+LCB1bnNpZ25lZCwgQ2hhclR5cGUqJik7CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUludGVybmFsKGNvbnN0
IENoYXJUeXBlKiwgdW5zaWduZWQpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBORVZFUl9JTkxJ
TkUgdW5zaWduZWQgaGFzaFNsb3dDYXNlKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHVuc2lnbmVkIGhhc2hBbmRGbGFnc0ZvckVtcHR5VW5pcXVlKCk7CiAKQEAgLTg0Myw5ICs4NDMs
OSBAQCBWYWx1ZUNoZWNrPFN0cmluZ0ltcGwqPiB7CiAjZW5kaWYKIAogdGVtcGxhdGUgPD4KLUFM
V0FZU19JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRl
cm5hbDxMQ2hhcj4oU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0
Q29uc3RydWN0b3IpKTsgfQorQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6Y29uc3RydWN0SW50ZXJuYWw8TENoYXI+KFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxl
bmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChs
ZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVjdG9yKSk7IH0KIHRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5M
SU5FIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8VUNo
YXI+KFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyAoTm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChsZW5ndGgpKTsgfQorQUxXQVlTX0lOTElO
RSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8VUNoYXI+KFN0
cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyAo
Tm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChsZW5ndGgpKTsgfQogCiB0ZW1wbGF0ZSA8PgogQUxX
QVlTX0lOTElORSBjb25zdCBMQ2hhciogU3RyaW5nSW1wbDo6Y2hhcmFjdGVyczxMQ2hhcj4oKSBj
b25zdCB7IHJldHVybiBjaGFyYWN0ZXJzOCgpOyB9CkBAIC0xMzMxLDcgKzEzMzEsNyBAQCBpbmxp
bmUgdW5zaWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0ZXJU
eXBlKiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOwog
fQogCi1pbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjppc29sYXRlZENvcHko
KSBjb25zdAoraW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjppc29sYXRlZENvcHko
KSBjb25zdAogewogICAgIGlmICghcmVxdWlyZXNDb3B5KCkpIHsKICAgICAgICAgaWYgKGlzOEJp
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggMzE3YWZiYy4uNTA4Yzg2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgIFN0cmlu
ZyhTdHJpbmdJbXBsJiBpbXBsKSA6IG1faW1wbCgmaW1wbCkgeyB9CiAgICAgU3RyaW5nKFN0cmlu
Z0ltcGwqIGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQogICAgIFN0cmluZyhQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQotICAgIFN0cmluZyhQYXNzUmVmPFN0
cmluZ0ltcGw+JiYgaW1wbCkgOiBtX2ltcGwoc3RkOjpmb3J3YXJkPFBhc3NSZWY8U3RyaW5nSW1w
bD4+KGltcGwpKSB7IH0KKyAgICBTdHJpbmcoUmVmPFN0cmluZ0ltcGw+JiYgaW1wbCkgOiBtX2lt
cGwoc3RkOjpmb3J3YXJkPFJlZjxTdHJpbmdJbXBsPj4oaW1wbCkpIHsgfQogICAgIFN0cmluZyhS
ZWZQdHI8U3RyaW5nSW1wbD4mJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KIAogICAgIC8vIENv
bnN0cnVjdCBhIHN0cmluZyBmcm9tIGEgY29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCkBAIC01MTIs
NyArNTEyLDcgQEAgaW5saW5lIHZvaWQgc3dhcChTdHJpbmcmIGEsIFN0cmluZyYgYikgeyBhLnN3
YXAoYik7IH0KIAogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXI+CiBTdHJpbmc6OlN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNh
cGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiB2ZWN0b3IpCi0gICAgOiBtX2ltcGwodmVjdG9yLnNp
emUoKSA/IFN0cmluZ0ltcGw6OmNyZWF0ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSA6
ICpTdHJpbmdJbXBsOjplbXB0eSgpKQorICAgIDogbV9pbXBsKHZlY3Rvci5zaXplKCkgPyBTdHJp
bmdJbXBsOjpjcmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSkgOiBSZWY8U3RyaW5n
SW1wbD4oKlN0cmluZ0ltcGw6OmVtcHR5KCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZEJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRCdXR0b24uaAppbmRleCAxMGNmMGY3Li5iYWVmY2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZEJ1dHRvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkQnV0dG9uLmgKQEAg
LTI4LDE0ICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdhbWVwYWRCdXR0b24gOiBwdWJs
aWMgUmVmQ291bnRlZDxHYW1lcGFkQnV0dG9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWY8R2FtZXBhZEJ1dHRvbj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPEdhbWVwYWRCdXR0b24+
IGNyZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHYW1lcGFkQnV0
dG9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQv
TmF2aWdhdG9yR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2
aWdhdG9yR2FtZXBhZC5jcHAKaW5kZXggYTcxZmZhMi4uM2M1NmUxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcApAQCAtNzIs
NyArNzIsNyBAQCBOYXZpZ2F0b3JHYW1lcGFkKiBOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKE5hdmln
YXRvciogbmF2aWdhdG9yKQogICAgIHJldHVybiBzdXBwbGVtZW50OwogfQogCi1QYXNzUmVmPEdh
bWVwYWQ+IE5hdmlnYXRvckdhbWVwYWQ6OmdhbWVwYWRGcm9tUGxhdGZvcm1HYW1lcGFkKFBsYXRm
b3JtR2FtZXBhZCYgcGxhdGZvcm1HYW1lcGFkKQorUmVmPEdhbWVwYWQ+IE5hdmlnYXRvckdhbWVw
YWQ6OmdhbWVwYWRGcm9tUGxhdGZvcm1HYW1lcGFkKFBsYXRmb3JtR2FtZXBhZCYgcGxhdGZvcm1H
YW1lcGFkKQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gcGxhdGZvcm1HYW1lcGFkLmluZGV4KCk7
CiAgICAgaWYgKGluZGV4ID49IG1fZ2FtZXBhZHMuc2l6ZSgpIHx8ICFtX2dhbWVwYWRzW2luZGV4
XSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JH
YW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBh
ZC5oCmluZGV4IGUzNjkwY2UuLmJjY2M4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBnYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpOwogICAgIHZvaWQg
Z2FtZXBhZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmKTsKIAotICAgIFBhc3NSZWY8R2Ft
ZXBhZD4gZ2FtZXBhZEZyb21QbGF0Zm9ybUdhbWVwYWQoUGxhdGZvcm1HYW1lcGFkJik7CisgICAg
UmVmPEdhbWVwYWQ+IGdhbWVwYWRGcm9tUGxhdGZvcm1HYW1lcGFkKFBsYXRmb3JtR2FtZXBhZCYp
OwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNw
cAppbmRleCAxN2RmMjY4Li5kMGY4YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQg
R2VvbG9jYXRpb246OldhdGNoZXJzOjpnZXROb3RpZmllcnNWZWN0b3IoR2VvTm90aWZpZXJWZWN0
b3ImIGNvcHkpIGNvbnN0CiAgICAgY29weVZhbHVlc1RvVmVjdG9yKG1faWRUb05vdGlmaWVyTWFw
LCBjb3B5KTsKIH0KIAotUGFzc1JlZjxHZW9sb2NhdGlvbj4gR2VvbG9jYXRpb246OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorUmVmPEdlb2xvY2F0aW9uPiBHZW9sb2Nh
dGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgYXV0
byBnZW9sb2NhdGlvbiA9IGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb24oY29udGV4dCkpOwogICAg
IGdlb2xvY2F0aW9uLmdldCgpLnN1c3BlbmRJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oCmluZGV4IDUyNmRkYzAuLjkzZTE0
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNs
YXNzIEdlb2xvY2F0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50
ZWQ8R2VvbG9jYXRpb24+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWY8R2VvbG9jYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CisgICAgc3RhdGljIFJlZjxHZW9sb2NhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+R2VvbG9jYXRpb24oKTsKIAogI2lmIFBMQVRG
T1JNKElPUykKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIEdlb05vdGlm
aWVyIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvTm90aWZpZXI+IHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmPEdlb05vdGlmaWVyPiBjcmVhdGUoR2VvbG9jYXRpb24qIGdlb2xv
Y2F0aW9uLCBQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRpb25zKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IEdlb05vdGlmaWVyKGdlb2xvY2F0aW9uLCBwb3NpdGlvbkNhbGxiYWNrLCBwb3NpdGlvbkVycm9y
Q2FsbGJhY2ssIG9wdGlvbnMpKTsgfQorICAgICAgICBzdGF0aWMgUmVmPEdlb05vdGlmaWVyPiBj
cmVhdGUoR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uLCBQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJh
Y2s+IHBvc2l0aW9uQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBw
b3NpdGlvbkVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBvcHRpb25z
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEdlb05vdGlmaWVyKGdlb2xvY2F0aW9uLCBwb3NpdGlv
bkNhbGxiYWNrLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpKTsgfQogCiAgICAgICAg
IFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5nZXQo
KTsgfTsKICAgICAgICAgdm9pZCBzZXRGYXRhbEVycm9yKFBhc3NSZWZQdHI8UG9zaXRpb25FcnJv
cj4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRp
YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlLmNwcAppbmRleCBmMTZlYjNmLi4wYzk5OWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtMTEwLDcgKzExMCw3IEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2U6OmVuZGVkS2V5d29yZCgpCiAgICAgcmV0
dXJuIGVuZGVkOwogfQogCi12b2lkIE1lZGlhU291cmNlOjpzZXRQcml2YXRlQW5kT3BlbihQYXNz
UmVmPE1lZGlhU291cmNlUHJpdmF0ZT4gbWVkaWFTb3VyY2VQcml2YXRlKQordm9pZCBNZWRpYVNv
dXJjZTo6c2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJiBtZWRpYVNv
dXJjZVByaXZhdGUpCiB7CiAgICAgQVNTRVJUKCFtX3ByaXZhdGUpOwogICAgIEFTU0VSVChtX21l
ZGlhRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmgKaW5kZXggZmFkNGRjMS4uNGI0Mzc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaApAQCAtNzEsNyArNzEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihjb25zdCBBdG9taWNTdHJpbmcm
IGVycm9yLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGVDbGll
bnQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4oUGFzc1JlZjxNZWRpYVNvdXJj
ZVByaXZhdGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4o
UmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBNZWRpYVRp
bWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5k
ZXggZmM2MWNkOS4uNDE0MWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtOTcsMTQgKzk3LDE0IEBAIHN0cnVjdCBT
b3VyY2VCdWZmZXI6OlRyYWNrQnVmZmVyIHsKICAgICB9CiB9OwogCi1QYXNzUmVmPFNvdXJjZUJ1
ZmZlcj4gU291cmNlQnVmZmVyOjpjcmVhdGUoUGFzc1JlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiBz
b3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYVNvdXJjZSogc291cmNlKQorUmVmPFNvdXJjZUJ1ZmZl
cj4gU291cmNlQnVmZmVyOjpjcmVhdGUoUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+JiYgc291cmNl
QnVmZmVyUHJpdmF0ZSwgTWVkaWFTb3VyY2UqIHNvdXJjZSkKIHsKICAgICBSZWZQdHI8U291cmNl
QnVmZmVyPiBzb3VyY2VCdWZmZXIoYWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlcihXVEY6Om1vdmUo
c291cmNlQnVmZmVyUHJpdmF0ZSksIHNvdXJjZSkpKTsKICAgICBzb3VyY2VCdWZmZXItPnN1c3Bl
bmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBzb3VyY2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKTsK
IH0KIAotU291cmNlQnVmZmVyOjpTb3VyY2VCdWZmZXIoUGFzc1JlZjxTb3VyY2VCdWZmZXJQcml2
YXRlPiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYVNvdXJjZSogc291cmNlKQorU291cmNlQnVm
ZmVyOjpTb3VyY2VCdWZmZXIoUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+JiYgc291cmNlQnVmZmVy
UHJpdmF0ZSwgTWVkaWFTb3VyY2UqIHNvdXJjZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChzb3Vy
Y2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fcHJpdmF0ZShXVEY6Om1vdmUo
c291cmNlQnVmZmVyUHJpdmF0ZSkpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA1MWEw
MjBjLi44OTZlZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgVmlkZW9UcmFja0xpc3Q7
CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNvdXJjZUJ1
ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudCwgcHVibGljIEF1ZGlvVHJhY2tDbGllbnQsIHB1YmxpYyBWaWRlb1RyYWNrQ2xpZW50
LCBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxT
b3VyY2VCdWZmZXI+IGNyZWF0ZShQYXNzUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+LCBNZWRpYVNv
dXJjZSopOworICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUmVmPFNvdXJjZUJ1
ZmZlclByaXZhdGU+JiYsIE1lZGlhU291cmNlKik7CiAKICAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZm
ZXIoKTsKIApAQCAtMTE4LDcgKzExOCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiBwcml2YXRlOgotICAg
IFNvdXJjZUJ1ZmZlcihQYXNzUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+LCBNZWRpYVNvdXJjZSop
OworICAgIFNvdXJjZUJ1ZmZlcihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3Vy
Y2UqKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQKICAgICB2aXJ0dWFsIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZEVuZFN0cmVhbShTb3VyY2VCdWZmZXJQcml2YXRlKiwg
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCmluZGV4IDUxZDYwY2Uu
LmI0ZDkzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDbGllbnQuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBVc2VyTWVkaWFDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWY8VXNlck1lZGlhUmVxdWVz
dD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oUmVmPFVzZXJNZWRp
YVJlcXVlc3Q+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdChVc2VyTWVk
aWFSZXF1ZXN0JikgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oCmluZGV4IGE2MmFk
MWYuLjc1NzZkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICB+VXNlck1lZGlhQ29udHJvbGxlcigpOwogCiAgICAgVXNlck1lZGlhQ2xpZW50KiBjbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQotICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oUGFzc1JlZjxVc2VyTWVkaWFSZXF1ZXN0Pik7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihSZWY8VXNlck1lZGlhUmVxdWVzdD4mJik7CiAgICAgdm9pZCBjYW5jZWxSZXF1ZXN0KFVzZXJN
ZWRpYVJlcXVlc3QmKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwpAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogICAgIFVzZXJNZWRpYUNsaWVudCogbV9jbGll
bnQ7CiB9OwogCi1pbmxpbmUgdm9pZCBVc2VyTWVkaWFDb250cm9sbGVyOjpyZXF1ZXN0UGVybWlz
c2lvbihQYXNzUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QpCitpbmxpbmUgdm9pZCBVc2Vy
TWVkaWFDb250cm9sbGVyOjpyZXF1ZXN0UGVybWlzc2lvbihSZWY8VXNlck1lZGlhUmVxdWVzdD4m
JiByZXF1ZXN0KQogewogICAgIG1fY2xpZW50LT5yZXF1ZXN0UGVybWlzc2lvbihXVEY6Om1vdmUo
cmVxdWVzdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCBkMDg2ZTk3Li5iOTU3NmE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKQogfQogCiAj
aWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotUGFzc1JlZjxOb3RpZmljYXRpb24+IE5v
dGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9k
eSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3Zp
ZGVyKSAKK1JlZjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCiAgICAgYXV0byBub3RpZmljYXRp
b24gPSBhZG9wdFJlZigqbmV3IE5vdGlmaWNhdGlvbih0aXRsZSwgYm9keSwgaWNvblVSSSwgY29u
dGV4dCwgZWMsIHByb3ZpZGVyKSk7CiAgICAgbm90aWZpY2F0aW9uLmdldCgpLnN1c3BlbmRJZk5l
ZWRlZCgpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIFBhc3NSZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmlj
YXRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotUGFzc1JlZjxOb3RpZmljYXRpb24+IE5v
dGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCitSZWY8Tm90aWZpY2F0
aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQogewogICAg
IGF1dG8gbm90aWZpY2F0aW9uID0gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb24oY29udGV4dCwg
dGl0bGUpKTsKICAgICBTdHJpbmcgYXJndW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggNTA3OTdhZS4uNmI2OTQw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaApAQCAtNjYsMTAgKzY2LDEwIEBAIGNsYXNzIE5vdGlmaWNhdGlvbiBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplCiBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTm90aWZpY2F0aW9uKCk7CiAjaWYgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQotICAgIHN0YXRpYyBQYXNzUmVmPE5vdGlmaWNhdGlvbj4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5n
JiBpY29uVVJJLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NS
ZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcik7CisgICAgc3RhdGljIFJlZjxOb3Rp
ZmljYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHks
IGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlv
bkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOwogI2VuZGlm
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgc3RhdGljIFBhc3NSZWY8Tm90aWZpY2F0
aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpOworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9u
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpOwogI2VuZGlmCiAgICAgCiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDNh
NWEwMDcuLjA5NTgyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxOb3RpZmljYXRpb25DZW50ZXI+IE5v
dGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQorUmVmPE5vdGlmaWNhdGlvbkNlbnRlcj4gTm90
aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Tm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgYXV0byBub3RpZmljYXRpb25DZW50
ZXIgPSBhZG9wdFJlZigqbmV3IE5vdGlmaWNhdGlvbkNlbnRlcihjb250ZXh0LCBjbGllbnQpKTsK
ICAgICBub3RpZmljYXRpb25DZW50ZXIuZ2V0KCkuc3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmgKaW5kZXggZDNjZGEzYi4uMjAwZDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIE5vdGlmaWNhdGlvbkNl
bnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPE5vdGlmaWNhdGlvbkNl
bnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25DbGllbnQq
KTsKKyAgICBzdGF0aWMgUmVmPE5vdGlmaWNhdGlvbkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25DbGllbnQqKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
Tk9USUZJQ0FUSU9OUykKICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlTm90aWZp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgaWNvblVSSSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiBib2R5LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50LmgKaW5kZXggNjBmOTE4ZC4uOTEyNmYw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxh
Y2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxh
Y2VtZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNDOjpKU09i
amVjdCogc2NyaXB0T2JqZWN0KCkgeyByZXR1cm4gMDsgfQogCiAgICAgdmlydHVhbCBib29sIHdp
bGxDcmVhdGVSZW5kZXJlcigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pID0gMDsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+KSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBQbHVnaW5SZXBsYWNlbWVudCgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAppbmRleCAzYzhhYTk5Li4wMGE2OTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBK
U0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBtX3NjcmlwdE9i
amVjdDsgfQogCiAgICAgdmlydHVhbCBib29sIHdpbGxDcmVhdGVSZW5kZXJlcigpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFJlZjxSZW5k
ZXJTdHlsZT4pIG92ZXJyaWRlOwogCiAgICAgSFRNTFZpZGVvRWxlbWVudCogcGFyZW50RWxlbWVu
dCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50LmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5tbQppbmRleCBlYWQ2ZGM2Li43OWMyMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBA
IC0xMzMsNyArMTMzLDcgQEAgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6On5RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudCgpCiAgICAgbV9tZWRpYUVsZW1lbnQgPSBudWxscHRyOwogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVn
aW4sIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwbHVnaW4s
IG1fcGFyZW50RWxlbWVudCA9PSAmcGx1Z2luKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRl
eCA1NWJhNmVkLi4zODRiMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNjcsNyArNjcs
NyBAQCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OllvdVR1YmVQbHVnaW5SZXBsYWNlbWVudChI
VE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBjbwogICAgICAgICBtX2F0dHJpYnV0ZXMuYWRkKHBh
cmFtTmFtZXNbaV0sIHBhcmFtVmFsdWVzW2ldKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQ
bHVnSW5FbGVtZW50JiBwbHVnaW4sIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIFJlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwbHVnaW4sIG1fcGFyZW50RWxlbWVudCA9PSAmcGx1
Z2luKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lv
dVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oCmluZGV4IDA5NTNjOTkuLjAxYTNiZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJl
cGxhY2VtZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgeW91VHVi
ZVVSTChjb25zdCBTdHJpbmcmIHJhd1VSTCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxD
cmVhdGVSZW5kZXJlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZW1iZWRTaGFkb3dFbGVtZW50OyB9
Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihIVE1MUGx1Z0luRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOwogICAgIAog
ICAgIEhUTUxQbHVnSW5FbGVtZW50KiBtX3BhcmVudEVsZW1lbnQ7CiAgICAgUmVmUHRyPFlvdVR1
YmVFbWJlZFNoYWRvd0VsZW1lbnQ+IG1fZW1iZWRTaGFkb3dFbGVtZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCA3Njg5ZDNjLi4xY2IxOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTMw
LDcgKzUzMCw3IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTJzZXRGaWxsQ29sb3JF
UktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRl
eHQxNHNldFN0cm9rZUNvbG9yRVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKIF9fWk43V2Vi
Q29yZTE1R3JhcGhpY3NDb250ZXh0MTVkcmF3SW1hZ2VCdWZmZXJFUE5TXzExSW1hZ2VCdWZmZXJF
TlNfMTBDb2xvclNwYWNlRVJLTlNfMTBGbG9hdFBvaW50RVJLTlNfMjBJbWFnZVBhaW50aW5nT3B0
aW9uc0UKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVkcmF3TmF0aXZlSW1hZ2VFUDdD
R0ltYWdlUktOU185RmxvYXRTaXplRU5TXzEwQ29sb3JTcGFjZUVSS05TXzlGbG9hdFJlY3RFUzlf
TlNfMTdDb21wb3NpdGVPcGVyYXRvckVOU185QmxlbmRNb2RlRU5TXzE2SW1hZ2VPcmllbnRhdGlv
bkUKLV9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVzZXRGaWxsR3JhZGllbnRFTjNXVEY3
UGFzc1JlZklOU184R3JhZGllbnRFRUUKK19fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVz
ZXRGaWxsR3JhZGllbnRFT04zV1RGM1JlZklOU184R3JhZGllbnRFRUUKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NDb250ZXh0MThzZXRTaG91bGRBbnRpYWxpYXNFYgogX19aTjdXZWJDb3JlMTVHcmFw
aGljc0NvbnRleHQxOXNldElzQ0FMYXllckNvbnRleHRFYgogX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0NvbnRleHQyMGVuZFRyYW5zcGFyZW5jeUxheWVyRXYKQEAgLTEwODQsOCArMTA4NCw4IEBAIF9f
Wk43V2ViQ29yZTI3cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsRVJLTlNfM1VSTEVTMl8KIF9f
Wk43V2ViQ29yZTI3cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yRVJOM0pTQzlFeGVjU3RhdGVF
UEtjUzRfCiBfX1pON1dlYkNvcmUyN3JlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvckVSTjNKU0M5
RXhlY1N0YXRlRVBLY1M0XwogX19aTjdXZWJDb3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5n
ZXNFUEZ2dkUKLV9fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjEyYWRk
VXNlclNoZWV0RU4zV1RGN1Bhc3NSZWZJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUUKLV9fWk43
V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjE0YWRkQXV0aG9yU2hlZXRFTjNX
VEY3UGFzc1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQorX19aTjdXZWJDb3JlMjhEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFT04zV1RGM1JlZklOU18xOFN0
eWxlU2hlZXRDb250ZW50c0VFRQorX19aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uMTRhZGRBdXRob3JTaGVldEVPTjNXVEYzUmVmSU5TXzE4U3R5bGVTaGVldENvbnRlbnRz
RUVFCiBfX1pON1dlYkNvcmUyOFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JDMUVSS04zV1RG
MTJBdG9taWNTdHJpbmdFUk5TXzE1RE9NV3JhcHBlcldvcmxkRVJOUzBfNkNsaWVudEUKIF9fWk43
V2ViQ29yZTI4VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvckQxRXYKIF9fWk43V2ViQ29yZTI4
ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlc0VSS04zV1RGNlN0cmluZ0UKQEAgLTExNjAsNyAr
MTE2MCw3IEBAIF9fWk43V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0b3JFZlJLTlNfOElu
dFBvaW50RWIKIF9fWk43V2ViQ29yZTRQYWdlMThzZXRUb3BDb250ZW50SW5zZXRFZgogX19aTjdX
ZWJDb3JlNFBhZ2UxOWFkZExheW91dE1pbGVzdG9uZXNFagogX19aTjdXZWJDb3JlNFBhZ2UxOWVu
YWJsZVBhZ2VUaHJvdHRsZXJFdgotX19aTjdXZWJDb3JlNFBhZ2UxOXNldFZpc2l0ZWRMaW5rU3Rv
cmVFTjNXVEY3UGFzc1JlZklOU18xNlZpc2l0ZWRMaW5rU3RvcmVFRUUKK19fWk43V2ViQ29yZTRQ
YWdlMTlzZXRWaXNpdGVkTGlua1N0b3JlRU9OM1dURjNSZWZJTlNfMTZWaXNpdGVkTGlua1N0b3Jl
RUVFCiBfX1pON1dlYkNvcmU0UGFnZTIwc2Nyb2xsaW5nQ29vcmRpbmF0b3JFdgogX19aTjdXZWJD
b3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYKIF9fWk43V2ViQ29yZTRQYWdlMjB1bm1h
cmtBbGxUZXh0TWF0Y2hlc0V2CkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBfX1pON1dlYkNvcmU2RWRp
dG9yN2NvcHlVUkxFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlNkVkaXRv
cjdvdXRkZW50RXYKIF9fWk43V2ViQ29yZTZKU05vZGU2c19pbmZvRQogX19aTjdXZWJDb3JlNkpT
Tm9kZTl0b1dyYXBwZWRFTjNKU0M3SlNWYWx1ZUUKLV9fWk43V2ViQ29yZTZMZW5ndGhDMUVOM1dU
RjdQYXNzUmVmSU5TXzE2Q2FsY3VsYXRpb25WYWx1ZUVFRQorX19aTjdXZWJDb3JlNkxlbmd0aEMx
RU9OM1dURjNSZWZJTlNfMTZDYWxjdWxhdGlvblZhbHVlRUVFCiBfX1pON1dlYkNvcmU2UmVnaW9u
MjF1cGRhdGVCb3VuZHNGcm9tU2hhcGVFdgogX19aTjdXZWJDb3JlNlJlZ2lvbjV1bml0ZUVSS1Mw
XwogX19aTjdXZWJDb3JlNlJlZ2lvbjhzdWJ0cmFjdEVSS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDk2ZTE0ZGEuLmRjYjFmMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
c3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJhc2ljU2hhcGVSYWRpdXNUb0NT
U1ZhbHVlKGNvbnN0IFJlbmRlclN0eWwKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZjxDU1NW
YWx1ZT4gdmFsdWVGb3JCYXNpY1NoYXBlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3Qg
QmFzaWNTaGFwZSYgYmFzaWNTaGFwZSkKK1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JCYXNpY1NoYXBl
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQmFzaWNTaGFwZSYgYmFzaWNTaGFwZSkK
IHsKICAgICBDU1NWYWx1ZVBvb2wmIHBvb2wgPSBjc3NWYWx1ZVBvb2woKTsKIApAQCAtMTk5LDcg
KzE5OSw3IEBAIHN0YXRpYyBCYXNpY1NoYXBlUmFkaXVzIGNzc1ZhbHVlVG9CYXNpY1NoYXBlUmFk
aXVzKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhCiAgICAgcmV0dXJuIEJhc2ljU2hhcGVS
YWRpdXMoY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCByYWRpdXMuZ2V0KCkpKTsKIH0K
IAotUGFzc1JlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU0Jhc2ljU2hhcGUqIGJh
c2ljU2hhcGVWYWx1ZSkKK1JlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29uc3Qg
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU0Jhc2lj
U2hhcGUqIGJhc2ljU2hhcGVWYWx1ZSkKIHsKICAgICBSZWZQdHI8QmFzaWNTaGFwZT4gYmFzaWNT
aGFwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmgKaW5kZXggNjhj
YzdhNi4uZjFjZmFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVG
dW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5o
CkBAIC00Miw4ICs0Miw4IEBAIGNsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CiBjbGFz
cyBDU1NWYWx1ZTsKIGNsYXNzIFJlbmRlclN0eWxlOwogCi1QYXNzUmVmPENTU1ZhbHVlPiB2YWx1
ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBCYXNpY1NoYXBlJik7Ci1Q
YXNzUmVmPEJhc2ljU2hhcGU+IGJhc2ljU2hhcGVGb3JWYWx1ZShjb25zdCBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhJiwgY29uc3QgQ1NTQmFzaWNTaGFwZSopOworUmVmPENTU1ZhbHVlPiB2YWx1
ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBCYXNpY1NoYXBlJik7CitS
ZWY8QmFzaWNTaGFwZT4gYmFzaWNTaGFwZUZvclZhbHVlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEmLCBjb25zdCBDU1NCYXNpY1NoYXBlKik7CiAKIGZsb2F0IGZsb2F0VmFsdWVGb3JD
ZW50ZXJDb29yZGluYXRlKGNvbnN0IEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlJiwgZmxvYXQp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKaW5kZXggODdkNTQ2
Yi4uY2FiOGE4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRp
b1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaApA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0FzcGVjdFJh
dGlvVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
PENTU0FzcGVjdFJhdGlvVmFsdWU+IGNyZWF0ZShmbG9hdCBudW1lcmF0b3JWYWx1ZSwgZmxvYXQg
ZGVub21pbmF0b3JWYWx1ZSkKKyAgICBzdGF0aWMgUmVmPENTU0FzcGVjdFJhdGlvVmFsdWU+IGNy
ZWF0ZShmbG9hdCBudW1lcmF0b3JWYWx1ZSwgZmxvYXQgZGVub21pbmF0b3JWYWx1ZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0FzcGVjdFJhdGlvVmFsdWUobnVtZXJh
dG9yVmFsdWUsIGRlbm9taW5hdG9yVmFsdWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jv
cmRlckltYWdlLmNwcAppbmRleCBmOTQ2YmNhLi5iZTc0MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCb3JkZXJJbWFnZS5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlQm9yZGVySW1hZ2VWYWx1ZShQYXNzUmVm
UHRyPENTU1ZhbHVlPiBpbWFnZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2VTbGljZSwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gYm9yZGVyU2xpY2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IG91dHNl
dCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KQorUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRl
Qm9yZGVySW1hZ2VWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZSwgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gaW1hZ2VTbGljZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gYm9yZGVyU2xpY2UsIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IG91dHNldCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KQog
ewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
ICAgICBpZiAoaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVy
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCmluZGV4IDA2ZmE1
NDMuLmMyYzI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCkBAIC0yNyw3ICsy
Nyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGNy
ZWF0ZUJvcmRlckltYWdlVmFsdWUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IGltYWdlU2xpY2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGJvcmRlclNsaWNl
LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlcGVh
dCk7CitSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IGltYWdlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZVNsaWNlLCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBib3JkZXJTbGljZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gb3V0c2V0LCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAppbmRleCA4
YjlmZTRhLi5iOGI3NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdl
U2xpY2VWYWx1ZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFJlY3Q7CiAKIGNsYXNzIENTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWY8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gc2xpY2VzLCBib29sIGZpbGwpCisgICAgc3RhdGljIFJlZjxDU1NC
b3JkZXJJbWFnZVNsaWNlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBzbGljZXMsIGJvb2wgZmlsbCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZShzbGljZXMsIGZpbGwpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggZmE5OTVmNi4uNGM3MTQz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMTk3
LDcgKzE5Nyw3IEBAIGRvdWJsZSBDU1NDYWxjVmFsdWU6OmNvbXB1dGVMZW5ndGhQeChjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uCiBjbGFzcyBDU1NDYWxjUHJpbWl0
aXZlVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NDYWxj
UHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZSwgYm9vbCBpc0ludGVnZXIpCisgICAgc3RhdGljIFJlZjxDU1NDYWxjUHJpbWl0aXZlVmFsdWU+
IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZSwgYm9vbCBpc0ludGVn
ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDYWxjUHJpbWl0aXZl
VmFsdWUodmFsdWUsIGlzSW50ZWdlcikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5oCmluZGV4IGZjMDQ0M2YuLjJkMGMwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaApAQCAtOTUsMTMgKzk1LDEzIEBAIHB1YmxpYzoKICAg
ICBib29sIGlzTmVnYXRpdmUoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb24tPmRvdWJsZVZh
bHVlKCkgPCAwOyB9CiAgICAgZG91YmxlIGNvbXB1dGVMZW5ndGhQeChjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAKLSAgICBQYXNzUmVmPENhbGN1bGF0aW9uVmFsdWU+
IGNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYp
IGNvbnN0OworICAgIFJlZjxDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGVDYWxjdWxhdGlvblZhbHVl
KGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmKSBjb25zdDsKIAogICAgIFN0cmluZyBj
dXN0b21DU1NUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ2FsY1ZhbHVl
JikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQ2FsY1ZhbHVlKFBhc3NSZWY8Q1NTQ2FsY0V4
cHJlc3Npb25Ob2RlPiwgYm9vbCBzaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUpOworICAgIENTU0Nh
bGNWYWx1ZShSZWY8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiYmLCBib29sIHNob3VsZENsYW1wVG9O
b25OZWdhdGl2ZSk7CiAKICAgICBkb3VibGUgY2xhbXBUb1Blcm1pdHRlZFJhbmdlKGRvdWJsZSkg
Y29uc3Q7CiAKQEAgLTEwOSwxNCArMTA5LDE0IEBAIHByaXZhdGU6CiAgICAgY29uc3QgYm9vbCBt
X3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZTsKIH07CiAKLWlubGluZSBDU1NDYWxjVmFsdWU6OkNT
U0NhbGNWYWx1ZShQYXNzUmVmPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gZXhwcmVzc2lvbiwgYm9v
bCBzaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUpCitpbmxpbmUgQ1NTQ2FsY1ZhbHVlOjpDU1NDYWxj
VmFsdWUoUmVmPENTU0NhbGNFeHByZXNzaW9uTm9kZT4mJiBleHByZXNzaW9uLCBib29sIHNob3Vs
ZENsYW1wVG9Ob25OZWdhdGl2ZSkKICAgICA6IENTU1ZhbHVlKENhbGN1bGF0aW9uQ2xhc3MpCiAg
ICAgLCBtX2V4cHJlc3Npb24oV1RGOjptb3ZlKGV4cHJlc3Npb24pKQogICAgICwgbV9zaG91bGRD
bGFtcFRvTm9uTmVnYXRpdmUoc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlKQogewogfQogCi1pbmxp
bmUgUGFzc1JlZjxDYWxjdWxhdGlvblZhbHVlPiBDU1NDYWxjVmFsdWU6OmNyZWF0ZUNhbGN1bGF0
aW9uVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEp
IGNvbnN0CitpbmxpbmUgUmVmPENhbGN1bGF0aW9uVmFsdWU+IENTU0NhbGNWYWx1ZTo6Y3JlYXRl
Q2FsY3VsYXRpb25WYWx1ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJz
aW9uRGF0YSkgY29uc3QKIHsKICAgICByZXR1cm4gQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKG1f
ZXhwcmVzc2lvbi0+Y3JlYXRlQ2FsY0V4cHJlc3Npb24oY29udmVyc2lvbkRhdGEpLAogICAgICAg
ICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZSA/IENhbGN1bGF0aW9uUmFuZ2VOb25OZWdhdGl2
ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaApp
bmRleCAzMmVlYzZkLi41MzM3ODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2FudmFzVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaApA
QCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgQ1NTQ2FudmFzVmFsdWUg
OiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWY8Q1NTQ2FudmFzVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTQ2FudmFzVmFsdWUobmFtZSkpOyB9CisgICAgc3RhdGljIFJlZjxD
U1NDYW52YXNWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NDYW52YXNWYWx1ZShuYW1lKSk7IH0KICAgICB+Q1NTQ2FudmFzVmFsdWUoKTsK
IAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGZlYWMxNzkuLmU3
OWQ3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgc3RhdGljIENTU1ZhbHVlSUQgdmFsdWVG
b3JSZXBlYXRSdWxlKGludCBydWxlKQogICAgIH0KIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IHZhbHVlRm9ySW1hZ2VTbGljZVNpZGUoY29uc3QgTGVuZ3RoJiBsZW5ndGgp
CitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvckltYWdlU2xpY2VTaWRlKGNv
bnN0IExlbmd0aCYgbGVuZ3RoKQogewogICAgIC8vIFRoZXNlIHZhbHVlcyBjYW4gYmUgcGVyY2Vu
dGFnZXMsIG51bWJlcnMsIG9yIHdoaWxlIGFuIGFuaW1hdGlvbiBvZiBtaXhlZCB0eXBlcyBpcyBp
biBwcm9ncmVzcywKICAgICAvLyBhIGNhbGN1bGF0aW9uIHRoYXQgY29tYmluZXMgYSBwZXJjZW50
YWdlIGFuZCBhIG51bWJlci4KQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JJbWFnZVNsaWNlU2lkZShjb25zdCBMZW5ndGgmIGxlbmd0
aCkKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoMCwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VTbGljZShjb25zdCBOaW5lUGllY2VJbWFn
ZSYgaW1hZ2UpCitzdGF0aWMgUmVmPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4gdmFsdWVGb3JO
aW5lUGllY2VJbWFnZVNsaWNlKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKIHsKICAgICBh
dXRvJiBzbGljZXMgPSBpbWFnZS5pbWFnZVNsaWNlcygpOwogCkBAIC01MjMsNyArNTIzLDcgQEAg
c3RhdGljIFBhc3NSZWY8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVj
ZUltYWdlU2xpY2UoY29uc3QgTmluZVAKICAgICByZXR1cm4gQ1NTQm9yZGVySW1hZ2VTbGljZVZh
bHVlOjpjcmVhdGUoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUocXVhZC5yZWxlYXNlKCkpLCBp
bWFnZS5maWxsKCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
dWVGb3JOaW5lUGllY2VJbWFnZVF1YWQoY29uc3QgTGVuZ3RoQm94JiBib3gpCitzdGF0aWMgUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUXVhZChjb25zdCBMZW5n
dGhCb3gmIGJveCkKIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvcDsKICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJpZ2h0OwpAQCAtNTc0LDcgKzU3NCw3IEBAIHN0YXRp
YyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUXVhZChj
b25zdCBMZW5ndGhCb3gmIGJvCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVl
KHF1YWQucmVsZWFzZSgpKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9y
TmluZVBpZWNlSW1hZ2VSZXBlYXQoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQorc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVJlcGVhdChjb25zdCBOaW5lUGll
Y2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBob3Jpem9u
dGFsUmVwZWF0OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmVydGljYWxSZXBlYXQ7
CkBAIC01ODcsNyArNTg3LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmlu
ZVBpZWNlSW1hZ2VSZXBlYXQoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWcKICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSZXBlYXQu
cmVsZWFzZSgpLCB2ZXJ0aWNhbFJlcGVhdC5yZWxlYXNlKCkpKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2Um
IGltYWdlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZShjb25z
dCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgaWYgKCFpbWFnZS5oYXNJbWFnZSgpKQog
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlTm9uZSk7CkBAIC02MTIsMjQgKzYxMiwyNCBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4g
dmFsdWVGb3JOaW5lUGllY2VJbWFnZShjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCiAgICAg
cmV0dXJuIGNyZWF0ZUJvcmRlckltYWdlVmFsdWUoaW1hZ2VWYWx1ZS5yZWxlYXNlKCksIGltYWdl
U2xpY2VzLnJlbGVhc2UoKSwgYm9yZGVyU2xpY2VzLnJlbGVhc2UoKSwgb3V0c2V0LnJlbGVhc2Uo
KSwgcmVwZWF0LnJlbGVhc2UoKSk7CiB9CiAKLWlubGluZSBzdGF0aWMgUGFzc1JlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShkb3VibGUgdmFsdWUsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkKK2lubGluZSBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGRvdWJsZSB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlKQogewogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShhZGp1c3RGbG9h
dEZvckFic29sdXRlWm9vbSh2YWx1ZSwgc3R5bGUpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KTsKIH0KIAotaW5saW5lIHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB6b29tQWRq
dXN0ZWROdW1iZXJWYWx1ZShkb3VibGUgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkK
K2lubGluZSBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB6b29tQWRqdXN0ZWROdW1iZXJW
YWx1ZShkb3VibGUgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICByZXR1
cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUodmFsdWUgLyBzdHlsZS0+ZWZmZWN0aXZlWm9v
bSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
PENTU1ZhbHVlPiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYg
bGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKGxlbmd0aC5pc0ZpeGVkKCkpCiAgICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGxlbmd0aC52YWx1ZSgpLCBzdHlsZSk7
CiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGxlbmd0aCwgc3R5bGUpOwog
fQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JSZWZsZWN0aW9uKGNvbnN0IFN0
eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3Rh
dGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JSZWZsZWN0aW9uKGNvbnN0IFN0eWxlUmVmbGVjdGlv
biogcmVmbGVjdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmICghcmVm
bGVjdGlvbikKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZU5vbmUpOwpAQCAtNjU5LDcgKzY1OSw3IEBAIHN0YXRpYyBQYXNzUmVmPENT
U1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24oY29uc3QgU3R5bGVSZWZsZWN0aW9uKiByZWZsZWN0
aW9uLCBjCiAgICAgcmV0dXJuIENTU1JlZmxlY3RWYWx1ZTo6Y3JlYXRlKGRpcmVjdGlvbi5yZWxl
YXNlKCksIG9mZnNldC5yZWxlYXNlKCksIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UocmVmbGVjdGlv
bi0+bWFzaygpKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlUG9z
aXRpb25MaXN0Rm9yTGF5ZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBGaWxsTGF5
ZXIqIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVl
TGlzdD4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
LCBjb25zdCBGaWxsTGF5ZXIqIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAg
ICAgYXV0byBwb3NpdGlvbkxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CiAgICAgaWYgKGxheWVyLT5pc0JhY2tncm91bmRPcmlnaW5TZXQoKSkgewpAQCAtNzIzLDcg
KzcyMyw3IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihSCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZUNvbG9yVmFsdWUoY29sb3IucmdiKCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gcGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUoTGVuZ3RoIGxl
bmd0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gcGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUoTGVuZ3RoIGxlbmd0aCwgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChsZW5ndGguaXNQZXJjZW50Tm90Q2FsY3Vs
YXRlZCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUobGVuZ3Ro
LnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKQEAgLTczMSw3
ICs3MzEsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gcGVyY2VudGFnZU9y
Wm9vbUFkanVzdGVkVmFsdWUoTGVuZ3RoIGxlbmd0aCwgYwogICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgMCksIHN0eWxlKTsKIH0KIAotc3Rh
dGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExl
bmd0aCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5ndGgsIGNvbnN0
IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAobGVuZ3RoLmlzQXV0bygpKQogICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0
byk7CkBAIC03MzksNyArNzM5LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+
IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5ndGgsIGNvbnN0IFIKICAgICByZXR1
cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2YWx1ZUZvckxlbmd0aChsZW5ndGgsIDApLCBzdHls
ZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzQ29y
bmVyVmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVl
cyhjb25zdCBMZW5ndGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsK
ICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAg
ICAgbGlzdC5nZXQoKS5hcHBlbmQocGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUocmFkaXVz
LndpZHRoKCksIHN0eWxlKSk7CkBAIC03NDcsNyArNzQ3LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NT
VmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoY29uc3QgTGVuZ3RoU2l6ZSYg
cmFkaXUKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGdl
dEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gZ2V0Qm9yZGVyUmFkaXVz
Q29ybmVyVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUpCiB7CiAgICAgaWYgKHJhZGl1cy53aWR0aCgpID09IHJhZGl1cy5oZWlnaHQoKSkKICAg
ICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVlKHJhZGl1cy53aWR0aCgp
LCBzdHlsZSk7CkBAIC03NTUsNyArNzU1LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGdl
dEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywgY28KICAg
ICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHJhZGl1cywgc3R5bGUpOwogfQog
Ci1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGdldEJvcmRlclJhZGl1c1Nob3J0aGFuZFZh
bHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBn
ZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7
CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwog
ICAgIGJvb2wgc2hvd0hvcml6b250YWxCb3R0b21MZWZ0ID0gc3R5bGUtPmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCkud2lkdGgoKSAhPSBzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLndpZHRo
KCk7CkBAIC04MDYsNyArODA2LDcgQEAgc3RhdGljIExheW91dFJlY3Qgc2l6aW5nQm94KFJlbmRl
ck9iamVjdCYgcmVuZGVyZXIpCiAgICAgcmV0dXJuIGJveC5zdHlsZSgpLmJveFNpemluZygpID09
IEJPUkRFUl9CT1ggPyBib3guYm9yZGVyQm94UmVjdCgpIDogYm94LmNvbXB1dGVkQ1NTQ29udGVu
dEJveFJlY3QoKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+
IG1hdHJpeFRyYW5zZm9ybVZhbHVlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8V2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU+IG1hdHJpeFRyYW5zZm9ybVZhbHVlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBSZWZQdHI8V2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU+IHRyYW5zZm9ybVZhbHVlOwogICAgIGlmICh0cmFuc2Zvcm0u
aXNBZmZpbmUoKSkgewpAQCAtODQ1LDcgKzg0NSw3IEBAIHN0YXRpYyBQYXNzUmVmPFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlPiBtYXRyaXhUcmFuc2Zvcm1WYWx1ZShjb25zdCBUcmFuc2Zvcm1hdGlv
CiAgICAgcmV0dXJuIHRyYW5zZm9ybVZhbHVlLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLXN0YXRp
YyBQYXNzUmVmPENTU1ZhbHVlPiBjb21wdXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBjb21w
dXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUpCiB7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmhhc1RyYW5zZm9ybSgp
KQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlTm9uZSk7CkBAIC04NjQsMTcgKzg2NCwxNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1
ZT4gY29tcHV0ZWRUcmFuc2Zvcm0oUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVy
UwogICAgIHJldHVybiBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gYWRqdXN0TGVuZ3RoRm9yWm9vbShkb3VibGUgbGVuZ3RoLCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHls
ZSBhZGp1c3QpCitzdGF0aWMgaW5saW5lIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYWRqdXN0TGVu
Z3RoRm9yWm9vbShkb3VibGUgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIEFkanVz
dFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSBhZGp1c3QpCiB7CiAgICAgcmV0dXJuIGFkanVz
dCA9PSBBZGp1c3RQaXhlbFZhbHVlcyA/IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobGVuZ3RoLCBz
dHlsZSkgOiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShsZW5ndGgsIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUFgpOwogfQogCi1zdGF0aWMgaW5saW5lIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGFkanVzdExlbmd0aEZvclpvb20oY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlIGFkanVzdCkK
K3N0YXRpYyBpbmxpbmUgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBhZGp1c3RMZW5ndGhGb3Jab29t
KGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIEFkanVzdFBp
eGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSBhZGp1c3QpCiB7CiAgICAgcmV0dXJuIGFkanVzdCA9
PSBBZGp1c3RQaXhlbFZhbHVlcyA/IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobGVuZ3RoLnZhbHVl
KCksIHN0eWxlKSA6IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGxlbmd0aCk7CiB9CiAKLVBh
c3NSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yU2hhZG93KGNv
bnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSBhZGp1
c3QpCitSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yU2hhZG93
KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSBh
ZGp1c3QpCiB7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wo
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKQEAgLTg5Miw3ICs4OTIsNyBA
QCBQYXNzUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclNoYWRv
dyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkbwogICAgIHJldHVybiBXVEY6Om1vdmUobGlzdCk7CiB9
CiAKLVBhc3NSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmls
dGVyKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVyT3BlcmF0aW9ucywgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlIGFkanVzdCkK
K1JlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVy
YXRpb25zLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgYWRqdXN0KQogewogICAg
IGlmIChmaWx0ZXJPcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsK
QEAgLTk4NCw3ICs5ODQsNyBAQCBQYXNzUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5kZXJTdHlsZSogc3R5bAogfQogCiAjaWYgRU5B
QkxFKENTU19HUklEX0xBWU9VVCkKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBzcGVjaWZpZWRW
YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgR3JpZExlbmd0aCYgdHJhY2tCcmVhZHRoLCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBzcGVjaWZpZWRW
YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgR3JpZExlbmd0aCYgdHJhY2tCcmVhZHRoLCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKCF0cmFja0JyZWFkdGguaXNMZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHRyYWNrQnJl
YWR0aC5mbGV4KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRlIpOwpAQCAtOTk1LDcgKzk5NSw3
IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0Jy
ZWFkdGgoY29uc3QgR3JpZExlbmd0aCYgdHJhCiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVs
VmFsdWVGb3JMZW5ndGgodHJhY2tCcmVhZHRoTGVuZ3RoLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBQ
YXNzUmVmPENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUoY29uc3QgR3Jp
ZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMg
UmVmPENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUoY29uc3QgR3JpZFRy
YWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgc3dp
dGNoICh0cmFja1NpemUudHlwZSgpKSB7CiAgICAgY2FzZSBMZW5ndGhUcmFja1NpemluZzoKQEAg
LTEwMjEsNyArMTAyMSw3IEBAIHN0YXRpYyB2b2lkIGFkZFZhbHVlc0Zvck5hbWVkR3JpZExpbmVz
QXRJbmRleChjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yCiAgICAgbGlzdC5hcHBl
bmQobGluZU5hbWVzLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NW
YWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkK
K3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFj
a1NpemVzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzdHlsZS0+Z3JpZENvbHVtbnMoKSA6
IHN0eWxlLT5ncmlkUm93cygpOwogICAgIGNvbnN0IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcCYg
b3JkZXJlZE5hbWVkR3JpZExpbmVzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzdHlsZS0+
b3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBzdHlsZS0+b3JkZXJlZE5hbWVkR3JpZFJv
d0xpbmVzKCk7CkBAIC0xMDY0LDcgKzEwNjQsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4g
dmFsdWVGb3JHcmlkVHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpbwog
ICAgIHJldHVybiBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVl
PiB2YWx1ZUZvckdyaWRQb3NpdGlvbihjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uKQorc3Rh
dGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9u
JiBwb3NpdGlvbikKIHsKICAgICBpZiAocG9zaXRpb24uaXNBdXRvKCkpCiAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKQEAg
LTEwODUsNyArMTA4NSw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRQ
b3NpdGlvbihjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uKQogfQogI2VuZGlmCiAKLXN0YXRp
YyBQYXNzUmVmPENTU1ZhbHVlPiBjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShjb25zdCBB
bmltYXRpb24mIGFuaW1hdGlvbikKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRyYW5zaXRp
b25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewogICAgIGlmIChh
bmltYXRpb24uYW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbjo6QW5pbWF0ZU5vbmUpCiAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVO
b25lKTsKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBjcmVh
dGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvCiAgICAg
cmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGdldFByb3BlcnR5TmFtZVN0cmluZyhh
bmltYXRpb24ucHJvcGVydHkoKSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKIH0K
IAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRUcmFuc2l0aW9uUHJvcGVydHlWYWx1
ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0
PiBnZXRUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlz
dCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CkBAIC0xMTA3LDcgKzExMDcsNyBAQCBzdGF0aWMgUGFz
c1JlZjxDU1NWYWx1ZUxpc3Q+IGdldFRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1h
dGlvbkxpc3QqIGFuaQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIAotc3RhdGljIFBh
c3NSZWY8Q1NTVmFsdWVMaXN0PiBzY3JvbGxTbmFwRGVzdGluYXRpb24oUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBMZW5ndGhTaXplJiBkZXN0aW5hdGlvbikKK3N0YXRpYyBSZWY8Q1NTVmFsdWVM
aXN0PiBzY3JvbGxTbmFwRGVzdGluYXRpb24oUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBMZW5n
dGhTaXplJiBkZXN0aW5hdGlvbikKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgbGlzdC5nZXQoKS5hcHBlbmQocGVyY2VudGFnZU9y
Wm9vbUFkanVzdGVkVmFsdWUoZGVzdGluYXRpb24ud2lkdGgoKSwgJnN0eWxlKSk7CkBAIC0xMTE1
LDcgKzExMTUsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IHNjcm9sbFNuYXBEZXN0
aW5hdGlvbihSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExlbgogICAgIHJldHVybiBsaXN0Owog
fQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gc2Nyb2xsU25hcFBvaW50cyhSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IFNjcm9sbFNuYXBQb2ludHMmIHBvaW50cykKK3N0YXRpYyBSZWY8Q1NT
VmFsdWU+IHNjcm9sbFNuYXBQb2ludHMoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBTY3JvbGxT
bmFwUG9pbnRzJiBwb2ludHMpCiB7CiAgICAgaWYgKHBvaW50cy51c2VzRWxlbWVudHMpCiAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVF
bGVtZW50cyk7CkBAIC0xMTI3LDcgKzExMjcsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4g
c2Nyb2xsU25hcFBvaW50cyhSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFNjcm9sbFNuYXBQbwog
ICAgIHJldHVybiBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVl
PiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBWZWN0b3I8
TGVuZ3RoU2l6ZT4mIGNvb3JkaW5hdGVzKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gc2Nyb2xsU25h
cENvb3JkaW5hdGVzKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgVmVjdG9yPExlbmd0aFNpemU+
JiBjb29yZGluYXRlcykKIHsKICAgICBpZiAoY29vcmRpbmF0ZXMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9u
ZSk7CkBAIC0xMTQ2LDcgKzExNDYsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gc2Nyb2xs
U25hcENvb3JkaW5hdGVzKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgVmVjdG9yPAogCiAjZW5k
aWYKIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXREZWxheVZhbHVlKGNvbnN0IEFu
aW1hdGlvbkxpc3QqIGFuaW1MaXN0KQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldERlbGF5
VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCiB7CiAgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGlmIChhbmltTGlzdCkg
ewpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRE
ZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQogICAgIHJldHVybiBsaXN0
OwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGdldER1cmF0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0
RHVyYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFu
aW1MaXN0KSB7CkBAIC0xMTcyLDcgKzExNzIsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxp
c3Q+IGdldER1cmF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCiAgICAg
cmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdG
dW5jdGlvblZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKK3N0YXRp
YyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgVGltaW5nRnVu
Y3Rpb24qIHRpbWluZ0Z1bmN0aW9uKQogewogICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24tPnR5
cGUoKSkgewogICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OkN1YmljQmV6aWVyRnVuY3Rpb246IHsK
QEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1p
bmdGdW5jdGlvblZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGCiAgICAgfQogfQog
Ci1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0
VGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKIHsKICAg
ICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAg
aWYgKGFuaW1MaXN0KSB7CkBAIC0xMjIwLDcgKzEyMjAsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NW
YWx1ZUxpc3Q+IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5p
bUxpcwogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gY3Jl
YXRlTGluZUJveENvbnRhaW5WYWx1ZSh1bnNpZ25lZCBsaW5lQm94Q29udGFpbikKK3N0YXRpYyBS
ZWY8Q1NTVmFsdWU+IGNyZWF0ZUxpbmVCb3hDb250YWluVmFsdWUodW5zaWduZWQgbGluZUJveENv
bnRhaW4pCiB7CiAgICAgaWYgKCFsaW5lQm94Q29udGFpbikKICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwpAQCAtMTMzNiwx
NCArMTMzNiwxNCBAQCBzdGF0aWMgQ1NTVmFsdWVJRCBpZGVudGlmaWVyRm9yRmFtaWx5KGNvbnN0
IEF0b21pY1N0cmluZyYgZmFtaWx5KQogICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7CiB9CiAK
LXN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvckZhbWlseShjb25zdCBB
dG9taWNTdHJpbmcmIGZhbWlseSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVl
Rm9yRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQogewogICAgIGlmIChDU1NWYWx1
ZUlEIGZhbWlseUlkZW50aWZpZXIgPSBpZGVudGlmaWVyRm9yRmFtaWx5KGZhbWlseSkpCiAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoZmFtaWx5SWRl
bnRpZmllcik7CiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGZhbWlseS5z
dHJpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogfQogCi1zdGF0aWMgUGFz
c1JlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoaW50IHRl
eHREZWNvcmF0aW9uKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25G
bGFnc1RvQ1NTVmFsdWUoaW50IHRleHREZWNvcmF0aW9uKQogewogICAgIC8vIEJsaW5rIHZhbHVl
IGlzIGlnbm9yZWQuCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKQEAgLTEzNjMsNyArMTM2Myw3IEBAIHN0YXRpYyBQ
YXNzUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShpbnQg
dGV4dERlY29yYXRpb24pCiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZU5vbk51bGwoKTsKIH0KIAot
c3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1Rv
Q1NTVmFsdWUoVGV4dERlY29yYXRpb25TdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlKQorc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25TdHlsZUZsYWdzVG9DU1NWYWx1ZShU
ZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUpCiB7CiAgICAgc3dpdGNoICh0
ZXh0RGVjb3JhdGlvblN0eWxlKSB7CiAgICAgY2FzZSBUZXh0RGVjb3JhdGlvblN0eWxlU29saWQ6
CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4
dERlY29yYXRpb25TdHlsZUZsYWdzVG9DU1NWYWx1ZShUZXh0RGVjb3JhdGlvbgogICAgIHJldHVy
biBjc3NWYWx1ZVBvb2woKS5jcmVhdGVFeHBsaWNpdEluaXRpYWxWYWx1ZSgpOwogfQogCi1zdGF0
aWMgUGFzc1JlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25Ta2lwRmxhZ3NUb0NTU1Zh
bHVlKFRleHREZWNvcmF0aW9uU2tpcCB0ZXh0RGVjb3JhdGlvblNraXApCitzdGF0aWMgUmVmPENT
U1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvblNraXBGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29y
YXRpb25Ta2lwIHRleHREZWNvcmF0aW9uU2tpcCkKIHsKICAgICBzd2l0Y2ggKHRleHREZWNvcmF0
aW9uU2tpcCkgewogICAgIGNhc2UgVGV4dERlY29yYXRpb25Ta2lwQXV0bzoKQEAgLTEzOTksNyAr
MTM5OSw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvblNr
aXBGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29yYXRpb25TCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENT
U1ZhbHVlPiByZW5kZXJFbXBoYXNpc1Bvc2l0aW9uRmxhZ3NUb0NTU1ZhbHVlKFRleHRFbXBoYXNp
c1Bvc2l0aW9uIHRleHRFbXBoYXNpc1Bvc2l0aW9uKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gcmVu
ZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShUZXh0RW1waGFzaXNQb3NpdGlvbiB0
ZXh0RW1waGFzaXNQb3NpdGlvbikKIHsKICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9zaXRp
b24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIpICYmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAm
IFRleHRFbXBoYXNpc1Bvc2l0aW9uVW5kZXIpKSk7CiAgICAgQVNTRVJUKCEoKHRleHRFbXBoYXNp
c1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRpb25MZWZ0KSAmJiAodGV4dEVtcGhhc2lzUG9z
aXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0KSkpOwpAQCAtMTQxOCw3ICsxNDE4LDcg
QEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhhc2lzUG9zaXRpb25GbGFnc1Rv
Q1NTVmFsdWUoVGV4dEVtcGhhc2lzUG9zaXQKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9uTnVs
bCgpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gZmlsbFJlcGVhdFRvQ1NTVmFsdWUo
RUZpbGxSZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeVJlcGVhdCkKK3N0YXRpYyBSZWY8Q1NT
VmFsdWU+IGZpbGxSZXBlYXRUb0NTU1ZhbHVlKEVGaWxsUmVwZWF0IHhSZXBlYXQsIEVGaWxsUmVw
ZWF0IHlSZXBlYXQpCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBpZiBi
b3RoIHZhbHVlcyBhcmUgZXF1YWwsIGp1c3QgcmV0dXJuIG9uZSBvZiB0aGVtLiBBbmQKICAgICAv
LyBpZiB0aGUgdHdvIHZhbHVlcyBhcmUgZXF1aXZhbGVudCB0byByZXBlYXQteCBvciByZXBlYXQt
eSwganVzdCByZXR1cm4gdGhlIHNob3J0aGFuZC4KQEAgLTE0MzUsNyArMTQzNSw3IEBAIHN0YXRp
YyBQYXNzUmVmPENTU1ZhbHVlPiBmaWxsUmVwZWF0VG9DU1NWYWx1ZShFRmlsbFJlcGVhdCB4UmVw
ZWF0LCBFRmlsbFJlcGVhdCB5CiAgICAgcmV0dXJuIFdURjo6bW92ZShsaXN0KTsKIH0KIAotc3Rh
dGljIFBhc3NSZWY8Q1NTVmFsdWU+IGZpbGxTb3VyY2VUeXBlVG9DU1NWYWx1ZShFTWFza1NvdXJj
ZVR5cGUgdHlwZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZpbGxTb3VyY2VUeXBlVG9DU1NWYWx1
ZShFTWFza1NvdXJjZVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNl
IE1hc2tBbHBoYToKQEAgLTE0NDYsNyArMTQ0Niw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVl
PiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUoRU1hc2tTb3VyY2VUeXBlIHR5cGUpCiAgICAgfQog
fQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gZmlsbFNpemVUb0NTU1ZhbHVlKGNvbnN0IEZp
bGxTaXplJiBmaWxsU2l6ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxD
U1NWYWx1ZT4gZmlsbFNpemVUb0NTU1ZhbHVlKGNvbnN0IEZpbGxTaXplJiBmaWxsU2l6ZSwgY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChmaWxsU2l6ZS50eXBlID09IENvbnRh
aW4pCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVDb250YWluKTsKQEAgLTE0NjMsMTIgKzE0NjMsMTIgQEAgc3RhdGljIFBhc3NSZWY8
Q1NTVmFsdWU+IGZpbGxTaXplVG9DU1NWYWx1ZShjb25zdCBGaWxsU2l6ZSYgZmlsbFNpemUsIGNv
bnN0IFJlbmQKICAgICByZXR1cm4gV1RGOjptb3ZlKGxpc3QpOwogfQogCi1zdGF0aWMgUGFzc1Jl
ZjxDU1NWYWx1ZT4gYWx0VGV4dFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQor
c3RhdGljIFJlZjxDU1NWYWx1ZT4gYWx0VGV4dFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUq
IHN0eWxlKQogewogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+
Y29udGVudEFsdFRleHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogfQogICAg
IAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBjb250ZW50VG9DU1NWYWx1ZShjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NT
VmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBmb3IgKGNvbnN0IENvbnRlbnRE
YXRhKiBjb250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29u
dGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CkBAIC0xNTA4LDcgKzE1MDgsNyBAQCBz
dGF0aWMgdm9pZCBsb2dVbmltcGxlbWVudGVkUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQpCiAgICAgTE9HX0VSUk9SKCJXZWJLaXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBnZXRD
b21wdXRlZFN0eWxlIGZvciAnJXMnLiIsIGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eUlEKSk7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZm9udEZhbWlseUZyb21TdHlsZShSZW5k
ZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZm9udEZhbWlseUZyb21T
dHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
dHlsZS0+Zm9udCgpLmZhbWlseUNvdW50KCk7ICsraSkKQEAgLTE1MTYsNyArMTUxNiw3IEBAIHN0
YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZm9udEZhbWlseUZyb21TdHlsZShSZW5kZXJTdHls
ZSogc3R5bGUpCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiBsaW5lSGVpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRp
YyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpbmVIZWlnaHRGcm9tU3R5bGUoUmVuZGVyU3R5bGUq
IHN0eWxlKQogewogICAgIExlbmd0aCBsZW5ndGggPSBzdHlsZS0+bGluZUhlaWdodCgpOwogICAg
IGlmIChsZW5ndGguaXNOZWdhdGl2ZSgpKQpAQCAtMTUzMSwyNiArMTUzMSwyNiBAQCBzdGF0aWMg
UGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZUhlaWdodEZyb21TdHlsZShSZW5kZXJTdHls
ZSogc3R5bGUpCiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoZmxvYXRWYWx1ZUZv
ckxlbmd0aChsZW5ndGgsIDApLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiBmb250U2l6ZUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U2l6ZUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5
bGUpCiB7CiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPmZvbnREZXNj
cmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN0eWxlKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTdHlsZUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5
bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U3R5bGVGcm9tU3R5bGUoUmVu
ZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRh
bGljKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVJdGFsaWMpOwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gZm9udFZhcmlhbnRGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQorc3Rh
dGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFZhcmlhbnRGcm9tU3R5bGUoUmVuZGVyU3R5
bGUqIHN0eWxlKQogewogICAgIGlmIChzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuc21hbGxDYXBz
KCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVTbWFsbENhcHMpOwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gZm9udFdlaWdodEZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0
aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250V2VpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxl
KiBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQo
KSkgewogICAgIGNhc2UgRm9udFdlaWdodDEwMDoKQEAgLTE2NjYsNyArMTY2Niw3IEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgcmV0dXJuIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IobV9u
b2RlLCBtX2FsbG93VmlzaXRlZFN0eWxlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIpLnByb3Bl
cnR5VmFsdWUocHJvcGVydHlJRCwgdXBkYXRlTGF5b3V0KTsKIH0KIAotUGFzc1JlZjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNvcHlQcm9wZXJ0
aWVzKCkgY29uc3QKK1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmNvcHlQcm9wZXJ0aWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3RvcihtX25vZGUsIG1fYWxsb3dWaXNpdGVkU3R5bGUsIG1fcHNldWRvRWxl
bWVudFNwZWNpZmllcikuY29weVByb3BlcnRpZXMoKTsKIH0KQEAgLTE3MTgsNyArMTcxOCw3IEBA
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY29tcHV0ZVJlbmRlclN0eWxl
Rm9yUHJvcGVydHkoTm9kZSogc3R5bGVkCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLXN0
YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBzaGFwZVByb3BlcnR5VmFsdWUoY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlLCBjb25zdCBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlKQorc3RhdGljIFJlZjxDU1NW
YWx1ZT4gc2hhcGVQcm9wZXJ0eVZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3Qg
U2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSkKIHsKICAgICBpZiAoIXNoYXBlVmFsdWUpCiAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25l
KTsKQEAgLTMyNTYsNyArMzI1Niw3IEBAIGJvb2wgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJv
cGVydHlNYXRjaGVzKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgQ1NTCiAgICAgcmV0
dXJuIGNvbXB1dGVkVmFsdWUgJiYgdmFsdWUgJiYgY29tcHV0ZWRWYWx1ZS0+ZXF1YWxzKCp2YWx1
ZSk7CiB9CiAKLVBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Y29weVByb3BlcnRpZXMoKSBjb25zdAorUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gY29weVByb3BlcnRpZXNJblNldChjb21wdXRlZFByb3BlcnRpZXMsIG51bUNvbXB1
dGVkUHJvcGVydGllcyk7CiB9CkBAIC0zMzA5LDcgKzMzMDksNyBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JH
cmlkU2hvcgogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0lu
U2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorUmVm
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9w
ZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0CiB7CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+IGxpc3Q7CiAgICAgbGlzdC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggZjMzZjhlOS4uM2E0YzFhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaApAQCAt
NTIsMTMgKzUyLDEzIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwcm9wZXJ0
eVZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgPSBVcGRhdGVMYXlvdXQpIGNvbnN0
OwogCiAgICAgLy8gSGVscGVyIG1ldGhvZHMgZm9yIEhUTUwgZWRpdGluZy4KLSAgICBQYXNzUmVm
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJv
cGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwotICAgIFBhc3NSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdDsKKyAgICBSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlE
KiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CisgICAgUmVmPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gZ2V0Rm9udFNpemVDU1NWYWx1ZVByZWZlcnJpbmdLZXl3b3JkKCkgY29uc3Q7CiAg
ICAgYm9vbCB1c2VGaXhlZEZvbnREZWZhdWx0U2l6ZSgpIGNvbnN0OwogICAgIGJvb2wgcHJvcGVy
dHlNYXRjaGVzKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVlKikgY29uc3Q7CiAKLSAgICBz
dGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVyU3R5bGUq
LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0
eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMpOworICAgIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVl
Rm9yRmlsdGVyKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYsIEFk
anVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSA9IEFkanVzdFBpeGVsVmFsdWVzKTsKIAog
cHJpdmF0ZToKICAgICAvLyBUaGUgc3R5bGVkIG5vZGUgaXMgZWl0aGVyIHRoZSBub2RlIHBhc3Nl
ZCBpbnRvIGNvbXB1dGVkUHJvcGVydHlWYWx1ZSwgb3IgdGhlCkBAIC03MCw3ICs3MCw3IEBAIHBy
aXZhdGU6CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gc3ZnUHJvcGVydHlWYWx1ZShDU1NQcm9w
ZXJ0eUlELCBFVXBkYXRlTGF5b3V0KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFNWR1BhaW50PiBh
ZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihQYXNzUmVmUHRyPFNWR1BhaW50PiwgUmVuZGVy
U3R5bGUqKSBjb25zdDsKIAotICAgIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclNo
YWRvdyhjb25zdCBTaGFkb3dEYXRhKiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUq
LCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgPSBBZGp1c3RQaXhlbFZhbHVlcyk7
CisgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0
YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlKiwgQWRqdXN0UGl4ZWxWYWx1ZXNG
b3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMpOwogICAgIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihSZW5kZXJTdHlsZSosIGNv
bnN0IENvbG9yJikgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NT
UHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmKSBjb25zdDsKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5SUQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0UHJv
cGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGlt
cG9ydGFudCwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgPSBVcGRhdGVMYXlvdXQpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IDUwNjdlYmMuLmEy
ZmJjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC00Myw3ICs0
Myw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgQ1NTQ3Jvc3NmYWRlVmFsdWUgOiBwdWJsaWMg
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZVN1Ymlt
YWdlT2JzZXJ2ZXJQcm94eTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NDcm9zc2Zh
ZGVWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGZyb21WYWx1ZSwgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gdG9WYWx1ZSkKKyAgICBzdGF0aWMgUmVmPENTU0Nyb3NzZmFkZVZhbHVlPiBj
cmVhdGUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZnJvbVZhbHVlLCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiB0b1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3Jvc3Nm
YWRlVmFsdWUoZnJvbVZhbHVlLCB0b1ZhbHVlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDdhMTJmN2EuLjI0MWY1OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
c3RhdGljIGlubGluZSBTVkdDdXJzb3JFbGVtZW50KiByZXNvdXJjZVJlZmVyZW5jZWRCeUN1cnNv
ckVsZW1lbnQoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1DU1NDdXJz
b3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKFBhc3NSZWY8Q1NTVmFsdWU+IGltYWdl
VmFsdWUsIGJvb2wgaGFzSG90U3BvdCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCitDU1NDdXJz
b3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZh
bHVlLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQogICAgIDogQ1NT
VmFsdWUoQ3Vyc29ySW1hZ2VDbGFzcykKICAgICAsIG1faW1hZ2VWYWx1ZShXVEY6Om1vdmUoaW1h
Z2VWYWx1ZSkpCiAgICAgLCBtX2hhc0hvdFNwb3QoaGFzSG90U3BvdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCmluZGV4IDg2ZGY3YWQuLjYxYTI5YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFz
cyBTVkdFbGVtZW50OwogCiBjbGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVlIDogcHVibGljIENTU1Zh
bHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NDdXJzb3JJbWFnZVZhbHVlPiBj
cmVhdGUoUGFzc1JlZjxDU1NWYWx1ZT4gaW1hZ2VWYWx1ZSwgYm9vbCBoYXNIb3RTcG90LCBjb25z
dCBJbnRQb2ludCYgaG90U3BvdCkKKyAgICBzdGF0aWMgUmVmPENTU0N1cnNvckltYWdlVmFsdWU+
IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgaW1hZ2VWYWx1ZSwgYm9vbCBoYXNIb3RTcG90LCBjb25z
dCBJbnRQb2ludCYgaG90U3BvdCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU0N1cnNvckltYWdlVmFsdWUoV1RGOjptb3ZlKGltYWdlVmFsdWUpLCBoYXNIb3RTcG90LCBo
b3RTcG90KSk7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENT
U0N1cnNvckltYWdlVmFsdWUoUGFzc1JlZjxDU1NWYWx1ZT4gaW1hZ2VWYWx1ZSwgYm9vbCBoYXNI
b3RTcG90LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCk7CisgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZShSZWY8Q1NTVmFsdWU+JiYgaW1hZ2VWYWx1ZSwgYm9vbCBoYXNIb3RTcG90LCBjb25zdCBJbnRQ
b2ludCYgaG90U3BvdCk7CiAKICAgICB2b2lkIGRldGFjaFBlbmRpbmdJbWFnZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAppbmRleCBiZDA1MjRhLi44ZTc3MTYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIENTU0ZpbHRlckltYWdlVmFsdWUgOiBw
dWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiAgICAgZnJpZW5kIGNsYXNzIEZpbHRlclN1
YmltYWdlT2JzZXJ2ZXJQcm94eTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NGaWx0
ZXJJbWFnZVZhbHVlPiBjcmVhdGUoUGFzc1JlZjxDU1NWYWx1ZT4gaW1hZ2VWYWx1ZSwgUGFzc1Jl
ZjxDU1NWYWx1ZT4gZmlsdGVyVmFsdWUpCisgICAgc3RhdGljIFJlZjxDU1NGaWx0ZXJJbWFnZVZh
bHVlPiBjcmVhdGUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIFJlZjxDU1NWYWx1ZT4gZmls
dGVyVmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGaWx0ZXJJ
bWFnZVZhbHVlKFdURjo6bW92ZShpbWFnZVZhbHVlKSwgV1RGOjptb3ZlKGZpbHRlclZhbHVlKSkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1Zh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IDYw
YWM4N2MuLjdhOTgwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUu
aApAQCAtMzksMTEgKzM5LDExIEBAIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKIAogY2xhc3Mg
Q1NTRm9udEZhY2VTcmNWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWY8Q1NTRm9udEZhY2VTcmNWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVz
b3VyY2UpCisgICAgc3RhdGljIFJlZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiByZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENT
U0ZvbnRGYWNlU3JjVmFsdWUocmVzb3VyY2UsIGZhbHNlKSk7CiAgICAgfQotICAgIHN0YXRpYyBQ
YXNzUmVmPENTU0ZvbnRGYWNlU3JjVmFsdWU+IGNyZWF0ZUxvY2FsKGNvbnN0IFN0cmluZyYgcmVz
b3VyY2UpCisgICAgc3RhdGljIFJlZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBjcmVhdGVMb2NhbChj
b25zdCBTdHJpbmcmIHJlc291cmNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTRm9udEZhY2VTcmNWYWx1ZShyZXNvdXJjZSwgdHJ1ZSkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZlYXR1cmVWYWx1ZS5oCmluZGV4IGNmNmMzODEuLjIxNGNiM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGZWF0dXJlVmFsdWUuaApAQCAtMzMsNyArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGZWF0dXJlVmFsdWUgOiBwdWJs
aWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU0ZvbnRGZWF0dXJl
VmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRhZywgaW50IHZhbHVlKQorICAgIHN0YXRpYyBS
ZWY8Q1NTRm9udEZlYXR1cmVWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGFnLCBpbnQgdmFs
dWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGb250RmVhdHVyZVZh
bHVlKHRhZywgdmFsdWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhbHVlLmgKaW5kZXgg
MDBkNzAxZi4uNTIwYTQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250VmFsdWUuaApAQCAtMzIsNyAr
MzIsNyBAQCBjbGFzcyBDU1NWYWx1ZUxpc3Q7CiAKIGNsYXNzIENTU0ZvbnRWYWx1ZSA6IHB1Ymxp
YyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTRm9udFZhbHVlPiBj
cmVhdGUoKQorICAgIHN0YXRpYyBSZWY8Q1NTRm9udFZhbHVlPiBjcmVhdGUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRm9udFZhbHVlKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAppbmRleCA1NTFmNDVlLi5kNTVjZjkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgKQEAgLTM1LDEyICszNSwxMiBAQCBzdHJ1Y3Qg
Q1NTUGFyc2VyRnVuY3Rpb247CiAKIGNsYXNzIENTU0Z1bmN0aW9uVmFsdWUgOiBwdWJsaWMgQ1NT
VmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU0Z1bmN0aW9uVmFsdWU+IGNy
ZWF0ZShDU1NQYXJzZXJGdW5jdGlvbiogZnVuY3Rpb24pCisgICAgc3RhdGljIFJlZjxDU1NGdW5j
dGlvblZhbHVlPiBjcmVhdGUoQ1NTUGFyc2VyRnVuY3Rpb24qIGZ1bmN0aW9uKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRnVuY3Rpb25WYWx1ZShmdW5jdGlvbikpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPENTU0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShTdHJp
bmcgbmFtZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGFyZ3MpCisgICAgc3RhdGljIFJlZjxD
U1NGdW5jdGlvblZhbHVlPiBjcmVhdGUoU3RyaW5nIG5hbWUsIFBhc3NSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBhcmdzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRnVuY3Rp
b25WYWx1ZShuYW1lLCBhcmdzKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmgKaW5kZXggNmFiNzhkYi4uYWQyYjU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJvdGVjdGVkOgogY2xhc3MgQ1NTTGluZWFy
R3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NHcmFkaWVudFZhbHVlIHsKIHB1YmxpYzoKIAotICAg
IHN0YXRpYyBQYXNzUmVmPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IGNyZWF0ZShDU1NHcmFkaWVu
dFJlcGVhdCByZXBlYXQsIENTU0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUgPSBDU1NMaW5lYXJH
cmFkaWVudCkKKyAgICBzdGF0aWMgUmVmPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IGNyZWF0ZShD
U1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIENTU0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUgPSBD
U1NMaW5lYXJHcmFkaWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENT
U0xpbmVhckdyYWRpZW50VmFsdWUocmVwZWF0LCBncmFkaWVudFR5cGUpKTsKICAgICB9CkBAIC0x
NDYsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIC8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEg
Z2l2ZW4gc2l6ZS4KICAgICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5k
ZXJFbGVtZW50JiwgY29uc3QgRmxvYXRTaXplJik7CiAKLSAgICBQYXNzUmVmPENTU0xpbmVhckdy
YWRpZW50VmFsdWU+IGNsb25lKCkgY29uc3QKKyAgICBSZWY8Q1NTTGluZWFyR3JhZGllbnRWYWx1
ZT4gY2xvbmUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
TGluZWFyR3JhZGllbnRWYWx1ZSgqdGhpcykpOwogICAgIH0KQEAgLTE3MCwxMiArMTcwLDEyIEBA
IHByaXZhdGU6CiAKIGNsYXNzIENTU1JhZGlhbEdyYWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTR3Jh
ZGllbnRWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTUmFkaWFsR3JhZGll
bnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBl
IGdyYWRpZW50VHlwZSA9IENTU1JhZGlhbEdyYWRpZW50KQorICAgIHN0YXRpYyBSZWY8Q1NTUmFk
aWFsR3JhZGllbnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3Jh
ZGllbnRUeXBlIGdyYWRpZW50VHlwZSA9IENTU1JhZGlhbEdyYWRpZW50KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXBlYXQsIGdy
YWRpZW50VHlwZSkpOwogICAgIH0KIAotICAgIFBhc3NSZWY8Q1NTUmFkaWFsR3JhZGllbnRWYWx1
ZT4gY2xvbmUoKSBjb25zdAorICAgIFJlZjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBjbG9uZSgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NSYWRpYWxHcmFk
aWVudFZhbHVlKCp0aGlzKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlk
VGVtcGxhdGVBcmVhc1ZhbHVlLmgKaW5kZXggNDk4NGU3Ni4uMWQ5NzUxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oCkBAIC00MSw3ICs0MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1
ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTR3Jp
ZFRlbXBsYXRlQXJlYXNWYWx1ZT4gY3JlYXRlKGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIGdyaWRB
cmVhTWFwLCBzaXplX3Qgcm93Q291bnQsIHNpemVfdCBjb2x1bW5Db3VudCkKKyAgICBzdGF0aWMg
UmVmPENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWU+IGNyZWF0ZShjb25zdCBOYW1lZEdyaWRBcmVh
TWFwJiBncmlkQXJlYU1hcCwgc2l6ZV90IHJvd0NvdW50LCBzaXplX3QgY29sdW1uQ291bnQpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NHcmlkVGVtcGxhdGVBcmVhc1Zh
bHVlKGdyaWRBcmVhTWFwLCByb3dDb3VudCwgY29sdW1uQ291bnQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAppbmRleCA0MGE5OTY1Li4xYjA1MTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFJl
c291cmNlTG9hZGVyT3B0aW9uczsKIGNsYXNzIENTU0ltYWdlU2V0VmFsdWUgOiBwdWJsaWMgQ1NT
VmFsdWVMaXN0IHsKIHB1YmxpYzoKIAotICAgIHN0YXRpYyBQYXNzUmVmPENTU0ltYWdlU2V0VmFs
dWU+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxDU1NJbWFnZVNldFZhbHVlPiBjcmVhdGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTSW1hZ2VTZXRWYWx1ZSgpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAppbmRleCA5YzQyMDhmLi4yMzI1MzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKQEAgLTM1LDggKzM1LDggQEAgc3RydWN0
IFJlc291cmNlTG9hZGVyT3B0aW9uczsKIAogY2xhc3MgQ1NTSW1hZ2VWYWx1ZSA6IHB1YmxpYyBD
U1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTSW1hZ2VWYWx1ZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdXJsKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ltYWdlVmFs
dWUodXJsKSk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiB1cmwsIFN0eWxlSW1hZ2UqIGltYWdlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IENTU0ltYWdlVmFsdWUodXJsLCBpbWFnZSkpOyB9CisgICAgc3RhdGljIFJlZjxDU1NJbWFnZVZh
bHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
SW1hZ2VWYWx1ZSh1cmwpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTSW1hZ2VWYWx1ZT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgdXJsLCBTdHlsZUltYWdlKiBpbWFnZSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NJbWFnZVZhbHVlKHVybCwgaW1hZ2UpKTsgfQogICAgIH5DU1NJbWFnZVZhbHVlKCk7
CiAKICAgICBTdHlsZUNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRl
ciosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5o
ZXJpdGVkVmFsdWUuaAppbmRleCAzMTY3MWJhLi44YTYzNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW5oZXJpdGVkVmFsdWUuaApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENTU0luaGVyaXRlZFZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZjxDU1NJbmhlcml0ZWRWYWx1ZT4gY3JlYXRlKCkKKyAgICBzdGF0
aWMgUmVmPENTU0luaGVyaXRlZFZhbHVlPiBjcmVhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTSW5oZXJpdGVkVmFsdWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbml0aWFsVmFsdWUuaAppbmRleCA5MTE2YzE4Li5hNzExYWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0luaXRpYWxWYWx1ZS5oCkBAIC0yOCwxMSArMjgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDU1NJbml0aWFsVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmPENTU0luaXRpYWxWYWx1ZT4gY3JlYXRlRXhwbGljaXQoKQorICAg
IHN0YXRpYyBSZWY8Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVFeHBsaWNpdCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbml0aWFsVmFsdWUoLyogaW1wbGljaXQgKi8g
ZmFsc2UpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTSW5pdGlhbFZhbHVlPiBjcmVh
dGVJbXBsaWNpdCgpCisgICAgc3RhdGljIFJlZjxDU1NJbml0aWFsVmFsdWU+IGNyZWF0ZUltcGxp
Y2l0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0luaXRpYWxWYWx1
ZSgvKiBpbXBsaWNpdCAqLyB0cnVlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVSdWxlLmNwcAppbmRleCA0MWQ3YjgzLi44MjlmMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
S2V5ZnJhbWVSdWxlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVN0eWxlS2V5ZnJhbWU6OlN0eWxlS2V5ZnJhbWUoUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+
IHByb3BlcnRpZXMpCitTdHlsZUtleWZyYW1lOjpTdHlsZUtleWZyYW1lKFJlZjxTdHlsZVByb3Bl
cnRpZXM+JiYgcHJvcGVydGllcykKICAgICA6IG1fcHJvcGVydGllcyhXVEY6Om1vdmUocHJvcGVy
dGllcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVS
dWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmgKaW5kZXggYTczZTFi
NC4uNDMwM2MwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuaApAQCAtMzgsNyAr
MzgsNyBAQCBjbGFzcyBDU1NLZXlmcmFtZXNSdWxlOwogY2xhc3MgU3R5bGVLZXlmcmFtZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFN0eWxlS2V5ZnJhbWU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBjcmVh
dGUoUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3R5bGVLZXlmcmFtZT4gY3JlYXRlKFJlZjxTdHlsZVByb3BlcnRpZXM+JiYgcHJvcGVy
dGllcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVLZXlmcmFtZShX
VEY6Om1vdmUocHJvcGVydGllcykpKTsKICAgICB9CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFN0
eWxlS2V5ZnJhbWUoUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+KTsKKyAgICBleHBsaWNpdCBTdHls
ZUtleWZyYW1lKFJlZjxTdHlsZVByb3BlcnRpZXM+JiYpOwogICAgIAogICAgIHN0YXRpYyB2b2lk
IHBhcnNlS2V5U3RyaW5nKGNvbnN0IFN0cmluZyYsIFZlY3Rvcjxkb3VibGU+JiBrZXlzKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oCmluZGV4IDc4ZjllNzkuLmJkNzY2
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuaApAQCAtNDAsNyArNDAsNyBA
QCBjbGFzcyBDU1NLZXlmcmFtZVJ1bGU7CiAKIGNsYXNzIFN0eWxlUnVsZUtleWZyYW1lcyA6IHB1
YmxpYyBTdHlsZVJ1bGVCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1
bGVLZXlmcmFtZXM+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlS2V5
ZnJhbWVzKCkpOyB9CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlS2V5ZnJhbWVzKCkpOyB9CiAgICAgCiAg
ICAgflN0eWxlUnVsZUtleWZyYW1lcygpOwogICAgIApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgaW50IGZpbmRLZXlmcmFtZUluZGV4KGNvbnN0IFN0cmluZyYga2V5KSBjb25z
dDsKIAotICAgIFBhc3NSZWY8U3R5bGVSdWxlS2V5ZnJhbWVzPiBjb3B5KCkgY29uc3QgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVLZXlmcmFtZXMoKnRoaXMpKTsgfQorICAgIFJlZjxT
dHlsZVJ1bGVLZXlmcmFtZXM+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlUnVsZUtleWZyYW1lcygqdGhpcykpOyB9CiAKIHByaXZhdGU6CiAgICAgU3R5bGVSdWxlS2V5
ZnJhbWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRh
aW5WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaApp
bmRleCBkNzY0M2ZhLi4xNjAxNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TGluZUJveENvbnRhaW5WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94
Q29udGFpblZhbHVlLmgKQEAgLTQxLDcgKzQxLDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBMaW5lQm94
Q29udGFpbjsKIC8vIFVzZWQgZm9yIHRleHQtQ1NTTGluZUJveENvbnRhaW4gYW5kIGJveC1DU1NM
aW5lQm94Q29udGFpbgogY2xhc3MgQ1NTTGluZUJveENvbnRhaW5WYWx1ZSA6IHB1YmxpYyBDU1NW
YWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTTGluZUJveENvbnRhaW5WYWx1
ZT4gY3JlYXRlKExpbmVCb3hDb250YWluIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8Q1NTTGluZUJv
eENvbnRhaW5WYWx1ZT4gY3JlYXRlKExpbmVCb3hDb250YWluIHZhbHVlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTGluZUJveENvbnRhaW5WYWx1ZSh2YWx1ZSkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggOTE2NGViYi4uYmQzNjE4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgYm9vbCBo
YXNQcmVmaXgoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IGNoYXIq
IHByZWZpeCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gZmlyc3QsIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlY29uZCkKK3N0
YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBmaXJzdCwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gc2Vjb25kKQogewogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShQ
YWlyOjpjcmVhdGUoZmlyc3QsIHNlY29uZCkpOwogfQpAQCAtMTM5MywxNCArMTM5MywxNCBAQCB2
b2lkIENTU1BhcnNlcjo6cGFyc2VTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTU2Vs
ZWN0b3JMaXN0JiBzZWxlY3RvckxpcwogICAgIG1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3Rv
ciA9IG51bGxwdHI7CiB9CiAKLVBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NQ
YXJzZXI6OnBhcnNlSW5saW5lU3R5bGVEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywg
RWxlbWVudCogZWxlbWVudCkKK1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNl
cjo6cGFyc2VJbmxpbmVTdHlsZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBFbGVt
ZW50KiBlbGVtZW50KQogewogICAgIENTU1BhcnNlckNvbnRleHQgY29udGV4dCA9IGVsZW1lbnQt
PmRvY3VtZW50KCkuZWxlbWVudFNoZWV0KCkuY29udGVudHMoKS5wYXJzZXJDb250ZXh0KCk7CiAg
ICAgY29udGV4dC5tb2RlID0gc3RyaWN0VG9DU1NQYXJzZXJNb2RlKGVsZW1lbnQtPmlzSFRNTEVs
ZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSk7CiAgICAgcmV0
dXJuIENTU1BhcnNlcihjb250ZXh0KS5wYXJzZURlY2xhcmF0aW9uKHN0cmluZywgJmVsZW1lbnQt
PmRvY3VtZW50KCkuZWxlbWVudFNoZWV0KCkuY29udGVudHMoKSk7CiB9CiAKLVBhc3NSZWY8SW1t
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpCitS
ZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24o
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hl
ZXQpCiB7CiAgICAgc2V0U3R5bGVTaGVldChjb250ZXh0U3R5bGVTaGVldCk7CiAKQEAgLTE0MTEs
NyArMTQxMSw3IEBAIFBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NQYXJzZXI6
OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHJpCiAgICAgaWYgKG1faGFzRm9udEZh
Y2VPbmx5VmFsdWVzKQogICAgICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKIAotICAg
IFBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBzdHlsZSA9IGNyZWF0ZVN0eWxlUHJv
cGVydGllcygpOworICAgIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IHN0eWxlID0gY3Jl
YXRlU3R5bGVQcm9wZXJ0aWVzKCk7CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgcmV0dXJu
IHN0eWxlOwogfQpAQCAtMTUwNiw3ICsxNTA2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZpbHRl
clByb3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJvcGUK
ICAgICB9CiB9CiAKLVBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NQYXJzZXI6
OmNyZWF0ZVN0eWxlUHJvcGVydGllcygpCitSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBD
U1NQYXJzZXI6OmNyZWF0ZVN0eWxlUHJvcGVydGllcygpCiB7CiAgICAgc3RkOjpiaXRzZXQ8bnVt
Q1NTUHJvcGVydGllcz4gc2VlblByb3BlcnRpZXM7CiAgICAgc2l6ZV90IHVudXNlZEVudHJpZXMg
PSBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOwpAQCAtMTcwNCw3ICsxNzA0LDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnZhbGlkVW5pdChDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIFVuaXRzIHVuaXRmbGFn
cywgQ1NTUGFyc2VyTW9kZQogICAgIHJldHVybiBiOwogfQogCi1pbmxpbmUgUGFzc1JlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoQ1NT
UGFyc2VyVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFy
c2VyOjpjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQog
ewogICAgIGlmIChtX3BhcnNlZENhbGN1bGF0aW9uKSB7CiAgICAgICAgIEFTU0VSVChpc0NhbGN1
bGF0aW9uKHZhbHVlKSk7CkBAIC0xNzI0LDcgKzE3MjQsNyBAQCBpbmxpbmUgUGFzc1JlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoQ1NT
UGFycwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSh2YWx1ZS5mVmFsdWUs
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM+KHZhbHVlLnVuaXQpKTsK
IH0KIAotaW5saW5lIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6Y3JlYXRl
UHJpbWl0aXZlU3RyaW5nVmFsdWUoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpjcmVhdGVQcmltaXRpdmVTdHJpbmdWYWx1ZShD
U1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlLnVuaXQgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19TVFJJTkcgfHwgdmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0lERU5UKTsKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUodmFs
dWUuc3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CkBAIC0zMTI4LDcgKzMx
MjgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENTU1BhcnNlcjo6
YWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWY8Q1NTVmFsdWU+IHJ2
YWwpCit2b2lkIENTU1BhcnNlcjo6YWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWws
IFJlZjxDU1NWYWx1ZT4gcnZhbCkKIHsKICAgICBpZiAoIWx2YWwpIHsKICAgICAgICAgbHZhbCA9
IFdURjo6bW92ZShydmFsKTsKQEAgLTM0MzYsNyArMzQzNiw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUZpbGxTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5
SUQqIHByCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjphZGRBbmltYXRp
b25WYWx1ZShSZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBQYXNzUmVmPENTU1ZhbHVlPiBydmFsKQor
dm9pZCBDU1NQYXJzZXI6OmFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWws
IFJlZjxDU1NWYWx1ZT4gcnZhbCkKIHsKICAgICBpZiAoIWx2YWwpIHsKICAgICAgICAgbHZhbCA9
IFdURjo6bW92ZShydmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCA2NWYwZWNiLi5lMTNj
Mjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlRm9udEZhY2VWYWx1ZShjb25z
dCBBdG9taWNTdHJpbmcmKTsKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJz
ZVZhbGlkUHJpbWl0aXZlKENTU1ZhbHVlSUQgaWRlbnQsIENTU1BhcnNlclZhbHVlJik7CiAgICAg
Ym9vbCBwYXJzZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMqLCBjb25zdCBTdHJp
bmcmLCBQYXNzUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiwgU3R5bGVTaGVldENvbnRlbnRzKiBj
b250ZXh0U3R5bGVTaGVldCk7Ci0gICAgc3RhdGljIFBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBwYXJzZUlubGluZVN0eWxlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiwgRWxlbWVu
dCopOworICAgIHN0YXRpYyBSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwYXJzZUlubGlu
ZVN0eWxlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiwgRWxlbWVudCopOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVF1ZXJ5PiBwYXJzZU1lZGlhUXVlcnkoY29uc3QgU3RyaW5nJik7CiAjaWYg
RU5BQkxFKFBJQ1RVUkVfU0laRVMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXJjZVNpemVMaXN0
PiBwYXJzZVNpemVzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYpOwpAQCAtMTM4LDggKzEzOCw4IEBA
IHB1YmxpYzoKICAgICBib29sIHBhcnNlRmlsbFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElk
LCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQxLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQyLCBSZWZQdHI8
Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwogICAgIGJvb2wgcGFyc2VGaWxsU2hvcnRo
YW5kKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMsIGludCBu
dW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CiAKLSAgICB2b2lkIGFkZEZpbGxWYWx1ZShS
ZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBQYXNzUmVmPENTU1ZhbHVlPiBydmFsKTsKLSAgICB2b2lk
IGFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWY8Q1NTVmFs
dWU+IHJ2YWwpOworICAgIHZvaWQgYWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWws
IFJlZjxDU1NWYWx1ZT4gcnZhbCk7CisgICAgdm9pZCBhZGRBbmltYXRpb25WYWx1ZShSZWZQdHI8
Q1NTVmFsdWU+JiBsdmFsLCBSZWY8Q1NTVmFsdWU+IHJ2YWwpOwogCiAgICAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gcGFyc2VBbmltYXRpb25EZWxheSgpOwogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IHBhcnNlQW5pbWF0aW9uRGlyZWN0aW9uKCk7CkBAIC0zMzIsNyArMzMyLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjbGVhclByb3BlcnRpZXMoKTsKIAotICAgIFBhc3NSZWY8SW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBjcmVhdGVTdHlsZVByb3BlcnRpZXMoKTsKKyAgICBSZWY8SW1tdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGVTdHlsZVByb3BlcnRpZXMoKTsKIAogICAgIENTU1BhcnNl
ckNvbnRleHQgbV9jb250ZXh0OwogCkBAIC00MDQsOCArNDA0LDggQEAgcHVibGljOgogICAgIFBh
c3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlVmlld3BvcnRSdWxlKCk7CiAjZW5kaWYKIAot
ICAgIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1
ZShDU1NQYXJzZXJWYWx1ZSYpOwotICAgIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0
ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKENTU1BhcnNlclZhbHVlJik7CisgICAgUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoQ1NTUGFyc2VyVmFsdWUmKTsK
KyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKENT
U1BhcnNlclZhbHVlJik7CiAKICAgICBzdGF0aWMgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKQEAgLTUwNyw3ICs1MDcsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgcGFyc2VHZW5lcmF0ZWRJbWFnZShDU1NQYXJzZXJWYWx1ZUxpc3Qm
LCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAKICAgICBib29sIHBhcnNlVmFsdWUoTXV0YWJsZVN0eWxl
UHJvcGVydGllcyosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50
LCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKLSAgICBQYXNzUmVmPElt
bXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmLCBT
dHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKKyAgICBSZWY8SW1tdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIFN0eWxlU2hl
ZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpOwogCiAgICAgUGFzc1JlZlB0cjxDU1NCYXNp
Y1NoYXBlPiBwYXJzZUluc2V0Um91bmRlZENvcm5lcnMoUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBl
SW5zZXQ+LCBDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAKaW5kZXggYjdiMzU0Ny4uOWNlMDY5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC05NDUsMTMgKzk0NSwxMyBAQCBQYWlyKiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Z2V0UGFpclZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAg
IHJldHVybiBtX3ZhbHVlLnBhaXI7CiB9CiAKLU5FVkVSX0lOTElORSBQYXNzUmVmPFN0cmluZ0lt
cGw+IENTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJWYWx1ZShjb25zdCBjaGFyKiBzdWZm
aXgsIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCkgY29uc3QKK05FVkVSX0lOTElORSBSZWY8U3RyaW5n
SW1wbD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIqIHN1
ZmZpeCwgdW5zaWduZWQgc3VmZml4TGVuZ3RoKSBjb25zdAogewogICAgIERlY2ltYWxOdW1iZXIg
ZGVjaW1hbChtX3ZhbHVlLm51bSk7CiAKICAgICB1bnNpZ25lZCBidWZmZXJMZW5ndGggPSBkZWNp
bWFsLmJ1ZmZlckxlbmd0aEZvclN0cmluZ0RlY2ltYWwoKSArIHN1ZmZpeExlbmd0aDsKICAgICBM
Q2hhciogYnVmZmVyOwotICAgIFBhc3NSZWY8U3RyaW5nSW1wbD4gc3RyaW5nID0gU3RyaW5nSW1w
bDo6Y3JlYXRlVW5pbml0aWFsaXplZChidWZmZXJMZW5ndGgsIGJ1ZmZlcik7CisgICAgUmVmPFN0
cmluZ0ltcGw+IHN0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVy
TGVuZ3RoLCBidWZmZXIpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZGVjaW1hbC50b1N0cmlu
Z0RlY2ltYWwoYnVmZmVyLCBidWZmZXJMZW5ndGgpOwogCkBAIC05NjIsNyArOTYyLDcgQEAgTkVW
RVJfSU5MSU5FIFBhc3NSZWY8U3RyaW5nSW1wbD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51
bWJlclZhbHVlKGNvbnN0IGNoYXIKIH0KIAogdGVtcGxhdGUgPHVuc2lnbmVkIGNoYXJhY3RlckNv
dW50PgotQUxXQVlTX0lOTElORSBQYXNzUmVmPFN0cmluZ0ltcGw+IENTU1ByaW1pdGl2ZVZhbHVl
Ojpmb3JtYXROdW1iZXJWYWx1ZShjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291
bnRdKSBjb25zdAorQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJD
b3VudF0pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZvcm1hdE51bWJlclZhbHVlKGNoYXJhY3RlcnMs
IGNoYXJhY3RlckNvdW50IC0gMSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oCmluZGV4IGFiNmQ2ZGEuLmVkZDc2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5oCkBAIC0yMjIsMTcgKzIyMiwxNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1ZhbHVl
SUQoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19WQUxVRV9JRDsg
fQogICAgIGJvb2wgaXNGbGV4KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENT
U19GUjsgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlk
ZW50aWZpZXIoQ1NTVmFsdWVJRCB2YWx1ZUlEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHZhbHVlSUQpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2
ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVyKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZShwcm9wZXJ0eUlEKSk7IH0KLSAgICBz
dGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUGFyc2VyT3BlcmF0b3IoaW50
IHBhcnNlck9wZXJhdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KHBhcnNlck9wZXJhdG9yKSk7IH0KKyAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlSUQgdmFsdWVJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZUlEKSk7IH0KKyAgICBzdGF0aWMgUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVyKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZShwcm9wZXJ0eUlEKSk7IH0KKyAg
ICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQYXJzZXJPcGVyYXRvcihpbnQg
cGFyc2VyT3BlcmF0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
cGFyc2VyT3BlcmF0b3IpKTsgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNyZWF0ZUNvbG9yKHVuc2lnbmVkIHJnYlZhbHVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHJnYlZhbHVlKSk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY3JlYXRlKGRvdWJsZSB2YWx1ZSwgVW5pdFR5cGVzIHR5cGUpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUsIHR5cGUpKTsgfQotICAg
IHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2
YWx1ZSwgVW5pdFR5cGVzIHR5cGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUodmFsdWUsIHR5cGUpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBjcmVhdGUoY29uc3QgTGVuZ3RoJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCBzdHlsZSkp
OyB9Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBM
ZW5ndGhTaXplJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCBzdHlsZSkpOyB9CisgICAgc3RhdGlj
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQ29sb3IodW5zaWduZWQgcmdiVmFsdWUpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmdiVmFsdWUpKTsgfQorICAg
IHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShkb3VibGUgdmFsdWUsIFVuaXRU
eXBlcyB0eXBlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
LCB0eXBlKSk7IH0KKyAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiB2YWx1ZSwgVW5pdFR5cGVzIHR5cGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1NTUHJpbWl0aXZlVmFsdWUodmFsdWUsIHR5cGUpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUs
IHN0eWxlKSk7IH0KKyAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoY29u
c3QgTGVuZ3RoU2l6ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNy
ZWF0ZShUIHZhbHVlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZShUIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpKTsKICAgICB9CkBAIC0yNDEsNyArMjQx
LDcgQEAgcHVibGljOgogICAgIC8vIFRoZSBiYXNpYyBpZGVhIGlzIHRoYXQgYSBzdHlsZXNoZWV0
IGNhbiB1c2UgdGhlIHZhbHVlIF9fcWVtIChmb3IgcXVpcmt5IGVtKSBpbnN0ZWFkIG9mIGVtLgog
ICAgIC8vIFdoZW4gdGhlIHF1aXJreSB2YWx1ZSBpcyB1c2VkLCBpZiB5b3UncmUgaW4gcXVpcmtz
IG1vZGUsIHRoZSBtYXJnaW4gd2lsbCBjb2xsYXBzZSBhd2F5CiAgICAgLy8gaW5zaWRlIGEgdGFi
bGUgY2VsbC4KLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQWxs
b3dpbmdNYXJnaW5RdWlyayhkb3VibGUgdmFsdWUsIFVuaXRUeXBlcyB0eXBlKQorICAgIHN0YXRp
YyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUFsbG93aW5nTWFyZ2luUXVpcmsoZG91Ymxl
IHZhbHVlLCBVbml0VHlwZXMgdHlwZSkKICAgICB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBxdWlya1ZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCB0eXBlKTsKICAgICAg
ICAgcXVpcmtWYWx1ZS0+bV9pc1F1aXJrVmFsdWUgPSB0cnVlOwpAQCAtNDA0LDggKzQwNCw4IEBA
IHByaXZhdGU6CiAKICAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBmb3JtYXROdW1iZXJGb3JDdXN0
b21DU1NUZXh0KCkgY29uc3Q7CiAgICAgdGVtcGxhdGUgPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50
PgotICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiBmb3JtYXROdW1iZXJWYWx1
ZShjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKSBjb25zdDsKLSAgICBO
RVZFUl9JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiBmb3JtYXROdW1iZXJWYWx1ZShjb25zdCBj
aGFyKiBzdWZmaXgsIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCkgY29uc3Q7CisgICAgQUxXQVlTX0lO
TElORSBSZWY8U3RyaW5nSW1wbD4gZm9ybWF0TnVtYmVyVmFsdWUoY29uc3QgY2hhciAoJmNoYXJh
Y3RlcnMpW2NoYXJhY3RlckNvdW50XSkgY29uc3Q7CisgICAgTkVWRVJfSU5MSU5FIFJlZjxTdHJp
bmdJbXBsPiBmb3JtYXROdW1iZXJWYWx1ZShjb25zdCBjaGFyKiBzdWZmaXgsIHVuc2lnbmVkIHN1
ZmZpeExlbmd0aCkgY29uc3Q7CiAKICAgICB1bmlvbiB7CiAgICAgICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAppbmRleCA3MmUzNjZk
Li4wYjU1ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCkBAIC0zNyw3ICsz
Nyw3IEBAIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwogCiBjbGFzcyBDU1NSZWZsZWN0VmFsdWUg
OiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU1JlZmxl
Y3RWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGRpcmVjdGlvbiwK
KyAgICBzdGF0aWMgUmVmPENTU1JlZmxlY3RWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGRpcmVjdGlvbiwKICAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gb2Zmc2V0LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBtYXNrKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUmVmbGVjdFZhbHVlKGRpcmVjdGlvbiwgb2Zmc2V0LCBt
YXNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFkb3dWYWx1ZS5oCmluZGV4IDAwNmM2MjkuLjMwZDNi
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFkb3dWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFkb3dWYWx1ZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNs
YXNzIENTU1ByaW1pdGl2ZVZhbHVlOwogLy8gVXNlZCBmb3IgdGV4dC1zaGFkb3cgYW5kIGJveC1z
aGFkb3cKIGNsYXNzIENTU1NoYWRvd1ZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZjxDU1NTaGFkb3dWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHgsCisgICAgc3RhdGljIFJlZjxDU1NTaGFkb3dWYWx1ZT4gY3JlYXRl
KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHgsCiAgICAgICAgIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHksCiAgICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGJsdXIsCiAgICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNwcmVhZCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IGQyNzc0NDAuLjI0NzVj
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaApAQCAtNjYsNyAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5SUQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2V0UHJvcGVydHlJbnRl
cm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDRlMWZlNzguLjk4
NGI1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTc1LDIzICs3NSwy
MyBAQCBzdGF0aWMgYm9vbCBpc0FjY2VwdGFibGVDU1NTdHlsZVNoZWV0UGFyZW50KE5vZGUqIHBh
cmVudE5vZGUpCiB9CiAjZW5kaWYKIAotUGFzc1JlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNo
ZWV0OjpjcmVhdGUoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IHNoZWV0LCBDU1NJbXBvcnRS
dWxlKiBvd25lclJ1bGUpCitSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRl
KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVs
ZSkKIHsgCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChXVEY6Om1vdmUo
c2hlZXQpLCBvd25lclJ1bGUpKTsKIH0KIAotUGFzc1JlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHls
ZVNoZWV0OjpjcmVhdGUoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IHNoZWV0LCBOb2RlKiBv
d25lck5vZGUpCitSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFJlZjxT
dHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQsIE5vZGUqIG93bmVyTm9kZSkKIHsgCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChXVEY6Om1vdmUoc2hlZXQpLCBvd25lck5v
ZGUsIGZhbHNlKSk7CiB9CiAKLVBhc3NSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6
Y3JlYXRlSW5saW5lKE5vZGUmIG93bmVyTm9kZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nKQorUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZUlubGluZShOb2RlJiBvd25lck5vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZykKIHsKICAgICBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQob3duZXJO
b2RlLmRvY3VtZW50KCksIGJhc2VVUkwsIGVuY29kaW5nKTsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NTdHlsZVNoZWV0KFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGJhc2VVUkwuc3Ry
aW5nKCksIHBhcnNlckNvbnRleHQpLCAmb3duZXJOb2RlLCB0cnVlKSk7CiB9CiAKLUNTU1N0eWxl
U2hlZXQ6OkNTU1N0eWxlU2hlZXQoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IGNvbnRlbnRz
LCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUpCitDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0
KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIENTU0ltcG9ydFJ1bGUqIG93bmVy
UnVsZSkKICAgICA6IG1fY29udGVudHMoV1RGOjptb3ZlKGNvbnRlbnRzKSkKICAgICAsIG1faXNJ
bmxpbmVTdHlsZXNoZWV0KGZhbHNlKQogICAgICwgbV9pc0Rpc2FibGVkKGZhbHNlKQpAQCAtMTAx
LDcgKzEwMSw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUGFzc1JlZjxTdHlsZVNo
ZWV0Q29udGVudHM+IGNvbnRlbnRzLCBDU1NJbXBvcnRSdWxlCiAgICAgbV9jb250ZW50cy0+cmVn
aXN0ZXJDbGllbnQodGhpcyk7CiB9CiAKLUNTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUGFz
c1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IGNvbnRlbnRzLCBOb2RlKiBvd25lck5vZGUsIGJvb2wg
aXNJbmxpbmVTdHlsZXNoZWV0KQorQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8U3R5
bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRzLCBOb2RlKiBvd25lck5vZGUsIGJvb2wgaXNJbmxp
bmVTdHlsZXNoZWV0KQogICAgIDogbV9jb250ZW50cyhXVEY6Om1vdmUoY29udGVudHMpKQogICAg
ICwgbV9pc0lubGluZVN0eWxlc2hlZXQoaXNJbmxpbmVTdHlsZXNoZWV0KQogICAgICwgbV9pc0Rp
c2FibGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggNDAxN2I5Zi4u
MTg5MDUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC00OSw5ICs0OSw5IEBA
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIENTU1N0eWxlU2hlZXQgZmluYWwg
OiBwdWJsaWMgU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTU3R5
bGVTaGVldD4gY3JlYXRlKFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiwgQ1NTSW1wb3J0UnVs
ZSogb3duZXJSdWxlID0gMCk7Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTU3R5bGVTaGVldD4gY3Jl
YXRlKFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiwgTm9kZSogb3duZXJOb2RlKTsKLSAgICBz
dGF0aWMgUGFzc1JlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVJbmxpbmUoTm9kZSYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcgPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJlZjxD
U1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgQ1NTSW1wb3J0
UnVsZSogb3duZXJSdWxlID0gMCk7CisgICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVh
dGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSogb3duZXJOb2RlKTsKKyAgICBzdGF0
aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUlubGluZShOb2RlJiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZyA9IFN0cmluZygpKTsKIAogICAgIHZpcnR1YWwgfkNTU1N0eWxl
U2hlZXQoKTsKIApAQCAtMTE4LDggKzExOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGFjaEZy
b21Eb2N1bWVudCgpIHsgbV9vd25lck5vZGUgPSBudWxscHRyOyB9CiAKIHByaXZhdGU6Ci0gICAg
Q1NTU3R5bGVTaGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4sIENTU0ltcG9ydFJ1bGUq
IG93bmVyUnVsZSk7Ci0gICAgQ1NTU3R5bGVTaGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4sIE5vZGUqIG93bmVyTm9kZSwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpOworICAgIENTU1N0
eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJS
dWxlKTsKKyAgICBDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUq
IG93bmVyTm9kZSwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpOwogCiAgICAgdmlydHVhbCBib29s
IGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIFN0cmluZyB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQVNDSUlMaXRlcmFs
KCJ0ZXh0L2NzcyIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5n
RnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuaAppbmRleCBjMzlhYjBjLi5kYWNiNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NU
aW1pbmdGdW5jdGlvblZhbHVlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUgOiBwdWJsaWMgQ1NT
VmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb25WYWx1ZT4gY3JlYXRlKGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRv
dWJsZSB5MikKKyAgICBzdGF0aWMgUmVmPENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1
ZT4gY3JlYXRlKGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb25WYWx1ZSh4MSwgeTEsIHgyLCB5MikpOwogICAgIH0KQEAgLTY1LDcgKzY1LDcgQEAgcHJp
dmF0ZToKIAogY2xhc3MgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlIDogcHVibGljIENTU1Zh
bHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NTdGVwc1RpbWluZ0Z1bmN0aW9u
VmFsdWU+IGNyZWF0ZShpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCisgICAgc3RhdGljIFJl
ZjxDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShpbnQgc3RlcHMsIGJvb2wgc3Rl
cEF0U3RhcnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NTdGVwc1Rp
bWluZ0Z1bmN0aW9uVmFsdWUoc3RlcHMsIHN0ZXBBdFN0YXJ0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaAppbmRleCAwNmMxNzc0Li4yNjQzMDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaApAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1VuaWNvZGVSYW5nZVZhbHVlIDog
cHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NVbmljb2Rl
UmFuZ2VWYWx1ZT4gY3JlYXRlKFVDaGFyMzIgZnJvbSwgVUNoYXIzMiB0bykKKyAgICBzdGF0aWMg
UmVmPENTU1VuaWNvZGVSYW5nZVZhbHVlPiBjcmVhdGUoVUNoYXIzMiBmcm9tLCBVQ2hhcjMyIHRv
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVW5pY29kZVJhbmdlVmFs
dWUoZnJvbSwgdG8pKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCBhNmMzY2U2
Li4yNzUyMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKENTU1ZhbHVlKSA9PSBzaXplb2YoU2FtZVNpemVBc0NTU1ZhbHVl
KSwgQ1NTX3ZhbHVlX3Nob3VsZF8KIAogY2xhc3MgVGV4dENsb25lQ1NTVmFsdWUgOiBwdWJsaWMg
Q1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFRleHRDbG9uZUNTU1ZhbHVl
PiBjcmVhdGUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQorICAgIHN0
YXRpYyBSZWY8VGV4dENsb25lQ1NTVmFsdWU+IGNyZWF0ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
ZXh0Q2xvbmVDU1NWYWx1ZShjbGFzc1R5cGUsIHRleHQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVMaXN0LmgKaW5kZXggYzg5Zjk1OC4uYTQ3M2NiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZUxpc3QuaApAQCAtMzQsMTkgKzM0LDE5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxS
ZWY8Q1NTVmFsdWU+LCA0Pjo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgdHlwZWRlZiBWZWN0b3I8
UmVmPENTU1ZhbHVlPiwgND46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogCi0gICAg
c3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVDb21tYVNlcGFyYXRlZCgpCisgICAg
c3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUNvbW1hU2VwYXJhdGVkKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhbHVlTGlzdChDb21tYVNlcGFyYXRvcikp
OwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCkKKyAgICBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFsdWVMaXN0KFNw
YWNlU2VwYXJhdG9yKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4g
Y3JlYXRlU2xhc2hTZXBhcmF0ZWQoKQorICAgIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVh
dGVTbGFzaFNlcGFyYXRlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NWYWx1ZUxpc3QoU2xhc2hTZXBhcmF0b3IpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWY8
Q1NTVmFsdWVMaXN0PiBjcmVhdGVGcm9tUGFyc2VyVmFsdWVMaXN0KENTU1BhcnNlclZhbHVlTGlz
dCYgbGlzdCkKKyAgICBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlRnJvbVBhcnNlclZh
bHVlTGlzdChDU1NQYXJzZXJWYWx1ZUxpc3QmIGxpc3QpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NWYWx1ZUxpc3QobGlzdCkpOwogICAgIH0KQEAgLTYyLDggKzYyLDgg
QEAgcHVibGljOgogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV92YWx1ZXMuYmVnaW4o
KTsgfQogICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fdmFsdWVzLmVuZCgpOyB9CiAKLSAg
ICB2b2lkIGFwcGVuZChQYXNzUmVmPENTU1ZhbHVlPik7Ci0gICAgdm9pZCBwcmVwZW5kKFBhc3NS
ZWY8Q1NTVmFsdWU+KTsKKyAgICB2b2lkIGFwcGVuZChSZWY8Q1NTVmFsdWU+JiYpOworICAgIHZv
aWQgcHJlcGVuZChSZWY8Q1NTVmFsdWU+JiYpOwogICAgIGJvb2wgcmVtb3ZlQWxsKENTU1ZhbHVl
Kik7CiAgICAgYm9vbCBoYXNWYWx1ZShDU1NWYWx1ZSopIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBjb3B5KCk7CkBAIC04OSwxMiArODksMTIgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVmPENTU1ZhbHVlPiwgND4gbV92YWx1ZXM7CiB9OwogCi1pbmxpbmUgdm9pZCBDU1NW
YWx1ZUxpc3Q6OmFwcGVuZChQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZSkKK2lubGluZSB2b2lkIENT
U1ZhbHVlTGlzdDo6YXBwZW5kKFJlZjxDU1NWYWx1ZT4mJiB2YWx1ZSkKIHsKICAgICBtX3ZhbHVl
cy5hcHBlbmQoV1RGOjptb3ZlKHZhbHVlKSk7CiB9CiAKLWlubGluZSB2b2lkIENTU1ZhbHVlTGlz
dDo6cHJlcGVuZChQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZSkKK2lubGluZSB2b2lkIENTU1ZhbHVl
TGlzdDo6cHJlcGVuZChSZWY8Q1NTVmFsdWU+JiYgdmFsdWUpCiB7CiAgICAgbV92YWx1ZXMuaW5z
ZXJ0KDAsIFdURjo6bW92ZSh2YWx1ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cAppbmRleCAyZGZiYzY2Li42NjU5M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cApAQCAtNDksNyArNDksNyBAQCBDU1NWYWx1ZVBvb2w6OkNTU1ZhbHVlUG9vbCgpCiB7CiB9CiAK
LVBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlSUQgaWRlbnQpCitSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVl
UG9vbDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSUQgaWRlbnQpCiB7CiAgICAgaWYg
KCFpZGVudCkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKGlkZW50KTsKQEAgLTYwLDIxICs2MCwyMSBAQCBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUlEIGlkZW50KQog
ICAgIHJldHVybiAqbV9pZGVudGlmaWVyVmFsdWVDYWNoZVtpZGVudF07CiB9CiAKLVBhc3NSZWY8
Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1Byb3BlcnR5SUQgaWRlbnQpCitSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Byb3BlcnR5SUQgaWRlbnQpCiB7CiAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkZW50KTsKIH0KIAotUGFzc1Jl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2ln
bmVkIHJnYlZhbHVlKQorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0
ZUNvbG9yVmFsdWUodW5zaWduZWQgcmdiVmFsdWUpCiB7CiAgICAgLy8gVGhlc2UgYXJlIHRoZSBl
bXB0eSBhbmQgZGVsZXRlZCB2YWx1ZXMgb2YgdGhlIGhhc2ggdGFibGUuCiAgICAgaWYgKHJnYlZh
bHVlID09IENvbG9yOjp0cmFuc3BhcmVudCkKLSAgICAgICAgcmV0dXJuIG1fY29sb3JUcmFuc3Bh
cmVudDsKKyAgICAgICAgcmV0dXJuIG1fY29sb3JUcmFuc3BhcmVudC5jb3B5UmVmKCk7CiAgICAg
aWYgKHJnYlZhbHVlID09IENvbG9yOjp3aGl0ZSkKLSAgICAgICAgcmV0dXJuIG1fY29sb3JXaGl0
ZTsKKyAgICAgICAgcmV0dXJuIG1fY29sb3JXaGl0ZS5jb3B5UmVmKCk7CiAgICAgLy8gSnVzdCBi
ZWNhdXNlIGl0IGlzIGNvbW1vbi4KICAgICBpZiAocmdiVmFsdWUgPT0gQ29sb3I6OmJsYWNrKQot
ICAgICAgICByZXR1cm4gbV9jb2xvckJsYWNrOworICAgICAgICByZXR1cm4gbV9jb2xvckJsYWNr
LmNvcHlSZWYoKTsKIAogICAgIC8vIFJlbW92ZSBvbmUgZW50cnkgYXQgcmFuZG9tIGlmIHRoZSBj
YWNoZSBncm93cyB0b28gbGFyZ2UuCiAgICAgY29uc3QgaW50IG1heGltdW1Db2xvckNhY2hlU2l6
ZSA9IDUxMjsKQEAgLTg3LDcgKzg3LDcgQEAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NT
VmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZhbHVlKQogICAgIHJldHVy
biAqZW50cnkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi1QYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlcyB0eXBlKQorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6
OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0
eXBlKQogewogICAgIEFTU0VSVChzdGQ6OmlzZmluaXRlKHZhbHVlKSk7CiAKQEAgLTExOCw3ICsx
MTgsNyBAQCBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZh
bHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVgogICAgIHJldHVybiAqY2FjaGVbaW50VmFs
dWVdOwogfQogCi1QYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0
ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCitSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhbWlseVZhbHVlKGNvbnN0IFN0cmlu
ZyYgZmFtaWx5TmFtZSkKIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiB2YWx1ZSA9
IG1fZm9udEZhbWlseVZhbHVlQ2FjaGUuYWRkKGZhbWlseU5hbWUsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlUG9vbC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCmluZGV4
IDMzOTY0NTMuLjUyNjgwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZVBvb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKQEAgLTQ0LDE4
ICs0NCwxOCBAQCBjbGFzcyBDU1NWYWx1ZVBvb2wgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjcmVhdGVGb250RmFj
ZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmKTsKLSAgICBQYXNzUmVmPENT
U0luaGVyaXRlZFZhbHVlPiBjcmVhdGVJbmhlcml0ZWRWYWx1ZSgpIHsgcmV0dXJuIG1faW5oZXJp
dGVkVmFsdWU7IH0KLSAgICBQYXNzUmVmPENTU0luaXRpYWxWYWx1ZT4gY3JlYXRlSW1wbGljaXRJ
bml0aWFsVmFsdWUoKSB7IHJldHVybiBtX2ltcGxpY2l0SW5pdGlhbFZhbHVlOyB9Ci0gICAgUGFz
c1JlZjxDU1NJbml0aWFsVmFsdWU+IGNyZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKCkgeyByZXR1
cm4gbV9leHBsaWNpdEluaXRpYWxWYWx1ZTsgfQotICAgIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUlEIGlkZW50aWZpZXIpOwotICAgIFBh
c3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NQcm9wZXJ0
eUlEIGlkZW50aWZpZXIpOwotICAgIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUNv
bG9yVmFsdWUodW5zaWduZWQgcmdiVmFsdWUpOwotICAgIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
cyk7Ci0gICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBlKSB7IHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsgfQotICAgIFBhc3NSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZhbHVlKGNvbnN0IExlbmd0aCYgdmFsdWUsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1
ZSwgc3R5bGUpOyB9Ci0gICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUo
Y29uc3QgTGVuZ3RoU2l6ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgc3R5bGUpOyB9Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZh
bHVlKFQgdmFsdWUpIHsgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUpOyB9
CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVGb250RmFtaWx5VmFsdWUoY29uc3Qg
U3RyaW5nJik7CisgICAgUmVmPENTU0luaGVyaXRlZFZhbHVlPiBjcmVhdGVJbmhlcml0ZWRWYWx1
ZSgpIHsgcmV0dXJuIG1faW5oZXJpdGVkVmFsdWUuY29weVJlZigpOyB9CisgICAgUmVmPENTU0lu
aXRpYWxWYWx1ZT4gY3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSB7IHJldHVybiBtX2ltcGxp
Y2l0SW5pdGlhbFZhbHVlLmNvcHlSZWYoKTsgfQorICAgIFJlZjxDU1NJbml0aWFsVmFsdWU+IGNy
ZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gbV9leHBsaWNpdEluaXRpYWxWYWx1
ZS5jb3B5UmVmKCk7IH0KKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZUlEIGlkZW50aWZpZXIpOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Byb3BlcnR5SUQgaWRlbnRpZmllcik7CisgICAg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZhbHVl
KTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyk7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBjcmVhdGVWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzIHR5cGUpIHsgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHR5
cGUpOyB9CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShjb25zdCBMZW5n
dGgmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHN0eWxlKTsgfQorICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gY3JlYXRlVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgc3R5bGUp
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gY3JlYXRlVmFsdWUoVCB2YWx1ZSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh2YWx1ZSk7IH0KIAogICAgIHZvaWQgZHJhaW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA4ZDM1MWU1
Li41NzFkODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIFN0eWxlU2hlZXRDb250
ZW50cyogUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjb250ZXh0U3R5bGVTaGVldCgp
IGNvbnN0CiAgICAgcmV0dXJuIGNzc1N0eWxlU2hlZXQgPyAmY3NzU3R5bGVTaGVldC0+Y29udGVu
dHMoKSA6IDA7CiB9CiAKLVBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjb3B5UHJvcGVydGllcygpIGNvbnN0CitSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjb3B5UHJv
cGVydGllcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQtPm11dGFibGVDb3B5
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmgKaW5kZXggMTAwYjNhYy4uMzNhMDM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaApAQCAtNjcsNyArNjcs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUlEKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIGJvb2wgc2V0UHJv
cGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGlt
cG9ydGFudCwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIAotICAgIHZpcnR1
YWwgUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+
IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBDU1NWYWx1ZSog
Y2xvbmVBbmRDYWNoZUZvckNTU09NKENTU1ZhbHVlKik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IDNiMDljY2YuLjE3N2ZmNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC01MywxMyArNTMsMTMgQEAgc3RhdGljIGJvb2wg
aXNJbml0aWFsT3JJbmhlcml0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVl
Lmxlbmd0aCgpID09IDcgJiYgKHZhbHVlID09ICJpbml0aWFsIiB8fCB2YWx1ZSA9PSAiaW5oZXJp
dCIpOwogfQogCi1QYXNzUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gSW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpjcmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2ln
bmVkIGNvdW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCitSZWY8SW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShjb25zdCBDU1NQ
cm9wZXJ0eSogcHJvcGVydGllcywgdW5zaWduZWQgY291bnQsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKIHsKICAgICB2b2lkKiBzbG90ID0gV1RGOjpmYXN0TWFsbG9jKHNpemVGb3JJbW11
dGFibGVTdHlsZVByb3BlcnRpZXNXaXRoUHJvcGVydHlDb3VudChjb3VudCkpOwogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzbG90KSBJbW11dGFibGVTdHlsZVByb3BlcnRpZXMo
cHJvcGVydGllcywgY291bnQsIGNzc1BhcnNlck1vZGUpKTsKIH0KIAotUGFzc1JlZjxJbW11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6aW1tdXRhYmxlQ29weUlmTmVlZGVk
KCkgY29uc3QKK1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6
aW1tdXRhYmxlQ29weUlmTmVlZGVkKCkgY29uc3QKIHsKICAgICBpZiAoaXM8SW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPigqdGhpcykpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxJbW11dGFibGVT
dHlsZVByb3BlcnRpZXM+KGNvbnN0X2Nhc3Q8U3R5bGVQcm9wZXJ0aWVzJj4oKnRoaXMpKTsKQEAg
LTExMDcsNyArMTEwNyw3IEBAIHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y2xlYXIoKQog
CiBjb25zdCB1bnNpZ25lZCBudW1CbG9ja1Byb3BlcnRpZXMgPSBXVEZfQVJSQVlfTEVOR1RIKGJs
b2NrUHJvcGVydGllcyk7CiAKLVBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gU3R5bGVQ
cm9wZXJ0aWVzOjpjb3B5QmxvY2tQcm9wZXJ0aWVzKCkgY29uc3QKK1JlZjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBTdHlsZVByb3BlcnRpZXM6OmNvcHlCbG9ja1Byb3BlcnRpZXMoKSBjb25zdAog
ewogICAgIHJldHVybiBjb3B5UHJvcGVydGllc0luU2V0KGJsb2NrUHJvcGVydGllcywgbnVtQmxv
Y2tQcm9wZXJ0aWVzKTsKIH0KQEAgLTExODgsMTIgKzExODgsMTIgQEAgYm9vbCBTdHlsZVByb3Bl
cnRpZXM6OnByb3BlcnR5TWF0Y2hlcyhDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IENT
U1ZhbHVlKgogICAgIHJldHVybiBwcm9wZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkudmFsdWUo
KS0+ZXF1YWxzKCpwcm9wZXJ0eVZhbHVlKTsKIH0KIAotUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBTdHlsZVByb3BlcnRpZXM6Om11dGFibGVDb3B5KCkgY29uc3QKK1JlZjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBTdHlsZVByb3BlcnRpZXM6Om11dGFibGVDb3B5KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKCp0aGlzKSk7
CiB9CiAKLVBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gU3R5bGVQcm9wZXJ0aWVzOjpj
b3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVu
Z3RoKSBjb25zdAorUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6
Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxl
bmd0aCkgY29uc3QKIHsKICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4gbGlzdDsKICAgICBs
aXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKQEAgLTEyNTAsMTIgKzEyNTAsMTIg
QEAgdm9pZCBTdHlsZVByb3BlcnRpZXM6OnNob3dTdHlsZSgpCiB9CiAjZW5kaWYKIAotUGFzc1Jl
ZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUo
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTXV0YWJsZVN0eWxlUHJvcGVydGllcyhj
c3NQYXJzZXJNb2RlKSk7CiB9CiAKLVBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gTXV0
YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVz
LCB1bnNpZ25lZCBjb3VudCkKK1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpjcmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2ln
bmVkIGNvdW50KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE11dGFibGVTdHlsZVByb3Bl
cnRpZXMocHJvcGVydGllcywgY291bnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuaAppbmRleCBkMWZmNmU3Li44ZDMxZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dGllcy5oCkBAIC05MiwxNiArOTIsMTYgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRQcm9wZXJ0
eVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIGlzUHJvcGVydHlJbXBs
aWNpdChDU1NQcm9wZXJ0eUlEKSBjb25zdDsKIAotICAgIFBhc3NSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gY29weUJsb2NrUHJvcGVydGllcygpIGNvbnN0OworICAgIFJlZjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBjb3B5QmxvY2tQcm9wZXJ0aWVzKCkgY29uc3Q7CiAKICAgICBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDU1NQYXJz
ZXJNb2RlPihtX2Nzc1BhcnNlck1vZGUpOyB9CiAKICAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mLCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHls
ZVNoZWV0KSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWY8TXV0YWJsZVN0eWxl
UHJvcGVydGllcz4gbXV0YWJsZUNvcHkoKSBjb25zdDsKLSAgICBQYXNzUmVmPEltbXV0YWJsZVN0
eWxlUHJvcGVydGllcz4gaW1tdXRhYmxlQ29weUlmTmVlZGVkKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IG11dGFibGVDb3B5KCkgY29uc3Q7
CisgICAgUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gaW1tdXRhYmxlQ29weUlmTmVlZGVk
KCkgY29uc3Q7CiAKLSAgICBQYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9w
ZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0OworICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllc0luU2V0
KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKICAgICAK
ICAgICBTdHJpbmcgYXNUZXh0KCkgY29uc3Q7CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRl
OgogY2xhc3MgSW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzIDogcHVibGljIFN0eWxlUHJvcGVydGll
cyB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgfkltbXV0YWJsZVN0eWxlUHJvcGVydGll
cygpOwotICAgIHN0YXRpYyBQYXNzUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY3JlYXRl
KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCwgQ1NTUGFyc2Vy
TW9kZSk7CisgICAgc3RhdGljIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZShj
b25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgdW5zaWduZWQgY291bnQsIENTU1BhcnNlck1v
ZGUpOwogCiAgICAgdW5zaWduZWQgcHJvcGVydHlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJy
YXlTaXplOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXByb3BlcnR5Q291
bnQoKTsgfQpAQCAtMTgyLDggKzE4Miw4IEBAIGlubGluZSBjb25zdCBTdHlsZVByb3BlcnR5TWV0
YWRhdGEqIEltbXV0YWJsZVN0eWxlUHJvcGVydGllczo6bWV0YWRhdGFBcnJheSgpIGNvCiAKIGNs
YXNzIE11dGFibGVTdHlsZVByb3BlcnRpZXMgOiBwdWJsaWMgU3R5bGVQcm9wZXJ0aWVzIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGUo
Q1NTUGFyc2VyTW9kZSA9IENTU1F1aXJrc01vZGUpOwotICAgIHN0YXRpYyBQYXNzUmVmPE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZShjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywg
dW5zaWduZWQgY291bnQpOworICAgIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
Y3JlYXRlKENTU1BhcnNlck1vZGUgPSBDU1NRdWlya3NNb2RlKTsKKyAgICBzdGF0aWMgUmVmPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZShjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGll
cywgdW5zaWduZWQgY291bnQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfk11dGFibGVTdHlsZVBy
b3BlcnRpZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGIxNGZi
NzEuLmU1MzRmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTQyOCw3
ICs0MjgsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6aW5pdEZvclN0eWxl
UmVzb2x2ZShEb2N1bWVudCYgZG9jdW1lbnQsIEVsZW1lbgogICAgIHVwZGF0ZUNvbnZlcnNpb25E
YXRhKCk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZShQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK2lubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0
YXRlOjpzZXRTdHlsZShSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgbV9zdHlsZSA9
IFdURjo6bW92ZShzdHlsZSk7CiAgICAgdXBkYXRlQ29udmVyc2lvbkRhdGEoKTsKQEAgLTczOSw3
ICs3MzksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNoYWRvd0JvdW5kYXJ5KGNvbnN0IEVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS0+aXNT
aGFkb3dSb290KCk7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0
eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTdHlsZSogZGVmYXVsdFBhcmVu
dCwKK1JlZjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LAogICAgIFN0eWxlU2hhcmlu
Z0JlaGF2aW9yIHNoYXJpbmdCZWhhdmlvciwgUnVsZU1hdGNoaW5nQmVoYXZpb3IgbWF0Y2hpbmdC
ZWhhdmlvciwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb25Gb3JTdHlsaW5nKQogewogICAgIC8v
IE9uY2UgYW4gZWxlbWVudCBoYXMgYSByZW5kZXJlciwgd2UgZG9uJ3QgdHJ5IHRvIGRlc3Ryb3kg
aXQsIHNpbmNlIG90aGVyd2lzZSB0aGUgcmVuZGVyZXIKQEAgLTgxMSw3ICs4MTEsNyBAQCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCwgUmVuZGVyU3R5bAogICAgIHJldHVybiBzdGF0ZS50YWtlU3R5bGUoKTsKIH0KIAot
UGFzc1JlZjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZShjb25z
dCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBjb25zdCBTdHlsZUtleWZyYW1lKiBrZXlmcmFt
ZSwgS2V5ZnJhbWVWYWx1ZSYga2V5ZnJhbWVWYWx1ZSkKK1JlZjxSZW5kZXJTdHlsZT4gU3R5bGVS
ZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxl
LCBjb25zdCBTdHlsZUtleWZyYW1lKiBrZXlmcmFtZSwgS2V5ZnJhbWVWYWx1ZSYga2V5ZnJhbWVW
YWx1ZSkKIHsKICAgICBNYXRjaFJlc3VsdCByZXN1bHQ7CiAgICAgcmVzdWx0LmFkZE1hdGNoZWRQ
cm9wZXJ0aWVzKGtleWZyYW1lLT5wcm9wZXJ0aWVzKCkpOwpAQCAtOTg1LDcgKzk4NSw3IEBAIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVu
dChFbGVtZW50KiBlbGVtZW50LCBjCiAgICAgcmV0dXJuIHN0YXRlLnRha2VTdHlsZSgpOwogfQog
Ci1QYXNzUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBh
Z2VJbmRleCkKK1JlZjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKGlu
dCBwYWdlSW5kZXgpCiB7CiAgICAgbV9zdGF0ZS5pbml0Rm9yU3R5bGVSZXNvbHZlKG1fZG9jdW1l
bnQsIG1fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCksIG1fZG9jdW1lbnQucmVuZGVyU3R5bGUo
KSk7CiAKQEAgLTEwMjUsNyArMTAyNSw3IEBAIFBhc3NSZWY8UmVuZGVyU3R5bGU+IFN0eWxlUmVz
b2x2ZXI6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KQogICAgIHJldHVybiBtX3N0YXRlLnRh
a2VTdHlsZSgpOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpkZWZh
dWx0U3R5bGVGb3JFbGVtZW50KCkKK1JlZjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6ZGVm
YXVsdFN0eWxlRm9yRWxlbWVudCgpCiB7CiAgICAgbV9zdGF0ZS5zZXRTdHlsZShSZW5kZXJTdHls
ZTo6Y3JlYXRlKCkpOwogICAgIC8vIE1ha2Ugc3VyZSBvdXIgZm9udHMgYXJlIGluaXRpYWxpemVk
IGlmIHdlIGRvbid0IGluaGVyaXQgdGhlbSBmcm9tIG91ciBwYXJlbnQgc3R5bGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAwNzI2OWRiLi5kODg2NzhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgKQEAgLTE0NywxNSArMTQ3LDE1IEBAIHB1YmxpYzoKICAgICB2b2lk
IHB1c2hQYXJlbnRFbGVtZW50KEVsZW1lbnQqKTsKICAgICB2b2lkIHBvcFBhcmVudEVsZW1lbnQo
RWxlbWVudCopOwogCi0gICAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KEVs
ZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIFN0eWxlU2hhcmluZ0JlaGF2aW9yID0g
QWxsb3dTdHlsZVNoYXJpbmcsCisgICAgUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnQo
RWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgU3R5bGVTaGFyaW5nQmVoYXZpb3Ig
PSBBbGxvd1N0eWxlU2hhcmluZywKICAgICAgICAgUnVsZU1hdGNoaW5nQmVoYXZpb3IgPSBNYXRj
aEFsbFJ1bGVzLCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbkZvclN0eWxpbmcgPSBudWxscHRy
KTsKIAogICAgIHZvaWQga2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oRWxlbWVudCosIGNvbnN0
IFJlbmRlclN0eWxlKiwgS2V5ZnJhbWVMaXN0Jik7CiAKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoRWxlbWVudCosIGNvbnN0IFBzZXVkb1N0eWxlUmVx
dWVzdCYsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7CiAKLSAgICBQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7Ci0gICAgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpOworICAgIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGVG
b3JQYWdlKGludCBwYWdlSW5kZXgpOworICAgIFJlZjxSZW5kZXJTdHlsZT4gZGVmYXVsdFN0eWxl
Rm9yRWxlbWVudCgpOwogCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5zdHlsZSgpOyB9CiAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5wYXJlbnRTdHlsZSgpOyB9CkBAIC0xODEsNyArMTgxLDcgQEAgcHJp
dmF0ZToKICAgICBTdHlsZWRFbGVtZW50KiBmaW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhOb2Rl
KiwgdW5zaWduZWQmIGNvdW50KSBjb25zdDsKICAgICBib29sIGNhblNoYXJlU3R5bGVXaXRoRWxl
bWVudChTdHlsZWRFbGVtZW50KikgY29uc3Q7CiAKLSAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgU3R5bGVLZXlmcmFtZSos
IEtleWZyYW1lVmFsdWUmKTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yS2V5ZnJhbWUo
Y29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBTdHlsZUtleWZyYW1lKiwgS2V5ZnJhbWVWYWx1ZSYp
OwogCiBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIGdpdmUgYmFjayB0aGUgc2V0
IG9mIHJ1bGVzIHRoYXQgbWF0Y2hlZCBmb3IgYSBnaXZlbiBlbGVtZW50IChvciBhIHBzZXVkby1l
bGVtZW50KS4KQEAgLTM2MywxMSArMzYzLDExIEBAIHB1YmxpYzoKICAgICAgICAgRG9jdW1lbnQm
IGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50LT5kb2N1bWVudCgpOyB9CiAgICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICAg
ICAgU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVk
RWxlbWVudDsgfQotICAgICAgICB2b2lkIHNldFN0eWxlKFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsK
KyAgICAgICAgdm9pZCBzZXRTdHlsZShSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgICAgICBSZW5k
ZXJTdHlsZSogc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlLmdldCgpOyB9Ci0gICAgICAg
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHRha2VTdHlsZSgpIHsgcmV0dXJuIG1fc3R5bGUucmVsZWFz
ZU5vbk51bGwoKTsgfQorICAgICAgICBSZWY8UmVuZGVyU3R5bGU+IHRha2VTdHlsZSgpIHsgcmV0
dXJuIG1fc3R5bGUucmVsZWFzZU5vbk51bGwoKTsgfQogCi0gICAgICAgIHZvaWQgc2V0UGFyZW50
U3R5bGUoUGFzc1JlZjxSZW5kZXJTdHlsZT4gcGFyZW50U3R5bGUpIHsgbV9wYXJlbnRTdHlsZSA9
IFdURjo6bW92ZShwYXJlbnRTdHlsZSk7IH0KKyAgICAgICAgdm9pZCBzZXRQYXJlbnRTdHlsZShS
ZWY8UmVuZGVyU3R5bGU+JiYgcGFyZW50U3R5bGUpIHsgbV9wYXJlbnRTdHlsZSA9IFdURjo6bW92
ZShwYXJlbnRTdHlsZSk7IH0KICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJlbnRTdHlsZS5nZXQoKTsgfQogICAgICAgICBSZW5kZXJTdHlsZSog
cm9vdEVsZW1lbnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdEVsZW1lbnRTdHlsZTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4IDIxN2Q2MDMuLjU5OTQ3MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTdHlsZVJ1bGVCYXNl
OjpkZXN0cm95KCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUGFzc1JlZjxTdHls
ZVJ1bGVCYXNlPiBTdHlsZVJ1bGVCYXNlOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZVJ1bGVCYXNl
PiBTdHlsZVJ1bGVCYXNlOjpjb3B5KCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewog
ICAgIGNhc2UgU3R5bGU6CkBAIC0xMzcsNyArMTM3LDcgQEAgUGFzc1JlZjxTdHlsZVJ1bGVCYXNl
PiBTdHlsZVJ1bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICB9CiAgICAgQ1JBU0goKTsKICAgICAv
LyBIQUNLOiBFRkwgd29uJ3QgYnVpbGQgd2l0aG91dCB0aGlzIChvbGQgR0NDIHdpdGggY3JhcHB5
IC1XZXJyb3I9cmV0dXJuLXR5cGUpCi0gICAgcmV0dXJuIFBhc3NSZWY8U3R5bGVSdWxlQmFzZT4o
KnN0YXRpY19jYXN0PFN0eWxlUnVsZUJhc2UqPihudWxscHRyKSk7CisgICAgcmV0dXJuIFJlZjxT
dHlsZVJ1bGVCYXNlPigqc3RhdGljX2Nhc3Q8U3R5bGVSdWxlQmFzZSo+KG51bGxwdHIpKTsKIH0K
IAogUGFzc1JlZlB0cjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NPTVdyYXBwZXIo
Q1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1bGUqIHBhcmVudFJ1bGUpIGNvbnN0CkBA
IC0xOTUsNyArMTk1LDcgQEAgdW5zaWduZWQgU3R5bGVSdWxlOjphdmVyYWdlU2l6ZUluQnl0ZXMo
KQogICAgIHJldHVybiBzaXplb2YoU3R5bGVSdWxlKSArIHNpemVvZihDU1NTZWxlY3RvcikgKyBT
dHlsZVByb3BlcnRpZXM6OmF2ZXJhZ2VTaXplSW5CeXRlcygpOwogfQogCi1TdHlsZVJ1bGU6OlN0
eWxlUnVsZShpbnQgc291cmNlTGluZSwgUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRp
ZXMpCitTdHlsZVJ1bGU6OlN0eWxlUnVsZShpbnQgc291cmNlTGluZSwgUmVmPFN0eWxlUHJvcGVy
dGllcz4gcHJvcGVydGllcykKICAgICA6IFN0eWxlUnVsZUJhc2UoU3R5bGUsIHNvdXJjZUxpbmUp
CiAgICAgLCBtX3Byb3BlcnRpZXMoV1RGOjptb3ZlKHByb3BlcnRpZXMpKQogewpAQCAtMjE5LDcg
KzIxOSw3IEBAIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIFN0eWxlUnVsZTo6bXV0YWJsZVByb3Bl
cnRpZXMoKQogICAgIHJldHVybiBkb3duY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPihtX3By
b3BlcnRpZXMuZ2V0KCkpOwogfQogCi1QYXNzUmVmPFN0eWxlUnVsZT4gU3R5bGVSdWxlOjpjcmVh
dGUoaW50IHNvdXJjZUxpbmUsIGNvbnN0IFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+JiBzZWxl
Y3RvcnMsIFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKQorUmVmPFN0eWxlUnVs
ZT4gU3R5bGVSdWxlOjpjcmVhdGUoaW50IHNvdXJjZUxpbmUsIGNvbnN0IFZlY3Rvcjxjb25zdCBD
U1NTZWxlY3Rvcio+JiBzZWxlY3RvcnMsIFJlZjxTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMp
CiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNlbGVjdG9ycy5pc0Vt
cHR5KCkpOwogICAgIENTU1NlbGVjdG9yKiBzZWxlY3Rvckxpc3RBcnJheSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Q1NTU2VsZWN0b3IqPihmYXN0TWFsbG9jKHNpemVvZihDU1NTZWxlY3RvcikgKiBzZWxl
Y3RvcnMuc2l6ZSgpKSk7CkBAIC0yNTcsNyArMjU3LDcgQEAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1
bGU+PiBTdHlsZVJ1bGU6OnNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNlbGVjdG9y
Q28KICAgICByZXR1cm4gcnVsZXM7CiB9CiAKLVN0eWxlUnVsZVBhZ2U6OlN0eWxlUnVsZVBhZ2Uo
UGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMpCitTdHlsZVJ1bGVQYWdlOjpTdHls
ZVJ1bGVQYWdlKFJlZjxTdHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKICAgICA6IFN0eWxl
UnVsZUJhc2UoUGFnZSkKICAgICAsIG1fcHJvcGVydGllcyhXVEY6Om1vdmUocHJvcGVydGllcykp
CiB7CkBAIC0yODEsNyArMjgxLDcgQEAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgU3R5bGVSdWxl
UGFnZTo6bXV0YWJsZVByb3BlcnRpZXMoKQogICAgIHJldHVybiBkb3duY2FzdDxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPihtX3Byb3BlcnRpZXMuZ2V0KCkpOwogfQogCi1TdHlsZVJ1bGVGb250RmFj
ZTo6U3R5bGVSdWxlRm9udEZhY2UoUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMp
CitTdHlsZVJ1bGVGb250RmFjZTo6U3R5bGVSdWxlRm9udEZhY2UoUmVmPFN0eWxlUHJvcGVydGll
cz4mJiBwcm9wZXJ0aWVzKQogICAgIDogU3R5bGVSdWxlQmFzZShGb250RmFjZSwgMCkKICAgICAs
IG1fcHJvcGVydGllcyhXVEY6Om1vdmUocHJvcGVydGllcykpCiB7CkBAIC0zMTgsNyArMzE4LDcg
QEAgU3R5bGVSdWxlR3JvdXA6OlN0eWxlUnVsZUdyb3VwKGNvbnN0IFN0eWxlUnVsZUdyb3VwJiBv
KQogICAgICAgICBtX2NoaWxkUnVsZXMudW5jaGVja2VkQXBwZW5kKG8ubV9jaGlsZFJ1bGVzW2ld
LT5jb3B5KCkpOwogfQogCi12b2lkIFN0eWxlUnVsZUdyb3VwOjp3cmFwcGVySW5zZXJ0UnVsZSh1
bnNpZ25lZCBpbmRleCwgUGFzc1JlZjxTdHlsZVJ1bGVCYXNlPiBydWxlKQordm9pZCBTdHlsZVJ1
bGVHcm91cDo6d3JhcHBlckluc2VydFJ1bGUodW5zaWduZWQgaW5kZXgsIFJlZjxTdHlsZVJ1bGVC
YXNlPiBydWxlKQogewogICAgIG1fY2hpbGRSdWxlcy5pbnNlcnQoaW5kZXgsIFdURjo6bW92ZShy
dWxlKSk7CiB9CkBAIC0zNzEsNyArMzcxLDcgQEAgU3R5bGVSdWxlUmVnaW9uOjpTdHlsZVJ1bGVS
ZWdpb24oY29uc3QgU3R5bGVSdWxlUmVnaW9uJiBvKQogCiAKICNpZiBFTkFCTEUoQ1NTX0RFVklD
RV9BREFQVEFUSU9OKQotU3R5bGVSdWxlVmlld3BvcnQ6OlN0eWxlUnVsZVZpZXdwb3J0KFBhc3NS
ZWY8U3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKQorU3R5bGVSdWxlVmlld3BvcnQ6OlN0eWxl
UnVsZVZpZXdwb3J0KFJlZjxTdHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKICAgICA6IFN0
eWxlUnVsZUJhc2UoVmlld3BvcnQsIDApCiAgICAgLCBtX3Byb3BlcnRpZXMoV1RGOjptb3ZlKHBy
b3BlcnRpZXMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDBjYWU3YmEuLmVlYmUzYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgYm9vbCBpc0ltcG9ydFJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSW1wb3J0
OyB9CiAKLSAgICBQYXNzUmVmPFN0eWxlUnVsZUJhc2U+IGNvcHkoKSBjb25zdDsKKyAgICBSZWY8
U3R5bGVSdWxlQmFzZT4gY29weSgpIGNvbnN0OwogCiAgICAgaW50IHNvdXJjZUxpbmUoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUxpbmU7IH0KIApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6
CiBjbGFzcyBTdHlsZVJ1bGUgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVSdWxlPiBj
cmVhdGUoaW50IHNvdXJjZUxpbmUsIFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVz
KQorICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlPiBjcmVhdGUoaW50IHNvdXJjZUxpbmUsIFJlZjxT
dHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZVJ1bGUoc291cmNlTGluZSwgV1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7CiAg
ICAgfQpAQCAtMTE4LDE3ICsxMTgsMTcgQEAgcHVibGljOgogICAgIHZvaWQgd3JhcHBlckFkb3B0
U2VsZWN0b3JMaXN0KENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0
ID0gV1RGOjptb3ZlKHNlbGVjdG9ycyk7IH0KICAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JB
cnJheShDU1NTZWxlY3Rvciogc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0
b3JBcnJheShzZWxlY3RvcnMpOyB9CiAKLSAgICBQYXNzUmVmPFN0eWxlUnVsZT4gY29weSgpIGNv
bnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlKCp0aGlzKSk7IH0KKyAgICBSZWY8
U3R5bGVSdWxlPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGUo
KnRoaXMpKTsgfQogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBzcGxpdEludG9NdWx0
aXBsZVJ1bGVzV2l0aE1heGltdW1TZWxlY3RvckNvbXBvbmVudENvdW50KHVuc2lnbmVkKSBjb25z
dDsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBhdmVyYWdlU2l6ZUluQnl0ZXMoKTsKIAogcHJpdmF0
ZToKLSAgICBTdHlsZVJ1bGUoaW50IHNvdXJjZUxpbmUsIFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVz
Pik7CisgICAgU3R5bGVSdWxlKGludCBzb3VyY2VMaW5lLCBSZWY8U3R5bGVQcm9wZXJ0aWVzPik7
CiAgICAgU3R5bGVSdWxlKGNvbnN0IFN0eWxlUnVsZSYpOwogCi0gICAgc3RhdGljIFBhc3NSZWY8
U3R5bGVSdWxlPiBjcmVhdGUoaW50IHNvdXJjZUxpbmUsIGNvbnN0IFZlY3Rvcjxjb25zdCBDU1NT
ZWxlY3Rvcio+JiwgUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+KTsKKyAgICBzdGF0aWMgUmVmPFN0
eWxlUnVsZT4gY3JlYXRlKGludCBzb3VyY2VMaW5lLCBjb25zdCBWZWN0b3I8Y29uc3QgQ1NTU2Vs
ZWN0b3IqPiYsIFJlZjxTdHlsZVByb3BlcnRpZXM+KTsKIAogICAgIFJlZjxTdHlsZVByb3BlcnRp
ZXM+IG1fcHJvcGVydGllczsKICAgICBDU1NTZWxlY3Rvckxpc3QgbV9zZWxlY3Rvckxpc3Q7CkBA
IC0xNDIsMTggKzE0MiwxOCBAQCBpbmxpbmUgY29uc3QgU3R5bGVSdWxlKiB0b1N0eWxlUnVsZShj
b25zdCBTdHlsZVJ1bGVCYXNlKiBydWxlKQogCiBjbGFzcyBTdHlsZVJ1bGVGb250RmFjZSA6IHB1
YmxpYyBTdHlsZVJ1bGVCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1
bGVGb250RmFjZT4gY3JlYXRlKFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUZvbnRGYWNlKFdURjo6bW92ZShwcm9wZXJ0
aWVzKSkpOyB9CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVGb250RmFjZT4gY3JlYXRlKFJlZjxT
dHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVJ1bGVGb250RmFjZShXVEY6Om1vdmUocHJvcGVydGllcykpKTsgfQogICAgIAogICAgIH5TdHls
ZVJ1bGVGb250RmFjZSgpOwogCiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzOyB9CiAgICAgTXV0YWJsZVN0eWxlUHJvcGVy
dGllcyYgbXV0YWJsZVByb3BlcnRpZXMoKTsKIAotICAgIFBhc3NSZWY8U3R5bGVSdWxlRm9udEZh
Y2U+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUZvbnRGYWNl
KCp0aGlzKSk7IH0KKyAgICBSZWY8U3R5bGVSdWxlRm9udEZhY2U+IGNvcHkoKSBjb25zdCB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUZvbnRGYWNlKCp0aGlzKSk7IH0KIAogCiBwcml2
YXRlOgotICAgIFN0eWxlUnVsZUZvbnRGYWNlKFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVzPik7Cisg
ICAgZXhwbGljaXQgU3R5bGVSdWxlRm9udEZhY2UoUmVmPFN0eWxlUHJvcGVydGllcz4mJik7CiAg
ICAgU3R5bGVSdWxlRm9udEZhY2UoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UmKTsKIAogICAgIFJl
ZjxTdHlsZVByb3BlcnRpZXM+IG1fcHJvcGVydGllczsKQEAgLTE2MSw3ICsxNjEsNyBAQCBwcml2
YXRlOgogCiBjbGFzcyBTdHlsZVJ1bGVQYWdlIDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlUnVsZVBhZ2U+IGNyZWF0ZShQYXNzUmVmPFN0
eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1
bGVQYWdlKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkpOyB9CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1
bGVQYWdlPiBjcmVhdGUoUmVmPFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVBhZ2UoV1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7IH0K
IAogICAgIH5TdHlsZVJ1bGVQYWdlKCk7CiAKQEAgLTE3MiwxMCArMTcyLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRT
ZWxlY3RvclZlY3RvcihzZWxlY3RvcnMpOyB9CiAgICAgdm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rv
ckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QgPSBXVEY6
Om1vdmUoc2VsZWN0b3JzKTsgfQogCi0gICAgUGFzc1JlZjxTdHlsZVJ1bGVQYWdlPiBjb3B5KCkg
Y29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVQYWdlKCp0aGlzKSk7IH0KKyAg
ICBSZWY8U3R5bGVSdWxlUGFnZT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3R5bGVSdWxlUGFnZSgqdGhpcykpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3R5bGVSdWxlUGFnZShQ
YXNzUmVmPFN0eWxlUHJvcGVydGllcz4pOworICAgIGV4cGxpY2l0IFN0eWxlUnVsZVBhZ2UoUmVm
PFN0eWxlUHJvcGVydGllcz4mJik7CiAgICAgU3R5bGVSdWxlUGFnZShjb25zdCBTdHlsZVJ1bGVQ
YWdlJik7CiAgICAgCiAgICAgUmVmPFN0eWxlUHJvcGVydGllcz4gbV9wcm9wZXJ0aWVzOwpAQCAt
MTg2LDcgKzE4Niw3IEBAIGNsYXNzIFN0eWxlUnVsZUdyb3VwIDogcHVibGljIFN0eWxlUnVsZUJh
c2UgewogcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBj
aGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZFJ1bGVzOyB9CiAgICAgCi0gICAgdm9p
ZCB3cmFwcGVySW5zZXJ0UnVsZSh1bnNpZ25lZCwgUGFzc1JlZjxTdHlsZVJ1bGVCYXNlPik7Cisg
ICAgdm9pZCB3cmFwcGVySW5zZXJ0UnVsZSh1bnNpZ25lZCwgUmVmPFN0eWxlUnVsZUJhc2U+KTsK
ICAgICB2b2lkIHdyYXBwZXJSZW1vdmVSdWxlKHVuc2lnbmVkKTsKICAgICAKIHByb3RlY3RlZDoK
QEAgLTE5OSwxNCArMTk5LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0eWxlUnVsZU1lZGlhIDog
cHVibGljIFN0eWxlUnVsZUdyb3VwIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHls
ZVJ1bGVNZWRpYT4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEsIFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQorICAgIHN0YXRpYyBSZWY8U3R5
bGVSdWxlTWVkaWE+IGNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhLCBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZU1lZGlhKG1lZGlhLCBhZG9wdFJ1bGVzKSk7CiAg
ICAgfQogCiAgICAgTWVkaWFRdWVyeVNldCogbWVkaWFRdWVyaWVzKCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYVF1ZXJpZXMuZ2V0KCk7IH0KIAotICAgIFBhc3NSZWY8U3R5bGVSdWxlTWVkaWE+IGNv
cHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZU1lZGlhKCp0aGlzKSk7
IH0KKyAgICBSZWY8U3R5bGVSdWxlTWVkaWE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlUnVsZU1lZGlhKCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKICAgICBTdHlsZVJ1
bGVNZWRpYShQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+LCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVs
ZUJhc2U+PiYgYWRvcHRSdWxlcyk7CkBAIC0yMTcsMTQgKzIxNywxNCBAQCBwcml2YXRlOgogCiBj
bGFzcyBTdHlsZVJ1bGVTdXBwb3J0cyA6IHB1YmxpYyBTdHlsZVJ1bGVHcm91cCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVSdWxlU3VwcG9ydHM+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIGNvbmRpdGlvblRleHQsIGJvb2wgY29uZGl0aW9uSXNTdXBwb3J0ZWQsIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQorICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxl
U3VwcG9ydHM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbmRpdGlvblRleHQsIGJvb2wgY29uZGl0
aW9uSXNTdXBwb3J0ZWQsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVz
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlU3VwcG9ydHMo
Y29uZGl0aW9uVGV4dCwgY29uZGl0aW9uSXNTdXBwb3J0ZWQsIGFkb3B0UnVsZXMpKTsKICAgICB9
CiAKICAgICBTdHJpbmcgY29uZGl0aW9uVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZGl0aW9u
VGV4dDsgfQogICAgIGJvb2wgY29uZGl0aW9uSXNTdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBt
X2NvbmRpdGlvbklzU3VwcG9ydGVkOyB9Ci0gICAgUGFzc1JlZjxTdHlsZVJ1bGVTdXBwb3J0cz4g
Y29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlU3VwcG9ydHMoKnRo
aXMpKTsgfQorICAgIFJlZjxTdHlsZVJ1bGVTdXBwb3J0cz4gY29weSgpIGNvbnN0IHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlU3VwcG9ydHMoKnRoaXMpKTsgfQogCiBwcml2YXRlOgog
ICAgIFN0eWxlUnVsZVN1cHBvcnRzKGNvbnN0IFN0cmluZyYgY29uZGl0aW9uVGV4dCwgYm9vbCBj
b25kaXRpb25Jc1N1cHBvcnRlZCwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0
UnVsZXMpOwpAQCAtMjM2LDE0ICsyMzYsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgU3R5bGVSdWxl
UmVnaW9uIDogcHVibGljIFN0eWxlUnVsZUdyb3VwIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZjxTdHlsZVJ1bGVSZWdpb24+IGNyZWF0ZShWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1Bh
cnNlclNlbGVjdG9yPj4qIHNlbGVjdG9ycywgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4m
IGFkb3B0UnVsZXMpCisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVSZWdpb24+IGNyZWF0ZShWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHNlbGVjdG9ycywgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVSZWdpb24oc2VsZWN0b3JzLCBhZG9wdFJ1bGVzKSk7
CiAgICAgfQogCiAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSBjb25z
dCB7IHJldHVybiBtX3NlbGVjdG9yTGlzdDsgfQogCi0gICAgUGFzc1JlZjxTdHlsZVJ1bGVSZWdp
b24+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVJlZ2lvbigq
dGhpcykpOyB9CisgICAgUmVmPFN0eWxlUnVsZVJlZ2lvbj4gY29weSgpIGNvbnN0IHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlUmVnaW9uKCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKICAg
ICBTdHlsZVJ1bGVSZWdpb24oVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4+KiwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOwpAQCAtMjU1
LDE3ICsyNTUsMTcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9O
KQogY2xhc3MgU3R5bGVSdWxlVmlld3BvcnQgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVSdWxlVmlld3BvcnQ+IGNyZWF0ZShQYXNzUmVm
PFN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVJ1bGVWaWV3cG9ydChXVEY6Om1vdmUocHJvcGVydGllcykpKTsgfQorICAgIHN0YXRpYyBSZWY8
U3R5bGVSdWxlVmlld3BvcnQ+IGNyZWF0ZShSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRp
ZXMpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlVmlld3BvcnQoV1RGOjptb3ZlKHBy
b3BlcnRpZXMpKSk7IH0KIAogICAgIH5TdHlsZVJ1bGVWaWV3cG9ydCgpOwogCiAgICAgY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVz
LmdldCgpOyB9CiAgICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMo
KTsKIAotICAgIFBhc3NSZWY8U3R5bGVSdWxlVmlld3BvcnQ+IGNvcHkoKSBjb25zdCB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVZpZXdwb3J0KCp0aGlzKSk7IH0KKyAgICBSZWY8U3R5
bGVSdWxlVmlld3BvcnQ+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
UnVsZVZpZXdwb3J0KCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKLSAgICBTdHlsZVJ1bGVWaWV3cG9y
dChQYXNzUmVmPFN0eWxlUHJvcGVydGllcz4pOworICAgIGV4cGxpY2l0IFN0eWxlUnVsZVZpZXdw
b3J0KFJlZjxTdHlsZVByb3BlcnRpZXM+JiYpOwogICAgIFN0eWxlUnVsZVZpZXdwb3J0KGNvbnN0
IFN0eWxlUnVsZVZpZXdwb3J0Jik7CiAKICAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBtX3Byb3Bl
cnRpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCmluZGV4IGFlMTUxNDAu
LmQxNDAyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxTdHlsZVJ1bGVJbXBv
cnQ+IFN0eWxlUnVsZUltcG9ydDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaHJlZiwgUGFzc1JlZlB0
cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSkKK1JlZjxTdHlsZVJ1bGVJbXBvcnQ+IFN0eWxlUnVsZUlt
cG9ydDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaHJlZiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0
PiBtZWRpYSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVJbXBvcnQoaHJl
ZiwgbWVkaWEpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJ
bXBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaAppbmRleCAyOGZh
Y2U3Li5iYmE5MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1w
b3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oCkBAIC0zNSw3
ICszNSw3IEBAIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIGNsYXNzIFN0eWxlUnVsZUltcG9y
dCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1bGVJbXBvcnQ+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOworICAgIHN0YXRpYyBS
ZWY8U3R5bGVSdWxlSW1wb3J0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBocmVmLCBQYXNzUmVmUHRy
PE1lZGlhUXVlcnlTZXQ+KTsKIAogICAgIH5TdHlsZVJ1bGVJbXBvcnQoKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAppbmRleCA3Njk4YTAzLi42MmE5M2Q1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCkBAIC00MSwxNSArNDEsMTUg
QEAgY2xhc3MgU3R5bGVSdWxlSW1wb3J0OwogCiBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHMgOiBw
dWJsaWMgUmVmQ291bnRlZDxTdHlsZVNoZWV0Q29udGVudHM+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IGNyZWF0ZShjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0ID0gQ1NTUGFyc2VyQ29udGV4dChDU1NTdHJpY3RNb2RlKSkKKyAgICBzdGF0
aWMgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gY3JlYXRlKGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQgPSBDU1NQYXJzZXJDb250ZXh0KENTU1N0cmljdE1vZGUpKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGVldENvbnRlbnRzKDAsIFN0cmluZygpLCBj
b250ZXh0KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGVldENvbnRlbnRzKDAs
IG9yaWdpbmFsVVJMLCBjb250ZXh0KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxl
U2hlZXRDb250ZW50cz4gY3JlYXRlKFN0eWxlUnVsZUltcG9ydCogb3duZXJSdWxlLCBjb25zdCBT
dHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorICAg
IHN0YXRpYyBSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBjcmVhdGUoU3R5bGVSdWxlSW1wb3J0KiBv
d25lclJ1bGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNo
ZWV0Q29udGVudHMob3duZXJSdWxlLCBvcmlnaW5hbFVSTCwgY29udGV4dCkpOwogICAgIH0KQEAg
LTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3cmFwcGVySW5zZXJ0UnVsZShQYXNz
UmVmUHRyPFN0eWxlUnVsZUJhc2U+LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgdm9pZCB3cmFwcGVy
RGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCk7CiAKLSAgICBQYXNzUmVmPFN0eWxlU2hlZXRDb250
ZW50cz4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGVldENvbnRl
bnRzKCp0aGlzKSk7IH0KKyAgICBSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBjb3B5KCkgY29uc3Qg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNoZWV0Q29udGVudHMoKnRoaXMpKTsgfQogCiAg
ICAgdm9pZCByZWdpc3RlckNsaWVudChDU1NTdHlsZVNoZWV0Kik7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyQ2xpZW50KENTU1N0eWxlU2hlZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0Zp
bHRlclZhbHVlLmgKaW5kZXggZGFmM2FmYi4uOThmZjNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU0ZpbHRlclZhbHVlLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgICAg
ICBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uCiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVm
PFdlYktpdENTU0ZpbHRlclZhbHVlPiBjcmVhdGUoRmlsdGVyT3BlcmF0aW9uVHlwZSB0eXBlKQor
ICAgIHN0YXRpYyBSZWY8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IGNyZWF0ZShGaWx0ZXJPcGVyYXRp
b25UeXBlIHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRD
U1NGaWx0ZXJWYWx1ZSh0eXBlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1Jlc291cmNlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NSZXNvdXJjZVZhbHVlLmgKaW5kZXggNDU3N2M0OS4uMjA5ODNkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Jlc291cmNlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZSA6IHB1YmxpYyBD
U1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8V2ViS2l0Q1NTUmVzb3VyY2VW
YWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlc291cmNlVmFsdWUpCisgICAgc3Rh
dGljIFJlZjxXZWJLaXRDU1NSZXNvdXJjZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gcmVzb3VyY2VWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YktpdENTU1Jlc291cmNlVmFsdWUocmVzb3VyY2VWYWx1ZSkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKaW5kZXggOWRlYzk1Ni4uYzFjOTFj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKQEAg
LTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlv
bgogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZT4g
Y3JlYXRlKFRyYW5zZm9ybU9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlPiBjcmVhdGUoVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSB0eXBlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUodHlwZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5v
ZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCmluZGV4IDdlOTIz
ZWUuLmQ1MjFjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBDb250YWluZXJOb2RlOwogCiBjbGFzcyBFbXB0eU5vZGVMaXN0IGZpbmFsIDog
cHVibGljIE5vZGVMaXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxFbXB0eU5vZGVM
aXN0PiBjcmVhdGUoTm9kZSYgb3duZXIpCisgICAgc3RhdGljIFJlZjxFbXB0eU5vZGVMaXN0PiBj
cmVhdGUoTm9kZSYgb3duZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBF
bXB0eU5vZGVMaXN0KG93bmVyKSk7CiAgICAgfQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgog
CiBjbGFzcyBDaGlsZE5vZGVMaXN0IGZpbmFsIDogcHVibGljIE5vZGVMaXN0IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZjxDaGlsZE5vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYg
cGFyZW50KQorICAgIHN0YXRpYyBSZWY8Q2hpbGROb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5v
ZGUmIHBhcmVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENoaWxkTm9k
ZUxpc3QocGFyZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Ns
YXNzTm9kZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuY3BwCmlu
ZGV4IGQyNDMzNmEuLjBkMDE4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFz
c05vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmPENsYXNz
Tm9kZUxpc3Q+IENsYXNzTm9kZUxpc3Q6OmNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWVzKQorUmVmPENsYXNzTm9kZUxpc3Q+IENsYXNz
Tm9kZUxpc3Q6OmNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBjbGFzc05hbWVzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENsYXNzTm9kZUxp
c3Qocm9vdE5vZGUsIGNsYXNzTmFtZXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DbGFzc05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5o
CmluZGV4IDkzMzI2MjMuLmJlODg4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
bGFzc05vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuaApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENsYXNzTm9kZUxp
c3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PENsYXNzTm9kZUxpc3Q+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDbGFzc05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVy
Tm9kZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lcyk7CisgICAgc3RhdGljIFJlZjxD
bGFzc05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYsIGNvbnN0IEF0b21pY1N0cmluZyYg
Y2xhc3NOYW1lcyk7CiAKICAgICB2aXJ0dWFsIH5DbGFzc05vZGVMaXN0KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IDI5ZTBjZDUuLjYzMzczN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtMTkwMyw3ICsxOTAzLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKERvY3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3MKICAgICBt
X2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyA9IG9sZElnbm9yZTsKIH0KIAotUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gRG9jdW1lbnQ6OnN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hl
ZXRzKEVsZW1lbnQqIGVsZW1lbnQpCitSZWY8UmVuZGVyU3R5bGU+IERvY3VtZW50OjpzdHlsZUZv
ckVsZW1lbnRJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyhFbGVtZW50KiBlbGVtZW50KQogewog
ICAgIEFTU0VSVF9BUkcoZWxlbWVudCwgJmVsZW1lbnQtPmRvY3VtZW50KCkgPT0gdGhpcyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTRhNDM4Ni4uNWViMDc0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKQEAgLTYwNCw3ICs2MDQsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyhSdW5Qb3N0TGF5
b3V0VGFza3MgPSBSdW5Qb3N0TGF5b3V0VGFza3M6OkFzeW5jaHJvbm91c2x5KTsKIAotICAgIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hl
ZXRzKEVsZW1lbnQqKTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudElnbm9y
aW5nUGVuZGluZ1N0eWxlc2hlZXRzKEVsZW1lbnQqKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiBwYWdlIGJveCAobWFyZ2luIGJveGVzIGFuZCBwYWdlIGJvcmRlcnMpIGlzIHZpc2libGUuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmNwcAppbmRl
eCAyZjBlZTAzLi5iNWY3MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTaGFyZWRPYmplY3RQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRT
aGFyZWRPYmplY3RQb29sLmNwcApAQCAtNDMsNyArNDMsNyBAQCBpbmxpbmUgYm9vbCBoYXNTYW1l
QXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcywgU2hhcmVhYmxl
RWxlbQogICAgIHJldHVybiAhbWVtY21wKGF0dHJpYnV0ZXMuZGF0YSgpLCBlbGVtZW50RGF0YS5t
X2F0dHJpYnV0ZUFycmF5LCBhdHRyaWJ1dGVzLnNpemUoKSAqIHNpemVvZihBdHRyaWJ1dGUpKTsK
IH0KIAotUGFzc1JlZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gRG9jdW1lbnRTaGFyZWRPYmplY3RQ
b29sOjpjYWNoZWRTaGFyZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVzKGNvbnN0IFZlY3Rv
cjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQorUmVmPFNoYXJlYWJsZUVsZW1lbnREYXRhPiBEb2N1
bWVudFNoYXJlZE9iamVjdFBvb2w6OmNhY2hlZFNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJp
YnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJU
KCFhdHRyaWJ1dGVzLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFNoYXJlZE9iamVjdFBvb2wuaAppbmRleCBjNmY3YjJmLi5hMDc0Njc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oCkBAIC0zOSw3ICszOSw3IEBA
IGNsYXNzIFNoYXJlYWJsZUVsZW1lbnREYXRhOwogCiBjbGFzcyBEb2N1bWVudFNoYXJlZE9iamVj
dFBvb2wgewogcHVibGljOgotICAgIFBhc3NSZWY8U2hhcmVhYmxlRWxlbWVudERhdGE+IGNhY2hl
ZFNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0
ZT4mKTsKKyAgICBSZWY8U2hhcmVhYmxlRWxlbWVudERhdGE+IGNhY2hlZFNoYXJlYWJsZUVsZW1l
bnREYXRhV2l0aEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsKIAogcHJpdmF0
ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxTaGFyZWFibGVFbGVtZW50
RGF0YT4sIEFscmVhZHlIYXNoZWQ+IFNoYXJlYWJsZUVsZW1lbnREYXRhQ2FjaGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKaW5k
ZXggMDY2MjQ4NC4uZTI5YmI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcApAQCAtMTc1LDE0ICsxNzUsMTQgQEAgdm9pZCBE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0
Q2FjaGUoKQogICAgIG1fZG9jdW1lbnQuc3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNT
dHlsZSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkQXV0aG9y
U2hlZXQoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IGF1dGhvclNoZWV0KQordm9pZCBEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphZGRBdXRob3JTaGVldChSZWY8U3R5bGVTaGVldENv
bnRlbnRzPiYmIGF1dGhvclNoZWV0KQogewogICAgIEFTU0VSVCghYXV0aG9yU2hlZXQuZ2V0KCku
aXNVc2VyU3R5bGVTaGVldCgpKTsKICAgICBtX2F1dGhvclN0eWxlU2hlZXRzLmFwcGVuZChDU1NT
dHlsZVNoZWV0OjpjcmVhdGUoV1RGOjptb3ZlKGF1dGhvclNoZWV0KSwgJm1fZG9jdW1lbnQpKTsK
ICAgICBtX2RvY3VtZW50LnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRl
bHkpOwogfQogCi12b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZFVzZXJTaGVl
dChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gdXNlclNoZWV0KQordm9pZCBEb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uOjphZGRVc2VyU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4m
JiB1c2VyU2hlZXQpCiB7CiAgICAgQVNTRVJUKHVzZXJTaGVldC5nZXQoKS5pc1VzZXJTdHlsZVNo
ZWV0KCkpOwogICAgIG1fdXNlclN0eWxlU2hlZXRzLmFwcGVuZChDU1NTdHlsZVNoZWV0OjpjcmVh
dGUoV1RGOjptb3ZlKHVzZXJTaGVldCksICZtX2RvY3VtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaAppbmRleCAzZDIzMjZkLi5l
ZWRlN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uLmgKQEAgLTY3LDggKzY3LDggQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0
ZUluamVjdGVkU3R5bGVTaGVldENhY2hlKCk7CiAgICAgdm9pZCB1cGRhdGVJbmplY3RlZFN0eWxl
U2hlZXRDYWNoZSgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBdXRob3JT
aGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gYXV0aG9yU2hlZXQpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYWRkVXNlclNoZWV0KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiB1
c2VyU2hlZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXV0aG9yU2hlZXQoUmVmPFN0
eWxlU2hlZXRDb250ZW50cz4mJiBhdXRob3JTaGVldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhZGRVc2VyU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiB1c2VyU2hlZXQpOwogCiAg
ICAgZW51bSBVcGRhdGVGbGFnIHsgTm9VcGRhdGUgPSAwLCBPcHRpbWl6ZWRVcGRhdGUsIEZ1bGxV
cGRhdGUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDhiYWQyMjIuLjk4Nzk0MzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEzMjYsNyArMTMyNiw3IEBAIGJvb2wgRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIHN0
eWxlLmRpc3BsYXkoKSAhPSBOT05FOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNy
ZWF0ZUZvcigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRl
eCA3ZTgxMjMxLi5hZDQ2MDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTMxMSw3ICszMTEsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGxhenlSZWF0dGFjaCgpOwogCi0gICAgdmlydHVhbCBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVy
U3R5bGU+KTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2hh
ZG93Um9vdCogc2hhZG93Um9vdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5jcHAK
aW5kZXggMDE2MjU2NS4uZmFkMDMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuY3BwCkBA
IC02MywxMyArNjMsMTMgQEAgc3RhdGljIHNpemVfdCBzaXplRm9yU2hhcmVhYmxlRWxlbWVudERh
dGFXaXRoQXR0cmlidXRlQ291bnQodW5zaWduZWQgY291bnQpCiAgICAgcmV0dXJuIHNpemVvZihT
aGFyZWFibGVFbGVtZW50RGF0YSkgKyBzaXplb2YoQXR0cmlidXRlKSAqIGNvdW50OwogfQogCi1Q
YXNzUmVmPFNoYXJlYWJsZUVsZW1lbnREYXRhPiBTaGFyZWFibGVFbGVtZW50RGF0YTo6Y3JlYXRl
V2l0aEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCitSZWY8
U2hhcmVhYmxlRWxlbWVudERhdGE+IFNoYXJlYWJsZUVsZW1lbnREYXRhOjpjcmVhdGVXaXRoQXR0
cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcykKIHsKICAgICB2b2lk
KiBzbG90ID0gV1RGOjpmYXN0TWFsbG9jKHNpemVGb3JTaGFyZWFibGVFbGVtZW50RGF0YVdpdGhB
dHRyaWJ1dGVDb3VudChhdHRyaWJ1dGVzLnNpemUoKSkpOwogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IChOb3ROdWxsLCBzbG90KSBTaGFyZWFibGVFbGVtZW50RGF0YShhdHRyaWJ1dGVzKSk7CiB9
CiAKLVBhc3NSZWY8VW5pcXVlRWxlbWVudERhdGE+IFVuaXF1ZUVsZW1lbnREYXRhOjpjcmVhdGUo
KQorUmVmPFVuaXF1ZUVsZW1lbnREYXRhPiBVbmlxdWVFbGVtZW50RGF0YTo6Y3JlYXRlKCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVbmlxdWVFbGVtZW50RGF0YSk7CiB9CkBAIC0xNDgs
MTQgKzE0OCwxNCBAQCBVbmlxdWVFbGVtZW50RGF0YTo6VW5pcXVlRWxlbWVudERhdGEoY29uc3Qg
U2hhcmVhYmxlRWxlbWVudERhdGEmIG90aGVyKQogICAgICAgICBtX2F0dHJpYnV0ZVZlY3Rvci51
bmNoZWNrZWRBcHBlbmQob3RoZXIubV9hdHRyaWJ1dGVBcnJheVtpXSk7CiB9CiAKLVBhc3NSZWY8
VW5pcXVlRWxlbWVudERhdGE+IEVsZW1lbnREYXRhOjptYWtlVW5pcXVlQ29weSgpIGNvbnN0CitS
ZWY8VW5pcXVlRWxlbWVudERhdGE+IEVsZW1lbnREYXRhOjptYWtlVW5pcXVlQ29weSgpIGNvbnN0
CiB7CiAgICAgaWYgKGlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVu
aXF1ZUVsZW1lbnREYXRhKHN0YXRpY19jYXN0PGNvbnN0IFVuaXF1ZUVsZW1lbnREYXRhJj4oKnRo
aXMpKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVW5pcXVlRWxlbWVudERhdGEoc3RhdGlj
X2Nhc3Q8Y29uc3QgU2hhcmVhYmxlRWxlbWVudERhdGEmPigqdGhpcykpKTsKIH0KIAotUGFzc1Jl
ZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gVW5pcXVlRWxlbWVudERhdGE6Om1ha2VTaGFyZWFibGVD
b3B5KCkgY29uc3QKK1JlZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gVW5pcXVlRWxlbWVudERhdGE6
Om1ha2VTaGFyZWFibGVDb3B5KCkgY29uc3QKIHsKICAgICB2b2lkKiBzbG90ID0gV1RGOjpmYXN0
TWFsbG9jKHNpemVGb3JTaGFyZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVDb3VudChtX2F0
dHJpYnV0ZVZlY3Rvci5zaXplKCkpKTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVs
bCwgc2xvdCkgU2hhcmVhYmxlRWxlbWVudERhdGEoKnRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRE
YXRhLmgKaW5kZXggNDQwMGI4My4uMDcxMDBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmgK
QEAgLTE3OSw3ICsxNzksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IEF0dHJpYnV0ZSogZmluZEF0
dHJpYnV0ZUJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZSkgY29uc3Q7CiAgICAgdW5zaWduZWQgZmluZEF0dHJpYnV0ZUluZGV4QnlO
YW1lU2xvd0Nhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0
dHJpYnV0ZUNhc2UpIGNvbnN0OwogCi0gICAgUGFzc1JlZjxVbmlxdWVFbGVtZW50RGF0YT4gbWFr
ZVVuaXF1ZUNvcHkoKSBjb25zdDsKKyAgICBSZWY8VW5pcXVlRWxlbWVudERhdGE+IG1ha2VVbmlx
dWVDb3B5KCkgY29uc3Q7CiB9OwogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTE4OSw3ICsxODks
NyBAQCBwcml2YXRlOgogCiBjbGFzcyBTaGFyZWFibGVFbGVtZW50RGF0YSA6IHB1YmxpYyBFbGVt
ZW50RGF0YSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U2hhcmVhYmxlRWxlbWVudERh
dGE+IGNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CisgICAg
c3RhdGljIFJlZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gY3JlYXRlV2l0aEF0dHJpYnV0ZXMoY29u
c3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsKIAogICAgIGV4cGxpY2l0IFNoYXJlYWJsZUVsZW1lbnRE
YXRhKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CiAgICAgZXhwbGljaXQgU2hhcmVhYmxlRWxl
bWVudERhdGEoY29uc3QgVW5pcXVlRWxlbWVudERhdGEmKTsKQEAgLTIwNiw4ICsyMDYsOCBAQCBw
dWJsaWM6CiAKIGNsYXNzIFVuaXF1ZUVsZW1lbnREYXRhIDogcHVibGljIEVsZW1lbnREYXRhIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxVbmlxdWVFbGVtZW50RGF0YT4gY3JlYXRlKCk7
Ci0gICAgUGFzc1JlZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gbWFrZVNoYXJlYWJsZUNvcHkoKSBj
b25zdDsKKyAgICBzdGF0aWMgUmVmPFVuaXF1ZUVsZW1lbnREYXRhPiBjcmVhdGUoKTsKKyAgICBS
ZWY8U2hhcmVhYmxlRWxlbWVudERhdGE+IG1ha2VTaGFyZWFibGVDb3B5KCkgY29uc3Q7CiAKICAg
ICAvLyBUaGVzZSBmdW5jdGlvbnMgZG8gbm8gZXJyb3IvZHVwbGljYXRlIGNoZWNraW5nLgogICAg
IHZvaWQgYWRkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCA5ZDk4NzNhLi5mNzdk
MWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEF0dHJpYnV0ZU1hcChzdGQ6OnVuaXF1ZV9wdHI8TmFtZWRO
b2RlTWFwPiBhdHRyaWJ1dGVNYXApIHsgbV9hdHRyaWJ1dGVNYXAgPSBXVEY6Om1vdmUoYXR0cmli
dXRlTWFwKTsgfQogCiAgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbXB1dGVkU3R5bGUuZ2V0KCk7IH0KLSAgICB2b2lkIHNldENvbXB1dGVkU3R5bGUo
UGFzc1JlZjxSZW5kZXJTdHlsZT4gY29tcHV0ZWRTdHlsZSkgeyBtX2NvbXB1dGVkU3R5bGUgPSBX
VEY6Om1vdmUoY29tcHV0ZWRTdHlsZSk7IH0KKyAgICB2b2lkIHNldENvbXB1dGVkU3R5bGUoUmVm
PFJlbmRlclN0eWxlPiYmIGNvbXB1dGVkU3R5bGUpIHsgbV9jb21wdXRlZFN0eWxlID0gV1RGOjpt
b3ZlKGNvbXB1dGVkU3R5bGUpOyB9CiAKICAgICBDbGFzc0xpc3QqIGNsYXNzTGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xhc3NMaXN0LmdldCgpOyB9CiAgICAgdm9pZCBzZXRDbGFzc0xpc3Qoc3Rk
Ojp1bmlxdWVfcHRyPENsYXNzTGlzdD4gY2xhc3NMaXN0KSB7IG1fY2xhc3NMaXN0ID0gV1RGOjpt
b3ZlKGNsYXNzTGlzdCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9k
ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaAppbmRleCAyMGRmMjJh
Li45ZjljZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE5vZGVMaXN0IHdoaWNoIGxpc3RzIGFsbCBOb2RlcyBp
biBhIEVsZW1lbnQgd2l0aCBhIGdpdmVuICJuYW1lIiBhdHRyaWJ1dGUKIGNsYXNzIE5hbWVOb2Rl
TGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxpc3Q8TmFtZU5vZGVMaXN0PiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8TmFtZU5vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMgUmVm
PE5hbWVOb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYW1l
Tm9kZUxpc3Qocm9vdE5vZGUsIG5hbWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAKaW5kZXggNjg2Nzg0MC4uNmJkNzY1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBXZWJL
aXROYW1lZEZsb3cqIE5hbWVkRmxvd0NvbGxlY3Rpb246OmZsb3dCeU5hbWUoY29uc3QgU3RyaW5n
JiBmbG93TmFtZSkKICAgICByZXR1cm4gKml0OwogfQogCi1QYXNzUmVmPFdlYktpdE5hbWVkRmxv
dz4gTmFtZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxvd1dpdGhOYW1lKGNvbnN0IFN0cmluZyYg
Zmxvd05hbWUpCitSZWY8V2ViS2l0TmFtZWRGbG93PiBOYW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1
cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZSkKIHsKICAgICBOYW1lZEZsb3dT
ZXQ6Oml0ZXJhdG9yIGl0ID0gbV9uYW1lZEZsb3dzLmZpbmQ8U3RyaW5nLCBOYW1lZEZsb3dIYXNo
VHJhbnNsYXRvcj4oZmxvd05hbWUpOwogICAgIGlmIChpdCAhPSBtX25hbWVkRmxvd3MuZW5kKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oCmluZGV4IGUxMjYzZGQu
LjhlZjJmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaApAQCAt
NDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxv
dz4+IG5hbWVkRmxvd3MoKTsKICAgICBXZWJLaXROYW1lZEZsb3cqIGZsb3dCeU5hbWUoY29uc3Qg
U3RyaW5nJik7Ci0gICAgUGFzc1JlZjxXZWJLaXROYW1lZEZsb3c+IGVuc3VyZUZsb3dXaXRoTmFt
ZShjb25zdCBTdHJpbmcmKTsKKyAgICBSZWY8V2ViS2l0TmFtZWRGbG93PiBlbnN1cmVGbG93V2l0
aE5hbWUoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGRpc2NhcmROYW1lZEZsb3coV2ViS2l0
TmFtZWRGbG93Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA5NzZhNDY0Li5i
MTY1MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIG1fY2hpbGROb2RlTGlzdC0+aW52YWxpZGF0ZUNhY2hlKCk7CiAg
ICAgfQogCi0gICAgUGFzc1JlZjxDaGlsZE5vZGVMaXN0PiBlbnN1cmVDaGlsZE5vZGVMaXN0KENv
bnRhaW5lck5vZGUmIG5vZGUpCisgICAgUmVmPENoaWxkTm9kZUxpc3Q+IGVuc3VyZUNoaWxkTm9k
ZUxpc3QoQ29udGFpbmVyTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9lbXB0
eUNoaWxkTm9kZUxpc3QpOwogICAgICAgICBpZiAobV9jaGlsZE5vZGVMaXN0KQpAQCAtODcsNyAr
ODcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY2hpbGROb2RlTGlzdCA9IG51bGxwdHI7CiAgICAg
fQogCi0gICAgUGFzc1JlZjxFbXB0eU5vZGVMaXN0PiBlbnN1cmVFbXB0eUNoaWxkTm9kZUxpc3Qo
Tm9kZSYgbm9kZSkKKyAgICBSZWY8RW1wdHlOb2RlTGlzdD4gZW5zdXJlRW1wdHlDaGlsZE5vZGVM
aXN0KE5vZGUmIG5vZGUpCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fY2hpbGROb2RlTGlzdCk7
CiAgICAgICAgIGlmIChtX2VtcHR5Q2hpbGROb2RlTGlzdCkKQEAgLTExOSw3ICsxMTksNyBAQCBw
dWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIFRhZ05vZGVMaXN0Kj4g
VGFnTm9kZUxpc3RDYWNoZU5TOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
Q29udGFpbmVyVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIFBhc3NSZWY8VD4gYWRkQ2FjaGVXaXRo
QXRvbWljTmFtZShDb250YWluZXJUeXBlJiBjb250YWluZXIsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkKKyAgICBBTFdBWVNfSU5MSU5FIFJlZjxUPiBhZGRDYWNoZVdpdGhBdG9taWNOYW1lKENv
bnRhaW5lclR5cGUmIGNvbnRhaW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsK
ICAgICAgICAgTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBt
X2F0b21pY05hbWVDYWNoZXMuZmFzdEFkZChuYW1lZE5vZGVMaXN0S2V5PFQ+KG5hbWUpLCBudWxs
cHRyKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTEzMCw3ICsxMzAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJ
TkUgUGFzc1JlZjxUYWdOb2RlTGlzdD4gYWRkQ2FjaGVXaXRoUXVhbGlmaWVkTmFtZShDb250YWlu
ZXJOb2RlJiBub2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUpCisgICAgQUxXQVlTX0lOTElORSBSZWY8VGFnTm9kZUxpc3Q+
IGFkZENhY2hlV2l0aFF1YWxpZmllZE5hbWUoQ29udGFpbmVyTm9kZSYgbm9kZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQog
ICAgIHsKICAgICAgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG5h
bWVzcGFjZVVSSSk7CiAgICAgICAgIFRhZ05vZGVMaXN0Q2FjaGVOUzo6QWRkUmVzdWx0IHJlc3Vs
dCA9IG1fdGFnTm9kZUxpc3RDYWNoZU5TLmZhc3RBZGQobmFtZSwgbnVsbHB0cik7CkBAIC0xNDMs
NyArMTQzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIENvbnRhaW5lclR5cGU+Ci0gICAgQUxXQVlTX0lOTElORSBQYXNzUmVmPFQ+IGFkZENh
Y2hlZENvbGxlY3Rpb24oQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBDb2xsZWN0aW9uVHlwZSBj
b2xsZWN0aW9uVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorICAgIEFMV0FZU19JTkxJ
TkUgUmVmPFQ+IGFkZENhY2hlZENvbGxlY3Rpb24oQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBD
b2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQog
ICAgIHsKICAgICAgICAgQ29sbGVjdGlvbkNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9j
YWNoZWRDb2xsZWN0aW9ucy5mYXN0QWRkKG5hbWVkQ29sbGVjdGlvbktleShjb2xsZWN0aW9uVHlw
ZSwgbmFtZSksIG51bGxwdHIpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQpAQCAt
MTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBDb250YWluZXJUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxUPiBh
ZGRDYWNoZWRDb2xsZWN0aW9uKENvbnRhaW5lclR5cGUmIGNvbnRhaW5lciwgQ29sbGVjdGlvblR5
cGUgY29sbGVjdGlvblR5cGUpCisgICAgQUxXQVlTX0lOTElORSBSZWY8VD4gYWRkQ2FjaGVkQ29s
bGVjdGlvbihDb250YWluZXJUeXBlJiBjb250YWluZXIsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rp
b25UeXBlKQogICAgIHsKICAgICAgICAgQ29sbGVjdGlvbkNhY2hlTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9jYWNoZWRDb2xsZWN0aW9ucy5mYXN0QWRkKG5hbWVkQ29sbGVjdGlvbktleShjb2xs
ZWN0aW9uVHlwZSwgc3RhckF0b20pLCBudWxscHRyKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNO
ZXdFbnRyeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCA3YzJiY2YyLi42
NTBmNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEy
LDcgQEAgdm9pZCBQc2V1ZG9FbGVtZW50OjpkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKQog
ICAgICAgICAvLyBXZSBvbmx5IG1hbmFnZSB0aGUgc3R5bGUgZm9yIHRoZSBnZW5lcmF0ZWQgY29u
dGVudCB3aGljaCBtdXN0IGJlIGltYWdlcyBvciB0ZXh0LgogICAgICAgICBpZiAoIWlzPFJlbmRl
ckltYWdlPigqY2hpbGQpICYmICFpczxSZW5kZXJRdW90ZT4oKmNoaWxkKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVkU3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKHJlbmRlcmVy
LnN0eWxlKCkpOworICAgICAgICBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZWRTdHlsZSA9IFJlbmRl
clN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUocmVuZGVyZXIuc3R5
bGUoKSk7CiAgICAgICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkuc2V0U3R5bGUo
V1RGOjptb3ZlKGNyZWF0ZWRTdHlsZSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5oCmluZGV4IDFhNTZlOWQuLjk4YTY1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBRdWFsaWZpZWROYW1lIHsKIHB1YmxpYzoKICAg
ICBjbGFzcyBRdWFsaWZpZWROYW1lSW1wbCA6IHB1YmxpYyBSZWZDb3VudGVkPFF1YWxpZmllZE5h
bWVJbXBsPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZjxRdWFsaWZpZWRO
YW1lSW1wbD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCisgICAg
ICAgIHN0YXRpYyBSZWY8UXVhbGlmaWVkTmFtZUltcGw+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZXNwYWNlVVJJKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBRdWFsaWZpZWROYW1lSW1wbChwcmVmaXgsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJ
KSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UYWdOb2RlTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmgKaW5kZXggYjkxODUxNi4uNjky
MWJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmgKQEAgLTMzLDEzICszMywxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBOb2RlTGlzdCB0aGF0IGxpbWl0cyB0byBhIHBhcnRpY3VsYXIg
dGFnLgogY2xhc3MgVGFnTm9kZUxpc3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0
PFRhZ05vZGVMaXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8VGFnTm9kZUxpc3Q+
IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQorICAgIHN0YXRpYyBSZWY8
VGFnTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG5hbWVzcGFjZVVSSSAhPSBzdGFyQXRvbSk7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRhZ05vZGVMaXN0KHJvb3ROb2RlLCBuYW1lc3BhY2VVUkksIGxv
Y2FsTmFtZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPFRhZ05vZGVMaXN0PiBjcmVh
dGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
KQorICAgIHN0YXRpYyBSZWY8VGFnTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290
Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUYWdOb2RlTGlzdChyb290Tm9kZSwgc3RhckF0b20sIGxvY2FsTmFt
ZSkpOwogICAgIH0KQEAgLTY3LDcgKzY3LDcgQEAgaW5saW5lIGJvb2wgVGFnTm9kZUxpc3Q6OmVs
ZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAKIGNsYXNzIEhUTUxUYWdOb2Rl
TGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxpc3Q8SFRNTFRhZ05vZGVMaXN0PiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8SFRNTFRhZ05vZGVMaXN0PiBjcmVhdGUoQ29u
dGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQorICAg
IHN0YXRpYyBSZWY8SFRNTFRhZ05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5v
ZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSFRNTFRhZ05vZGVMaXN0KHJvb3ROb2RlLCBsb2NhbE5hbWUpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcAppbmRleCA4
OWIyNTQwLi4zNjQyMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0
b25JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0
VHlwZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBCYXNlQnV0dG9uSW5wdXRUeXBlOjphcHBl
bmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEJhc2VCdXR0b25JbnB1dFR5cGU6OmNyZWF0
ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gQmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
ckJ1dHRvbj4oZWxlbWVudCgpLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgKaW5kZXggNDY1NzFjMy4uZmUwYTkxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3Rv
cmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGFw
cGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgc3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgVGV4
dEZpZWxkRXZlbnRCZWhhdmlvcikgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKaW5kZXggMDU0M2M1ZC4uNzI0N2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpo
YW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50KiBldmVudCkKICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEZpbGVJbnB1dFR5cGU6
OmNyZWF0ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gRmlsZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
ckZpbGVVcGxvYWRDb250cm9sPihlbGVtZW50KCksIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAppbmRleCA4OGZkZTMzLi5hYWVjYzA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Kikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJl
cihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBjYW5DaGFuZ2VGcm9tQW5vdGhlclR5cGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIEZpbGVMaXN0KiBmaWxlcygpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAppbmRleCA4MmQ2NzBkLi4wMTY2ODcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcApAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWY8SFRNTEFsbENvbGxlY3Rp
b24+IEhUTUxBbGxDb2xsZWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0
aW9uVHlwZSB0eXBlKQorUmVmPEhUTUxBbGxDb2xsZWN0aW9uPiBIVE1MQWxsQ29sbGVjdGlvbjo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MQWxsQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCmluZGV4IGJkZjRmZjEuLjUx
NDUxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWY8SFRNTEFsbENvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsK
KyAgICBzdGF0aWMgUmVmPEhUTUxBbGxDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBDb2xs
ZWN0aW9uVHlwZSk7CiAKICAgICBFbGVtZW50KiBuYW1lZEl0ZW1XaXRoSW5kZXgoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKaW5kZXggYWZlMjFhNS4uNWQ2ZWJmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
Ym9vbCBIVE1MQXBwbGV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCiAgICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEFwcGxldEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAoIWNhbkVtYmVk
SmF2YSgpKQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBX
VEY6Om1vdmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFw
cGxldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaApp
bmRleCAyMDVhZGRhLi5mYjYwODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcHBsZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxl
bWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFJlbmRlcldpZGdl
dCogcmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKaW5kZXggNWE4NDg1Ny4uM2Y5ODc1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQg
SFRNTEJSRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KIAotUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQlJF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQog
ewogICAgIGlmIChzdHlsZS5nZXQoKS5oYXNDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5k
ZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCUkVsZW1lbnQuaAppbmRleCBkNThhNmYzLi4wZjNiNmNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCUkVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0
YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4
IGExZmY0ODMuLjVhZDZmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1
dHRvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OnNldFR5cGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKQogICAgIHNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgdHlw
ZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJCdXR0b24+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaAppbmRleCBhYzY4N2Y5Li4yNzNkOWU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgLy8gSFRNTEZvcm1Db250cm9sRWxlbWVu
dCBhbHdheXMgY3JlYXRlcyBvbmUsIGJ1dCBidXR0b25zIGRvbid0IG5lZWQgaXQuCiAgICAgdmly
dHVhbCBib29sIGFsd2F5c0NyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAppbmRleCAyMGU0NmQ0Li43MTcwYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0CiAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAot
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgp
OwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90
QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmgKaW5kZXggZmZkYTY4Mi4uY2UwZWZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgSFRNTENhbnZh
c0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFp
blJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU3Rh
cnRTZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHAKaW5kZXggNDI3NzIyNS4uM2Y3NGQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q29sbGVjdGlvbi5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBIVE1MQ29sbGVjdGlvbjo6SFRNTENv
bGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBF
bAogICAgIEFTU0VSVChtX2NvbGxlY3Rpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
eXBlKSk7CiB9CiAKLVBhc3NSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxDb2xsZWN0aW9uOjpjcmVh
dGUoQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKK1JlZjxIVE1MQ29s
bGVjdGlvbj4gSFRNTENvbGxlY3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBiYXNlLCBDb2xs
ZWN0aW9uVHlwZSB0eXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxDb2xsZWN0
aW9uKGJhc2UsIHR5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAppbmRl
eCAwOGYxMjNiLi5iZWIyNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
b2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCkBA
IC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEhUTUxDb2xsZWN0aW9uIDogcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SFRNTENvbGxlY3Rpb24+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxIVE1MQ29sbGVjdGlvbj4gY3JlYXRlKENvbnRhaW5l
ck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlKTsKKyAgICBzdGF0aWMgUmVmPEhUTUxDb2xsZWN0
aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUpOwogICAgIHZp
cnR1YWwgfkhUTUxDb2xsZWN0aW9uKCk7CiAKICAgICAvLyBET00gQVBJCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggYTM1YjVkOC4uNjU5ZjA5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtMTExLDcgKzEx
MSw3IEBAIEhUTUxEZXRhaWxzRWxlbWVudDo6SFRNTERldGFpbHNFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGV0
YWlsc1RhZykpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTERldGFpbHNFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJCbG9ja0Zsb3c+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCmluZGV4IGE5ODk0NzQuLjBhOGQw
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaApAQCAtMzUsNyAr
MzUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxEZXRhaWxzRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKaW5kZXggZjI4NGI5ZS4uMjMxN2JjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKQEAgLTc5Niw3ICs3OTYsNyBAQCBib29sIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1M
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBSZW5kZXJFbGVt
ZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5oCmluZGV4IGVlNDhhZWQuLmI0MTBkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaWVGb3JiaWRzSW5z
ZXJ0SFRNTCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgSFRNTEZvcm1FbGVt
ZW50KiBmb3JtKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbEZvcm0oKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAppbmRleCAwMWRkZjQwLi40YjhkZTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTE0
OSw3ICsxNDksNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmZv
cm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZpZWxkc2V0OwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZpZWxkc2V0
PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZp
ZWxkU2V0RWxlbWVudC5oCmluZGV4IGUxNzUwZDMuLmIwNGYzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJv
bFR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZVdpbGxWYWxp
ZGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCAzOGVjMzFkLi4w
ZGVlY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKQog
ICAgIEFTU0VSVChpczxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSkgfHwgaXM8SFRNTEZpZWxk
U2V0RWxlbWVudD4ob3duZXJOb2RlKSk7CiB9CiAKLVBhc3NSZWY8SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24+IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUoQ29udGFpbmVyTm9k
ZSYgb3duZXJOb2RlLCBDb2xsZWN0aW9uVHlwZSkKK1JlZjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbj4gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBv
d25lck5vZGUsIENvbGxlY3Rpb25UeXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKG93bmVyTm9kZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCmluZGV4IDMxNjJiZDkuLmIx
NjhhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIAogY2xh
c3MgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rp
b24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9kZSYsIENvbGxlY3Rpb25UeXBlKTsKKyAgICBzdGF0aWMg
UmVmPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9kZSYsIENv
bGxlY3Rpb25UeXBlKTsKICAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKaW5k
ZXggZDY1NWYwNy4uZDY2OWY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIGJvb2wgSFRNTEZyYW1lRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpCiAgICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpOwog
fQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IEhUTUxGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZy
YW1lPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudC5oCmluZGV4IGQ0ZDYxYzguLjcyZjcwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRl
OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCmluZGV4IDJiNDE0Y2YuLjk2OGQ4MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApAQCAtMTU1LDcgKzE1
NSw3IEBAIGJvb2wgSFRNTEZyYW1lU2V0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlLmlzU3R5bGVBdmFpbGFibGUoKTsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIGlmIChzdHlsZS5nZXQoKS5oYXNDb250
ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdU
Rjo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
aAppbmRleCBhM2IyNzE3Li42YTM3ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZVNldEVsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJl
bmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAg
ICAgCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCBhZmE3
NTBlLi5lZDI1OWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNw
cApAQCAtOTAsNyArOTAsNyBAQCBib29sIEhUTUxJRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gaXNVUkxBbGxvd2VkKCkg
JiYgc3R5bGUuZGlzcGxheSgpICE9IE5PTkU7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJRnJhbWVFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJRnJhbWU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAppbmRleCA5YWFh
YzE4Li45MmQzODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCkBA
IC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92
ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggMmQ5YmJhYS4uZjRmZDU0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBIVE1MSW1hZ2VFbGVtZW50OjphbHRUZXh0KCkgY29uc3QKICAgICByZXR1
cm4gZmFzdEdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAg
ICAgaWYgKHN0eWxlLmdldCgpLmhhc0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVs
ZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IGZkNWUxYjMuLjhlODI2MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJz
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEJlc3RGaXRVUkxBbmREUFJGcm9t
SW1hZ2VDYW5kaWRhdGUoY29uc3QgSW1hZ2VDYW5kaWRhdGUmKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggYzJmZWFlNy4uNzg5MjQ3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC03NjEsNyArNzYxLDcgQEAgYm9vbCBI
VE1MSW5wdXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnJlbmRlcmVySXNOZWVkZWQoKSAmJiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKIHsKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmNyZWF0ZUlucHV0UmVuZGVyZXIo
V1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CmluZGV4IDNmZTU3N2YuLjc3ZGE2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCkBAIC0yMDAsNyArMjAwLDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuSGF2ZVNlbGVj
dGlvbigpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
UmVuZGVyU3R5bGUmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92
ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGUgZmluYWw7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZp
cnR1YWwgdm9pZCBkaWREZXRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCA1YTg3YTdmLi5kNTUxOGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zMjgsNyArMzI4LDcgQEAg
dm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVm
LCBjb25zdCBVUkwmIGJhc2VVUkwsIGMKICAgICB9CiAKICAgICBSZWY8U3R5bGVTaGVldENvbnRl
bnRzPiBzdHlsZVNoZWV0KFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGhyZWYsIHBhcnNlckNv
bnRleHQpKTsKLSAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKHN0eWxlU2hlZXQs
IHRoaXMpOworICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoc3R5bGVTaGVldC5j
b3B5UmVmKCksIHRoaXMpOwogICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhNZWRpYVF1ZXJ5
U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpKTsKICAgICBtX3No
ZWV0LT5zZXRUaXRsZSh0aXRsZSgpKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgSFRNTExp
bmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJM
JiBiYXNlVVJMLCBjCiAgICAgc3R5bGVTaGVldC5nZXQoKS5jaGVja0xvYWRlZCgpOwogCiAgICAg
aWYgKHN0eWxlU2hlZXQuZ2V0KCkuaXNDYWNoZWFibGUoKSkKLSAgICAgICAgY29uc3RfY2FzdDxD
YWNoZWRDU1NTdHlsZVNoZWV0Kj4oY2FjaGVkU3R5bGVTaGVldCktPnNhdmVQYXJzZWRTdHlsZVNo
ZWV0KHN0eWxlU2hlZXQpOworICAgICAgICBjb25zdF9jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQq
PihjYWNoZWRTdHlsZVNoZWV0KS0+c2F2ZVBhcnNlZFN0eWxlU2hlZXQoV1RGOjptb3ZlKHN0eWxl
U2hlZXQpKTsKIH0KIAogYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnN0eWxlU2hlZXRJc0xvYWRpbmco
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggM2Rj
Yzg1Mi4uMWRkZjk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC02MjIsNyArNjIyLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gY29udHJvbHMoKSAmJiBI
VE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1lZGlh
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWVkaWE+KCp0aGlzLCBXVEY6Om1v
dmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXgg
YTAzZjg2Mi4uMmM1N2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
QEAgLTQ4OSw3ICs0ODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbmRJZ25vcmluZ1RyYWNr
RGlzcGxheVVwZGF0ZVJlcXVlc3RzKCk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
Pikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICNpZiBFTkFC
TEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogICAgIGJvb2wgbWVkaWFDb250cm9sc0RlcGVuZE9u
UGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNvbnRyb2xzRGVwZW5kT25Q
YWdlU2NhbGVGYWN0b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
dGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3Bw
CmluZGV4IDE0ZGI4YTAuLmYxZDY3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCBSZWZQdHI8SFRNTE1ldGVyRWxlbWVudD4gSFRN
TE1ldGVyRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsCiAgICAg
cmV0dXJuIG1ldGVyOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1ldGVyRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgaWYgKCFkb2N1bWVudCgp
LnBhZ2UoKS0+dGhlbWUoKS5zdXBwb3J0c01ldGVyKHN0eWxlLmdldCgpLmFwcGVhcmFuY2UoKSkp
CiAgICAgICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURjo6bW92
ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAppbmRleCA1MDZl
MmFjLi4xNGU0N2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaApAQCAt
NzAsNyArNzAsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRMYWJlbHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTmFtZUNvbGxlY3Rpb24uaAppbmRleCBhMGY0YmI1Li4zMjA3NDNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJvdGVjdGVk
OgogCiBjbGFzcyBXaW5kb3dOYW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNv
bGxlY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFdpbmRvd05hbWVDb2xsZWN0
aW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgc3RhdGljIFJlZjxXaW5kb3dOYW1lQ29sbGVjdGlv
bj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2luZG93TmFtZUNvbGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUsIG5hbWUpKTsKICAgICB9CkBAIC02
NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIERvY3VtZW50TmFtZUNvbGxlY3Rpb24gZmlu
YWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZjxEb2N1bWVudE5hbWVDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBD
b2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgc3RhdGlj
IFJlZjxEb2N1bWVudE5hbWVDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBD
b2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb2N1bWVudE5hbWVDb2xsZWN0aW9uKGRvY3VtZW50
LCB0eXBlLCBuYW1lKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uY3BwCmluZGV4IGYyOTIxMmQuLmZiMzM3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgSFRN
TE9wdGlvbnNDb2xsZWN0aW9uOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24oSFRNTFNlbGVjdEVsZW1l
bnQmIHNlbGVjdCkKIHsKIH0KIAotUGFzc1JlZjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxP
cHRpb25zQ29sbGVjdGlvbjo6Y3JlYXRlKEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3QsIENvbGxl
Y3Rpb25UeXBlKQorUmVmPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gSFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjpjcmVhdGUoSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdCwgQ29sbGVjdGlvblR5cGUpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKHNlbGVjdCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKaW5kZXgg
MTU4MzRhYi4uMzQwZGExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uc0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5oCkBAIC0zNSw3ICszNSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAK
IGNsYXNzIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlv
biB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBj
cmVhdGUoSFRNTFNlbGVjdEVsZW1lbnQmLCBDb2xsZWN0aW9uVHlwZSk7CisgICAgc3RhdGljIFJl
ZjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IGNyZWF0ZShIVE1MU2VsZWN0RWxlbWVudCYsIENvbGxl
Y3Rpb25UeXBlKTsKIAogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3RFbGVtZW50KCkgeyBy
ZXR1cm4gZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KG93bmVyTm9kZSgpKTsgfQogICAgIGNv
bnN0IEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3RFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KG93bmVyTm9kZSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCBlY2JkZTRiLi41NThkMTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMjkyLDcgKzI5Miw3IEBA
IE5QT2JqZWN0KiBIVE1MUGx1Z0luRWxlbWVudDo6Z2V0TlBPYmplY3QoKQogCiAjZW5kaWYgLyog
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICovCiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5FbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAg
IGlmIChtX3BsdWdpblJlcGxhY2VtZW50ICYmIG1fcGx1Z2luUmVwbGFjZW1lbnQtPndpbGxDcmVh
dGVSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gbV9wbHVnaW5SZXBsYWNlbWVudC0+Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCA4YzE5NWY4Li44YTc1YmJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdE9iamVjdChjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7Ci0gICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7
CiAKICAgICAvLyBTdWJjbGFzc2VzIHNob3VsZCB1c2UgZ3VhcmRlZERpc3BhdGNoQmVmb3JlTG9h
ZEV2ZW50IGluc3RlYWQgb2YgY2FsbGluZyBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCBkaXJlY3Rs
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IGE0ZjBmMjYuLjNlNTM5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6d291bGRMb2FkQXNOZXRzY2FwZVBsdWdpbihjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICBBU1NFUlQoIWRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXggODIwZmI3Mi4uMmJjNGI1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAg
LTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5n
Q2hpbGRyZW4oKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVXNlckFn
ZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGUg
ZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlIGZp
bmFsOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGUgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCA4
Y2YyZDYyLi5mMWIzMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9n
cmVzc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxl
bWVudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgUmVmUHRyPEhUTUxQcm9ncmVzc0VsZW1lbnQ+IEhU
TUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcKICAgICBy
ZXR1cm4gcHJvZ3Jlc3M7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUHJvZ3Jl
c3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAoIXN0
eWxlLmdldCgpLmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6
OmNyZWF0ZUZvcigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb2dyZXNzRWxlbWVudC5oCmluZGV4IDM2MmZkMmMuLjg1YmI0YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEFwcGVhckluZGV0ZXJtaW5hdGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlbmRl
clByb2dyZXNzKiByZW5kZXJQcm9ncmVzcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDc5MWJiY2IuLjhjNWMzM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgYm9v
bCBIVE1MU2VsZWN0RWxlbWVudDo6Y2FuU2VsZWN0QWxsKCkgY29uc3QKICAgICByZXR1cm4gIXVz
ZXNNZW51TGlzdCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFNlbGVjdEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICNpZiAhUExBVEZPUk0oSU9T
KQogICAgIGlmICh1c2VzTWVudUxpc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuaAppbmRleCA0YTNiYWU4Li40YjI1YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5oCkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1t
YXJ5RWxlbWVudC5jcHAKaW5kZXggYjA4MTFmNy4uMTI1MjVjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCBIVE1MU3VtbWFy
eUVsZW1lbnQ6OkhUTUxTdW1tYXJ5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZAogICAgIEFTU0VSVChoYXNUYWdOYW1lKHN1bW1hcnlUYWcpKTsKIH0KIAot
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxv
Y2tGbG93PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU3VtbWFyeUVsZW1lbnQuaAppbmRleCAwZDU2ZTNhLi5kMjBjOTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBIVE1MU3VtbWFyeUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCmluZGV4IGI1OWY5MjYuLmZlMGQ2
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24u
Y3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OkhUTUxUYWJs
ZVJvd3NDb2xsZWN0aW9uKEhUTUxUYWJsZUVsZW1lbnQmIHRhYmxlKQogewogfQogCi1QYXNzUmVm
PEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6Y3JlYXRl
KEhUTUxUYWJsZUVsZW1lbnQmIHRhYmxlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQorUmVmPEhUTUxU
YWJsZVJvd3NDb2xsZWN0aW9uPiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6Y3JlYXRlKEhUTUxU
YWJsZUVsZW1lbnQmIHRhYmxlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQogewogICAgIEFTU0VSVF9V
TlVTRUQodHlwZSwgdHlwZSA9PSBUYWJsZVJvd3MpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uKHRhYmxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgKaW5kZXggMGY1Y2RkNy4uZjE3YTMwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaApAQCAtMzgsNyAr
MzgsNyBAQCBjbGFzcyBIVE1MVGFibGVSb3dFbGVtZW50OwogCiBjbGFzcyBIVE1MVGFibGVSb3dz
Q29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWY8SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+IGNyZWF0ZShIVE1MVGFibGVF
bGVtZW50JiwgQ29sbGVjdGlvblR5cGUpOworICAgIHN0YXRpYyBSZWY8SFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb24+IGNyZWF0ZShIVE1MVGFibGVFbGVtZW50JiwgQ29sbGVjdGlvblR5cGUpOwogCiAg
ICAgSFRNTFRhYmxlRWxlbWVudCYgdGFibGVFbGVtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8SFRN
TFRhYmxlRWxlbWVudD4ob3duZXJOb2RlKCkpOyB9CiAgICAgY29uc3QgSFRNTFRhYmxlRWxlbWVu
dCYgdGFibGVFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVu
dD4ob3duZXJOb2RlKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAppbmRleCA5MWQ3MWMxLi41NTQ2MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pYwogICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFRl
eHRBcmVhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lPigqdGhpcywgV1RG
Ojptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oCmluZGV4IGZjNDE2NTYuLjE1N2JhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlz
dCYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3Qgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCA4NmQ3Nzc1Li4yOGIy
Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTY3LDcg
KzY3LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoc3R5bGUpOyAKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxWaWRlb0VsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJWaWRlbz4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBlNWY2MDQ4Li44ZWQyYmJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBkaXNw
bGF5TW9kZSgpID09IFBvc3RlciB8fCBkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdGb3JW
aWRlbzsgfQogCiAgICAgVVJMIHBvc3RlckltYWdlVVJMKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYsIGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmNwcAppbmRleCBl
OTRjYmY3Li4zOTRmNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmNwcApA
QCAtNDQsNyArNDQsNyBAQCBIVE1MV0JSRWxlbWVudDo6SFRNTFdCUkVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIEFTU0VSVChoYXNU
YWdOYW1lKHdiclRhZykpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFdCUkVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MV0JSRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyTGluZUJyZWFrPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmgKaW5kZXggMjE3N2I5Ny4uNWJlNzQ0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEhUTUxXQlJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcAppbmRleCAxNWVhYzVkLi5kNmVlMTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIGJv
b2wgSGlkZGVuSW5wdXRUeXBlOjpzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhpZGRlbklucHV0VHlwZTo6
Y3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIaWRkZW5JbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgKaW5kZXggY2QwMWUwMC4uZWU2
ZDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5oCkBAIC00NCw3ICs0NCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBGb3JtQ29udHJvbFN0YXRlIHNhdmVGb3JtQ29udHJv
bFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVGb3JtQ29u
dHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRl
clN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIHN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRlKCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGUzMjFjMmUuLjk1NDhjOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC0xMDEsNyArMTAxLDcg
QEAgdm9pZCBJbWFnZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCogZXZl
bnQpCiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBJbWFnZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUlucHV0VHlw
ZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckltYWdlPihlbGVtZW50KCksIFdURjo6bW92ZShz
dHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCmluZGV4IGU2ZWY1YzUu
LjcyMzZkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNGb3JtRGF0YUFwcGVuZGFibGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFM
aXN0JiwgYm9vbCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmFs
aWRhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RE9NQWN0aXZhdGVFdmVudChFdmVudCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhbHRB
dHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNyY0F0dHJpYnV0
ZUNoYW5nZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA4MGI0
OWZlLi5jMDg5ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC00NzksNyArNDc5
LDcgQEAgUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IElucHV0VHlwZTo6Zm9ybUZvclN1Ym1p
c3Npb24oKSBjb25zdAogICAgIHJldHVybiBlbGVtZW50KCkuZm9ybSgpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IElucHV0VHlwZTo6
Y3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0
dXJuIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PihSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoZWxl
bWVudCgpLCBXVEY6Om1vdmUoc3R5bGUpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRl
eCA3MzJlZGVjLi44NmFjOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTIzMiw3ICsy
MzIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucwogICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKCk7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihS
ZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRTZWFyY2hSZXN1bHQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oCmluZGV4IGI4NTFhMzEuLmExMTlkM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYWJlbHNOb2RlTGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNo
ZWRMaXZlTm9kZUxpc3Q8TGFiZWxzTm9kZUxpc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZjxMYWJlbHNOb2RlTGlzdD4gY3JlYXRlKExhYmVsYWJsZUVsZW1lbnQmIGZvck5vZGUsIGNv
bnN0IEF0b21pY1N0cmluZyYpCisgICAgc3RhdGljIFJlZjxMYWJlbHNOb2RlTGlzdD4gY3JlYXRl
KExhYmVsYWJsZUVsZW1lbnQmIGZvck5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMYWJlbHNOb2RlTGlzdChmb3JOb2RlKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaAppbmRleCA4YmNmMDJiLi4zZmNjOTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJhZGlvTm9kZUxpc3QgZmluYWwgOiBwdWJsaWMgQ2Fj
aGVkTGl2ZU5vZGVMaXN0PFJhZGlvTm9kZUxpc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZjxSYWRpb05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMgUmVmPFJhZGlvTm9kZUxpc3Q+IGNyZWF0
ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmFkaW9Ob2RlTGlzdChyb290Tm9kZSwg
bmFtZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXgg
OTZiMThjZC4uODgxMjc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAK
QEAgLTI4NCw3ICsyODQsNyBAQCBIVE1MRWxlbWVudCogUmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRo
dW1iRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuICZ0eXBlZFNsaWRlclRodW1iRWxlbWVudCgp
OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZUlu
cHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTbGlkZXI+
KGVsZW1lbnQoKSwgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5w
dXRUeXBlLmgKaW5kZXggZTdiNWUxMS4uOWQ5MTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBjb25zdCBE
ZWNpbWFsJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNv
bnN0IERlY2ltYWwmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5w
dXRUeXBlLmNwcAppbmRleCBmYTY4YjI0Li5lZDEyNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9T
ZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgU2VhcmNoSW5wdXRUeXBl
OjptYXhSZXN1bHRzQXR0cmlidXRlQ2hhbmdlZCgpCiAgICAgICAgIHVwZGF0ZVJlc3VsdEJ1dHRv
blBzZXVkb1R5cGUoKm1fcmVzdWx0c0J1dHRvbiwgZWxlbWVudCgpLm1heFJlc3VsdHMoKSk7CiB9
CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZUlucHV0
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHls
ZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2VhcmNoRmll
bGQ+KGVsZW1lbnQoKSwgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFy
Y2hJbnB1dFR5cGUuaAppbmRleCAxNWRkZjkyLi4wZDczODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
U2VhcmNoSW5wdXRUeXBlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIG1heFJlc3VsdHNBdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRl
clN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IGU3YmMyOGIuLmJmZTNmNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTIyMyw3
ICsyMjMsNyBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRs
eShFdmVudCogZXZlbnQpCiAgICAgICAgIHx8IElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGlj
aXRseShldmVudCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0RmllbGRJbnB1
dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lPihlbGVtZW50KCksIFdURjo6bW92ZShz
dHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1
dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKaW5kZXgg
NGYwZTZmNi4uMzdjZDNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlw
ZS5oCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUJl
Zm9yZVRleHRJbnNlcnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Kikgb3ZlcnJpZGUg
ZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGZvcndhcmRFdmVudChFdmVudCopIG92ZXJyaWRlIGZp
bmFsOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50Kikgb3Zl
cnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
SW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhv
ZCgpIGNvbnN0IG92ZXJyaWRlOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCBTdHJp
bmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAppbmRl
eCA1ZTNhYmQyLi4zN2ZhNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwCkBAIC01MCw3ICs1MCw3IEBAIERldGFpbHNNYXJr
ZXJDb250cm9sOjpEZXRhaWxzTWFya2VyQ29udHJvbChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1kZXRhaWxzLW1hcmtlciIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRGV0YWlsc01hcmtl
ckNvbnRyb2w6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckRldGFpbHNNYXJrZXI+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EZXRhaWxzTWFya2VyQ29udHJvbC5oCmluZGV4IDM2ZWE1NmYuLjgxY2YxY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIERldGFpbHNNYXJrZXJDb250cm9s
KERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggYzAzNDE0
MS4uMmQzM2I4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXJFbGVtZW50OjpzZXRUaW1lRGlzcGxheXNIaWRkZW4oYm9vbCBoaWRk
ZW4pCiAgICAgfQogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVGlt
ZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVGlt
ZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZWRpYUNv
bnRyb2xUaW1lbGluZUNvbnRhaW5lcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpAQCAt
MzMwLDcgKzMzMCw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFp
bmVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29uCiAgICAgcmV0dXJuIGVsZW1l
bnQucmVsZWFzZSgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7
CiB9CkBAIC0xMDg4LDcgKzEwODgsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lcgogICAgIHJl
dHVybiBlbGVtZW50LnJlbGVhc2UoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PigqdGhpcywgV1RGOjptb3ZlKHN0eWxl
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuaAppbmRleCBlNDUyYzMyLi4zOWM5OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFp
bmVyRWxlbWVudChEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIH07CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJp
ZGU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NTYsNyArNDU2
LDcgQEAgcHJpdmF0ZToKIAogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SW1hZ2U+IGNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVwcmVzZW50YXRpb25Cb3VuZHNDaGFuZ2Vk
KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDZlYzRlNTUuLjQwYmRlMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApA
QCAtNzMsNyArNzMsNyBAQCBib29sIE1ldGVySW5uZXJFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gcmVuZGVyICYmICFyZW5kZXIt
PnRoZW1lKCkuc3VwcG9ydHNNZXRlcihyZW5kZXItPnN0eWxlKCkuYXBwZWFyYW5jZSgpKSAmJiBI
VE1MRGl2RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1ldGVy
SW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZXRlcj4oKnRoaXMsIFdU
Rjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWV0ZXJTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRl
clNoYWRvd0VsZW1lbnQuaAppbmRleCBkMWIwZTc4Li5lN2Q1ZTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaApAQCAtNTksNyArNTksNyBA
QCBwcml2YXRlOgogICAgIE1ldGVySW5uZXJFbGVtZW50KERvY3VtZW50Jik7CiAKICAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikg
b3ZlcnJpZGU7CiB9OwogCiBpbmxpbmUgUGFzc1JlZlB0cjxNZXRlcklubmVyRWxlbWVudD4gTWV0
ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAppbmRleCA5
MDQxN2YxLi4zMjllZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Q
cm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgUHJvZ3Jlc3NJbm5l
ckVsZW1lbnQ6OlByb2dyZXNzSW5uZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gUHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclByb2dyZXNzPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oCmluZGV4IDE4ZGJj
OTkuLjM0MDFmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dy
ZXNzU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dy
ZXNzU2hhZG93RWxlbWVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgUHJvZ3Jlc3NJbm5lckVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwCmluZGV4IDQ4M2ZhZTUuLmE5ZGI0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNzcsNyArNzcsNyBAQCBpbmxp
bmUgc3RhdGljIGJvb2wgaGFzVmVydGljYWxBcHBlYXJhbmNlKEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZW5kZXJTbGlk
ZXJUaHVtYjo6UmVuZGVyU2xpZGVyVGh1bWIoU2xpZGVyVGh1bWJFbGVtZW50JiBlbGVtZW50LCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNsaWRlclRodW1iOjpSZW5kZXJTbGlk
ZXJUaHVtYihTbGlkZXJUaHVtYkVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsK
IH0KQEAgLTExMSw3ICsxMTEsNyBAQCBib29sIFJlbmRlclNsaWRlclRodW1iOjppc1NsaWRlclRo
dW1iKCkgY29uc3QKIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvNjI1MzUKIGNsYXNzIFJlbmRlclNs
aWRlckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6
Ci0gICAgUmVuZGVyU2xpZGVyQ29udGFpbmVyKFNsaWRlckNvbnRhaW5lckVsZW1lbnQmIGVsZW1l
bnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIFJlbmRlclNsaWRlckNvbnRhaW5l
cihTbGlkZXJDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQogICAgICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CiAgICAgewogICAgIH0KQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVu
dDo6c2V0UG9zaXRpb25Gcm9tVmFsdWUoKQogICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xh
eW91dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU2xpZGVyVGh1bWJFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJTbGlkZXJUaHVtYj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpAQCAt
NjE1LDcgKzYxNSw3IEBAIFBhc3NSZWZQdHI8U2xpZGVyQ29udGFpbmVyRWxlbWVudD4gU2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTbGlkZXJDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2xp
ZGVyQ29udGFpbmVyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4IGYzZWVkMzIuLjQw
YWMwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2xpZGVyVGh1
bWJFbGVtZW50KERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVmUHRyPEVs
ZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFzcygpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMTE2LDcgKzExNiw3IEBAIGlubGluZSBQYXNzUmVmUHRyPFNsaWRlclRo
dW1iRWxlbWVudD4gU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtCiAK
IGNsYXNzIFJlbmRlclNsaWRlclRodW1iIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyU2xpZGVyVGh1bWIoU2xpZGVyVGh1bWJFbGVtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNsaWRlclRodW1iKFNsaWRlclRodW1iRWxl
bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZvaWQgdXBkYXRlQXBwZWFyYW5jZShSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUpOwogCiBwcml2YXRlOgpAQCAtMTMxLDcgKzEzMSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBTbGlkZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7
Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IGM3MjdkN2QuLmQz
ZGI5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtNTYsNyArNTYsNyBAQCBQYXNzUmVmUHRyPFRleHRD
b250cm9sSW5uZXJDb250YWluZXI+IFRleHRDb250cm9sSW5uZXJDb250YWluZXI6OmNyZWF0ZShE
b2N1bWVudAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dENvbnRyb2xJbm5lckNvbnRhaW5l
cihkb2N1bWVudCkpOwogfQogICAgIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRDb250
cm9sSW5uZXJDb250YWluZXI6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyQ29u
dGFpbmVyOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQog
ewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFp
bmVyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9p
ZCBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQogICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVu
dCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jaz4oKnRoaXMsIFdU
Rjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAppbmRleCBkMzljZGI3Li5iMjQ3NTM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
VGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcj4gY3JlYXRlKERvY3VtZW50Jik7CiBwcm90ZWN0ZWQ6
CiAgICAgVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcihEb2N1bWVudCYpOwotICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJl
bmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiB9
OwogCiBjbGFzcyBUZXh0Q29udHJvbElubmVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2
RWxlbWVudCB7CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxl
JiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2Fi
bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNv
bnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9t
YWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCmluZGV4IGEzNWE3NjkuLjQ2ZmVl
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRy
b2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcApAQCAtNDQsNyArNDQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckltYWdlQ29udHJvbHNCdXR0b24gZmlu
YWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZUNv
bnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJl
bmRlckltYWdlQ29udHJvbHNCdXR0b24oSFRNTEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKCk7CiAKIHByaXZhdGU6CkBA
IC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2Vk
U3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
IH07CiAKLVJlbmRlckltYWdlQ29udHJvbHNCdXR0b246OlJlbmRlckltYWdlQ29udHJvbHNCdXR0
b24oSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVySW1hZ2VDb250cm9sc0J1dHRvbjo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbihIVE1MRWxl
bWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2Nr
RmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpAQCAtMTI1LDcgKzEyNSw3IEBA
IHZvaWQgSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2
ZW50KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlQ29udHJvbHNCdXR0b25F
bGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRN
YWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckltYWdlQ29udHJvbHNCdXR0b24+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmgKaW5kZXgg
NTk4M2EyMC4uNTNkNzJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHJpdmF0ZToKICAgICBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYyhEb2N1
bWVudCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2VDb250cm9sc0J1
dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxl
bWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9s
c1Jvb3RFbGVtZW50TWFjLmNwcAppbmRleCBkOTY0ODEzLi5mNDM5YmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFJlbmRlckltYWdlQ29udHJvbHMgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZUNvbnRyb2xzKEhUTUxFbGVtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckltYWdlQ29udHJvbHMoSFRNTEVsZW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZUNvbnRyb2xzKCk7CiAK
IHByaXZhdGU6CkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIH07CiAKLVJlbmRlckltYWdlQ29udHJvbHM6OlJlbmRlckltYWdlQ29udHJv
bHMoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVySW1hZ2VDb250cm9sczo6UmVuZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50
LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpAQCAtMTAyLDcgKzEwMiw3IEBAIEltYWdlQ29udHJv
bHNSb290RWxlbWVudE1hYzo6fkltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYygpCiB7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlckltYWdlQ29udHJvbHM+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnRNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFn
ZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaAppbmRleCA2OGQyZmNiLi42MGVjNTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVt
ZW50TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJv
bHNSb290RWxlbWVudE1hYy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUu
Y3BwCmluZGV4IDM4MjZmM2QuLmE2NjAxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1
ZS5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFZUVEN1ZUJveDo6
dnR0Q3VlQm94U2hhZG93UHNldWRvSWQoKQogICAgIHJldHVybiB0cmFja0Rpc3BsYXlCb3hTaGFk
b3dQc2V1ZG9JZDsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFZUVEN1ZUJveDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFZUVEN1ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVlRU
Q3VlPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuaAppbmRleCA3NjEzZmQ0Li5jYzFkZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFZUVEN1ZUJveChE
b2N1bWVudCYsIFZUVEN1ZSYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIFZUVEN1
ZSYgbV9jdWU7CiAgICAgaW50IG1fZm9udFNpemVGcm9tQ2FwdGlvblVzZXJQcmVmczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApp
bmRleCBlMzcwMTM4Li4xZjQ1ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgUGFzc1Jl
ZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IENhY2hlZENTU1N0eWxlU2hlZXQ6OnJlc3RvcmVQYXJz
ZWRTdHlsZVNoZWV0KGNvbnMKICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGU7CiB9
CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2F2ZVBhcnNlZFN0eWxlU2hlZXQoUGFzc1Jl
ZjxTdHlsZVNoZWV0Q29udGVudHM+IHNoZWV0KQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0Ojpz
YXZlUGFyc2VkU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0KQogewog
ICAgIEFTU0VSVChzaGVldC5nZXQoKS5pc0NhY2hlYWJsZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggOTQwZmQxZi4u
YmEwN2U1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgY29uc3QgU3RyaW5nIHNoZWV0VGV4dChib29sIGVuZm9yY2VNSU1FVHlwZSA9IHRydWUsIGJv
b2wqIGhhc1ZhbGlkTUlNRVR5cGUgPSAwKSBjb25zdDsKIAogICAgICAgICBQYXNzUmVmUHRyPFN0
eWxlU2hlZXRDb250ZW50cz4gcmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQoY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYpOwotICAgICAgICB2b2lkIHNhdmVQYXJzZWRTdHlsZVNoZWV0KFBhc3NSZWY8U3R5
bGVTaGVldENvbnRlbnRzPik7CisgICAgICAgIHZvaWQgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoUmVm
PFN0eWxlU2hlZXRDb250ZW50cz4mJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGNh
blVzZVNoZWV0KGJvb2wgZW5mb3JjZU1JTUVUeXBlLCBib29sKiBoYXNWYWxpZE1JTUVUeXBlKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmgKaW5kZXggM2MwZWE1NS4uZWJlM2U0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAg
ZnJpZW5kIGNsYXNzIEltYWdlTG9hZGVyOwogZnJpZW5kIGNsYXNzIFJlc291cmNlQ2FjaGVWYWxp
ZGF0aW9uU3VwcHJlc3NvcjsKIAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENhY2hlZFJl
c291cmNlTG9hZGVyPiBjcmVhdGUoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IENhY2hlZFJlc291cmNlTG9hZGVyKGRvY3VtZW50TG9hZGVyKSk7
IH0KKyAgICBzdGF0aWMgUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPiBjcmVhdGUoRG9jdW1lbnRM
b2FkZXIqIGRvY3VtZW50TG9hZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZFJlc291
cmNlTG9hZGVyKGRvY3VtZW50TG9hZGVyKSk7IH0KICAgICB+Q2FjaGVkUmVzb3VyY2VMb2FkZXIo
KTsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiByZXF1ZXN0SW1hZ2Uo
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKaW5kZXggYmRiNmJmNi4uZDhkZjRh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5l
ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50LmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIE1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQog
ICAgIE1hdGhNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgaWYgKGhhc1RhZ05hbWUoYW5u
b3RhdGlvbl94bWxUYWcpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0
aE1MUm93PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAppbmRleCAzNjM2YWFiLi43
MDlmZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJik7CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlk
ZTsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
TWF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50
LmNwcAppbmRleCAzNzlhMmZmLi4zNTA0MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxNYXRoRWxlbWVudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgUGFzc1JlZlB0cjxNYXRoTUxN
YXRoRWxlbWVudD4gTWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWcKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hdGhNTE1hdGhFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxNYXRoRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJNYXRoTUxNYXRoPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCmluZGV4IDJiMTI5NDMuLjlh
ZjI1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWF0aE1MTWF0aEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRl
clN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiB9Owog
ICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3Nl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50
LmNwcAppbmRleCBkNTk3ZTRhLi5jNzU1ZDcxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQCBQYXNzUmVmUHRy
PE1hdGhNTE1lbmNsb3NlRWxlbWVudD4gTWF0aE1MTWVuY2xvc2VFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWF0aE1MTWVuY2xvc2VFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBN
YXRoTUxNZW5jbG9zZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxNZW5jbG9zZUVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7
ICAgIAogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxNZW5jbG9zZT4oKnRo
aXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TE1lbmNsb3NlRWxlbWVudC5oCmluZGV4IGVlOTczMzUuLjIyYTMzY2QgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIE1hdGhNTE1lbmNsb3NlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJv
cGVydGllcyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRy
ZW4oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxT
ZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVt
ZW50LmNwcAppbmRleCA1ZmZhODVjLi42ZDUyOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFBhc3NSZWZQdHI8
TWF0aE1MU2VsZWN0RWxlbWVudD4gTWF0aE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRoTUxTZWxlY3RFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRo
TUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MU2VsZWN0RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUm93PigqdGhpcywgV1RGOjptb3ZlKHN0
eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuaApp
bmRleCAwM2E4NTM0Li4zNTQwMGZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
U2VsZWN0RWxlbWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBNYXRoTUxTZWxlY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50Jik7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKaW5kZXggNTAzMTJiMy4uNDU2YzgxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIHZvaWQgTWF0aE1MVGV4dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0CiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1M
VGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxUZXh0RWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAoaGFz
VGFnTmFtZShNYXRoTUxOYW1lczo6bW9UYWcpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKaW5kZXggYmVkNzU5MC4uYzY4NDJl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNYXRoTUxUZXh0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hh
bmdlJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyYjA0MDA0Li40OTA2MWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE2NDUsNyArMTY0NSw3IEBAIHZvaWQgUGFnZTo6c2V0VXNl
ckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlciogdXNlckNvbnRlbnRDb250
cm9sbGVyCiAgICAgfQogfQogCi12b2lkIFBhZ2U6OnNldFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cihQYXNzUmVmPFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gc3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyKQordm9pZCBQYWdlOjpzZXRTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoUmVmPFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcj4mJiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpCiB7CiAgICAgbV9z
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXItPnJlbW92ZVBhZ2UoKnRoaXMpOwogICAgIG1fc3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyID0gV1RGOjptb3ZlKHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik7
CkBAIC0xNjU5LDcgKzE2NTksNyBAQCBWaXNpdGVkTGlua1N0b3JlJiBQYWdlOjp2aXNpdGVkTGlu
a1N0b3JlKCkKICAgICByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlOwogfQogCi12b2lkIFBhZ2U6
OnNldFZpc2l0ZWRMaW5rU3RvcmUoUGFzc1JlZjxWaXNpdGVkTGlua1N0b3JlPiB2aXNpdGVkTGlu
a1N0b3JlKQordm9pZCBQYWdlOjpzZXRWaXNpdGVkTGlua1N0b3JlKFJlZjxWaXNpdGVkTGlua1N0
b3JlPiYmIHZpc2l0ZWRMaW5rU3RvcmUpCiB7CiAgICAgbV92aXNpdGVkTGlua1N0b3JlLT5yZW1v
dmVQYWdlKCp0aGlzKTsKICAgICBtX3Zpc2l0ZWRMaW5rU3RvcmUgPSBXVEY6Om1vdmUodmlzaXRl
ZExpbmtTdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDVmMzhjYTIuLjhlZTI2M2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCkBAIC00MDMsMTMgKzQwMywxMyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbGFzdFNw
YXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RTcGF0
aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZXNDb3VudDsgfQogCiAgICAgU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyJiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0U3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyKFBhc3NSZWY8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPik7CisgICAgdm9pZCBzZXRTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIoUmVmPFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4mJik7CiAK
ICAgICBVc2VyQ29udGVudENvbnRyb2xsZXIqIHVzZXJDb250ZW50Q29udHJvbGxlcigpIHsgcmV0
dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLmdldCgpOyB9CiAgICAgdm9pZCBzZXRVc2VyQ29u
dGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVyKik7CiAKICAgICBWaXNpdGVkTGlu
a1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCk7Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua1N0b3Jl
KFBhc3NSZWY8VmlzaXRlZExpbmtTdG9yZT4pOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtTdG9y
ZShSZWY8VmlzaXRlZExpbmtTdG9yZT4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTZXNzaW9u
SUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXNzaW9u
SUQoU2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3Nh
Z2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlci5oCmlu
ZGV4IDBmYzQ4OWMuLmIyY2RmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhh
bmRsZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFVz
ZXJNZXNzYWdlSGFuZGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZXNzYWdlSGFuZGxlcj4s
IHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmPFVzZXJNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKEZyYW1lJiBmcmFtZSwgVXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICBzdGF0aWMgUmVmPFVzZXJNZXNz
YWdlSGFuZGxlcj4gY3JlYXRlKEZyYW1lJiBmcmFtZSwgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVz
ZXJNZXNzYWdlSGFuZGxlcihmcmFtZSwgZGVzY3JpcHRvcikpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmgKaW5kZXggODE4
ZjE1NS4uMzZmOWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgRE9NV3JhcHBlcldv
cmxkOwogCiBjbGFzcyBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlIDogcHVibGljIFJlZkNv
dW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZT4sIHB1YmxpYyBGcmFtZURlc3RydWN0
aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFVzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2U+IGNyZWF0ZShGcmFtZSYgZnJhbWUpCisgICAgc3RhdGljIFJlZjxVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlPiBjcmVhdGUoRnJhbWUmIGZyYW1lKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZShm
cmFtZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNzNiYTM2MS4uMTI5OGFkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjph
ZGRFdmVudFRvRGlzcGF0Y2goUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LAogICAgIHN0YXJ0
VXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXIoKTsKIH0KIAotdm9pZCBBbmltYXRpb25Db250
cm9sbGVyUHJpdmF0ZTo6YWRkRWxlbWVudENoYW5nZVRvRGlzcGF0Y2goUGFzc1JlZjxFbGVtZW50
PiBlbGVtZW50KQordm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YWRkRWxlbWVudENo
YW5nZVRvRGlzcGF0Y2goUmVmPEVsZW1lbnQ+JiYgZWxlbWVudCkKIHsKICAgICBtX2VsZW1lbnRD
aGFuZ2VzVG9EaXNwYXRjaC5hcHBlbmQoV1RGOjptb3ZlKGVsZW1lbnQpKTsKICAgICBBU1NFUlQo
IW1fZWxlbWVudENoYW5nZXNUb0Rpc3BhdGNoLmxhc3QoKS0+ZG9jdW1lbnQoKS5pblBhZ2VDYWNo
ZSgpKTsKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNl
bEFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiAgICAgICAgIGVsZW1lbnQtPnNl
dE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogfQogCi1QYXNzUmVmPFJl
bmRlclN0eWxlPiBBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBQYXNzUmVmPFJlbmRlclN0eWxlPiBuZXdTdHlsZSkKK1JlZjxSZW5k
ZXJTdHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgUmVmPFJlbmRlclN0eWxlPiBuZXdTdHlsZSkKIHsKICAgICAvLyBEb24n
dCBkbyBhbnl0aGluZyBpZiB3ZSdyZSBpbiB0aGUgY2FjaGUKICAgICBpZiAocmVuZGVyZXIuZG9j
dW1lbnQoKS5pblBhZ2VDYWNoZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oCmluZGV4IDQ1YWJkMjUuLmU3Yzk2N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVy
LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH5BbmltYXRpb25Db250cm9sbGVyKCk7
CiAKICAgICB2b2lkIGNhbmNlbEFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCYpOwotICAgIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IG5ld1N0eWxlKTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IHVwZGF0ZUFuaW1h
dGlvbnMoUmVuZGVyRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUpOwogICAgIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IGdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJF
bGVtZW50Jik7CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCB3aGVuIGFuIGFjY2VsZXJhdGVkIGFu
aW1hdGlvbiBvciB0cmFuc2l0aW9uIGhhcyBhY3R1YWxseSBzdGFydGVkIHRvIGFuaW1hdGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlclByaXZhdGUuaAppbmRleCBlZjFlZGQzLi5kYjAyMTcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2
YXRlLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU3R5bGVJZk5l
ZWRlZERpc3BhdGNoZXJGaXJlZCgpOwogICAgIHZvaWQgc3RhcnRVcGRhdGVTdHlsZUlmTmVlZGVk
RGlzcGF0Y2hlcigpOwogICAgIHZvaWQgYWRkRXZlbnRUb0Rpc3BhdGNoKFBhc3NSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgZG91YmxlIGVsYXBzZWRUaW1lKTsKLSAgICB2b2lkIGFkZEVsZW1lbnRDaGFuZ2VU
b0Rpc3BhdGNoKFBhc3NSZWY8RWxlbWVudD4pOworICAgIHZvaWQgYWRkRWxlbWVudENoYW5nZVRv
RGlzcGF0Y2goUmVmPEVsZW1lbnQ+JiYpOwogCiAgICAgYm9vbCBoYXNBbmltYXRpb25zKCkgY29u
c3QgeyByZXR1cm4gIW1fY29tcG9zaXRlQW5pbWF0aW9ucy5pc0VtcHR5KCk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAK
aW5kZXggZGQ1NWMyOC4uN2ZmN2U0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9p
ZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciwgUmVuZGUKICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbnMucmVtb3Zl
KGFuaW1zVG9CZVJlbW92ZWRbal0pOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBDb21wb3Np
dGVBbmltYXRpb246OmFuaW1hdGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFJlbmRlclN0eWxl
KiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKK1JlZjxSZW5kZXJTdHls
ZT4gQ29tcG9zaXRlQW5pbWF0aW9uOjphbmltYXRlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBS
ZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUpCiB7CiAg
ICAgUmVmUHRyPFJlbmRlclN0eWxlPiByZXN1bHRTdHlsZTsKIApAQCAtMzIyLDcgKzMyMiw5IEBA
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IENvbXBvc2l0ZUFuaW1hdGlvbjo6YW5pbWF0ZShSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgUmVuZGVyCiAgICAgICAgICAgICBrZXlmcmFtZUFuaW0tPmFuaW1h
dGUodGhpcywgJnJlbmRlcmVyLCBjdXJyZW50U3R5bGUsICZ0YXJnZXRTdHlsZSwgcmVzdWx0U3R5
bGUpOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHRTdHlsZSA/IHJlc3VsdFN0eWxlLnJlbGVh
c2VOb25OdWxsKCkgOiB0YXJnZXRTdHlsZTsKKyAgICBpZiAocmVzdWx0U3R5bGUpCisgICAgICAg
IHJldHVybiByZXN1bHRTdHlsZS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiB0YXJnZXRT
dHlsZTsKIH0KIAogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ29tcG9zaXRlQW5pbWF0aW9uOjpn
ZXRBbmltYXRlZFN0eWxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmgKaW5kZXggMmNhMTM4MC4uMWMxNDNhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmgK
QEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY2xlYXJSZW5kZXJlcigp
OwogCi0gICAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gYW5pbWF0ZShSZW5kZXJFbGVtZW50JiwgUmVu
ZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlKTsKKyAgICBS
ZWY8UmVuZGVyU3R5bGU+IGFuaW1hdGUoUmVuZGVyRWxlbWVudCYsIFJlbmRlclN0eWxlKiBjdXJy
ZW50U3R5bGUsIFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSk7CiAgICAgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gZ2V0QW5pbWF0ZWRTdHlsZSgpIGNvbnN0OwogCiAgICAgZG91YmxlIHRpbWVUb05l
eHRTZXJ2aWNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
YWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9u
VmFsdWUuY3BwCmluZGV4IGI5ZGZjYTYuLjY0YzBjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxDYWxjdWxhdGlvblZhbHVlPiBDYWxjdWxhdGlvblZhbHVl
OjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIENhbGN1
bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKK1JlZjxDYWxjdWxhdGlvblZhbHVlPiBD
YWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9k
ZT4gdmFsdWUsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWxjdWxhdGlvblZhbHVlKFdURjo6bW92ZSh2YWx1ZSksIHJh
bmdlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlv
blZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKaW5k
ZXggNDQ4YTM1YS4uYjIyOGE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q2FsY3VsYXRpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0
aW9uVmFsdWUuaApAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIENhbGN1bGF0
aW9uVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxjdWxhdGlvblZhbHVlPiB7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gY3Jl
YXRlKHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+LCBDYWxjdWxhdGlvblBlcm1p
dHRlZFZhbHVlUmFuZ2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Q2FsY3VsYXRp
b25WYWx1ZT4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+LCBDYWxj
dWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOwogICAgIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1h
eFZhbHVlKSBjb25zdDsKIAogICAgIGJvb2wgc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGguY3BwCmluZGV4IDZkNWE2NWMuLjYyZDBiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIGNsYXNzIENhbGN1bGF0aW9uVmFsdWVNYXAg
ewogcHVibGljOgogICAgIENhbGN1bGF0aW9uVmFsdWVNYXAoKTsKIAotICAgIHVuc2lnbmVkIGlu
c2VydChQYXNzUmVmPENhbGN1bGF0aW9uVmFsdWU+KTsKKyAgICB1bnNpZ25lZCBpbnNlcnQoUmVm
PENhbGN1bGF0aW9uVmFsdWU+JiYpOwogICAgIHZvaWQgcmVmKHVuc2lnbmVkIGhhbmRsZSk7CiAg
ICAgdm9pZCBkZXJlZih1bnNpZ25lZCBoYW5kbGUpOwogCkBAIC0xOTIsNyArMTkyLDcgQEAgaW5s
aW5lIENhbGN1bGF0aW9uVmFsdWVNYXA6OkNhbGN1bGF0aW9uVmFsdWVNYXAoKQogewogfQogICAg
IAotaW5saW5lIHVuc2lnbmVkIENhbGN1bGF0aW9uVmFsdWVNYXA6Omluc2VydChQYXNzUmVmPENh
bGN1bGF0aW9uVmFsdWU+IHZhbHVlKQoraW5saW5lIHVuc2lnbmVkIENhbGN1bGF0aW9uVmFsdWVN
YXA6Omluc2VydChSZWY8Q2FsY3VsYXRpb25WYWx1ZT4mJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQo
bV9uZXh0QXZhaWxhYmxlSGFuZGxlKTsKIApAQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyBDYWxj
dWxhdGlvblZhbHVlTWFwJiBjYWxjdWxhdGlvblZhbHVlcygpCiAgICAgcmV0dXJuIG1hcDsKIH0K
IAotTGVuZ3RoOjpMZW5ndGgoUGFzc1JlZjxDYWxjdWxhdGlvblZhbHVlPiB2YWx1ZSkKK0xlbmd0
aDo6TGVuZ3RoKFJlZjxDYWxjdWxhdGlvblZhbHVlPiYmIHZhbHVlKQogICAgIDogbV9oYXNRdWly
ayhmYWxzZSkKICAgICAsIG1fdHlwZShDYWxjdWxhdGVkKQogICAgICwgbV9pc0Zsb2F0KGZhbHNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAppbmRleCBiNGM2OGY4Li4wYWU1ZGE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGguaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgTGVuZ3Ro
KGZsb2F0IHZhbHVlLCBMZW5ndGhUeXBlLCBib29sIGhhc1F1aXJrID0gZmFsc2UpOwogICAgIExl
bmd0aChkb3VibGUgdmFsdWUsIExlbmd0aFR5cGUsIGJvb2wgaGFzUXVpcmsgPSBmYWxzZSk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBMZW5ndGgoUGFzc1JlZjxDYWxjdWxhdGlvblZh
bHVlPik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgTGVuZ3RoKFJlZjxDYWxjdWxhdGlv
blZhbHVlPiYmKTsKIAogICAgIExlbmd0aChjb25zdCBMZW5ndGgmKTsKICAgICBMZW5ndGgoTGVu
Z3RoJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCAz
OTIzMGM4Li4zYWU5ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcApAQCAtNTAsNyArNTAsNyBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRlbGV0ZU93bmVkUHRyPFdl
YkNvcmU6OlRleHRMYXlvdXQ+KFdlYkNvcmU6OlRleHRMYXlvdXQqIHB0cikKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgUGFzc1JlZjxGb250R2x5cGhzPiByZXRyaWV2ZU9yQWRkQ2Fj
aGVkRm9udEdseXBocyhjb25zdCBGb250RGVzY3JpcHRpb24mLCBQYXNzUmVmUHRyPEZvbnRTZWxl
Y3Rvcj4pOworc3RhdGljIFJlZjxGb250R2x5cGhzPiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udEds
eXBocyhjb25zdCBGb250RGVzY3JpcHRpb24mLCBQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4pOwog
CiBjb25zdCB1aW50OF90IEZvbnQ6OnNfcm91bmRpbmdIYWNrQ2hhcmFjdGVyVGFibGVbMjU2XSA9
IHsKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxIC8qXHQqLywgMSAvKlxuKi8sIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCkBAIC0yMTUsNyArMjE1LDcgQEAgc3RydWN0IEZvbnRHbHlwaHNDYWNoZUtleSB7CiBzdHJ1
Y3QgRm9udEdseXBoc0NhY2hlRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIEZvbnRHbHlwaHNDYWNoZUVudHJ5KEZvbnRHbHlwaHNDYWNoZUtleSYmIGss
IFBhc3NSZWY8Rm9udEdseXBocz4gZykgOiBrZXkoV1RGOjptb3ZlKGspKSwgZ2x5cGhzKFdURjo6
bW92ZShnKSkgeyB9CisgICAgRm9udEdseXBoc0NhY2hlRW50cnkoRm9udEdseXBoc0NhY2hlS2V5
JiYgaywgUmVmPEZvbnRHbHlwaHM+IGcpIDoga2V5KFdURjo6bW92ZShrKSksIGdseXBocyhXVEY6
Om1vdmUoZykpIHsgfQogICAgIEZvbnRHbHlwaHNDYWNoZUtleSBrZXk7CiAgICAgUmVmPEZvbnRH
bHlwaHM+IGdseXBoczsKIH07CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBwcnVuZVVucmVmZXJl
bmNlZEVudHJpZXNGcm9tRm9udEdseXBoc0NhY2hlKCkKICAgICAgICAgZm9udEdseXBoc0NhY2hl
KCkucmVtb3ZlKHRvUmVtb3ZlW2ldKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Rm9udEdseXBocz4g
cmV0cmlldmVPckFkZENhY2hlZEZvbnRHbHlwaHMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpCitzdGF0
aWMgUmVmPEZvbnRHbHlwaHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250R2x5cGhzKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4g
Zm9udFNlbGVjdG9yKQogewogICAgIEZvbnRHbHlwaHNDYWNoZUtleSBrZXk7CiAgICAgbWFrZUZv
bnRHbHlwaHNDYWNoZUtleShrZXksIGZvbnREZXNjcmlwdGlvbiwgZm9udFNlbGVjdG9yLmdldCgp
KTsKQEAgLTMwOCw3ICszMDgsNyBAQCBzdGF0aWMgUGFzc1JlZjxGb250R2x5cGhzPiByZXRyaWV2
ZU9yQWRkQ2FjaGVkRm9udEdseXBocyhjb25zdCBGb250RGVzY3JpcHRpb24mCiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEdseXBoc0NhY2hlRW50cnk+JiBuZXdFbnRyeSA9IGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CiAgICAgbmV3RW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRHbHlw
aHNDYWNoZUVudHJ5PihXVEY6Om1vdmUoa2V5KSwgRm9udEdseXBoczo6Y3JlYXRlKGZvbnRTZWxl
Y3RvcikpOwotICAgIFBhc3NSZWY8Rm9udEdseXBocz4gZ2x5cGhzID0gbmV3RW50cnktPmdseXBo
cy5nZXQoKTsKKyAgICBSZWY8Rm9udEdseXBocz4gZ2x5cGhzID0gbmV3RW50cnktPmdseXBocy5n
ZXQoKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bnJlZmVyZW5jZWRQcnVuZUludGVy
dmFsID0gNTA7CiAgICAgc3RhdGljIGNvbnN0IGludCBtYXhpbXVtRW50cmllcyA9IDQwMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaAppbmRleCAxMWQz
YTljLi5lZDllNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250R2x5cGhzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEdseXBocy5oCkBAIC02OCw4ICs2OCw4IEBAIHB1YmxpYzoKICAgICAgICAgR2x5cGhQYWdlVHJl
ZU5vZGUqIG1fcGFnZVplcm87CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmPEZvbnRHbHlw
aHM+IGNyZWF0ZShQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IEZvbnRHbHlwaHMoZm9udFNlbGVjdG9yKSk7IH0KLSAgICBzdGF0aWMg
UGFzc1JlZjxGb250R2x5cGhzPiBjcmVhdGVGb3JQbGF0Zm9ybUZvbnQoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnRHbHlwaHMo
cGxhdGZvcm1EYXRhKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZvbnRHbHlwaHM+IGNyZWF0ZShQYXNz
UmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IEZvbnRHbHlwaHMoZm9udFNlbGVjdG9yKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZvbnRHbHlwaHM+
IGNyZWF0ZUZvclBsYXRmb3JtRm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udEdseXBocyhwbGF0Zm9ybURhdGEpKTsgfQog
CiAgICAgfkZvbnRHbHlwaHMoKSB7IHJlbGVhc2VGb250RGF0YSgpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCmluZGV4IDQ4NGQ2MDQuLmE0MjEzNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaApAQCAtNTcs
MTEgKzU3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEdyYWRpZW50IDog
cHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmPEdyYWRpZW50PiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgcDAsIGNvbnN0IEZs
b2F0UG9pbnQmIHAxKQorICAgICAgICBzdGF0aWMgUmVmPEdyYWRpZW50PiBjcmVhdGUoY29uc3Qg
RmxvYXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAxKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFkaWVudChwMCwgcDEpKTsKICAgICAgICAgfQot
ICAgICAgICBzdGF0aWMgUGFzc1JlZjxHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQm
IHAwLCBmbG9hdCByMCwgY29uc3QgRmxvYXRQb2ludCYgcDEsIGZsb2F0IHIxLCBmbG9hdCBhc3Bl
Y3RSYXRpbyA9IDEpCisgICAgICAgIHN0YXRpYyBSZWY8R3JhZGllbnQ+IGNyZWF0ZShjb25zdCBG
bG9hdFBvaW50JiBwMCwgZmxvYXQgcjAsIGNvbnN0IEZsb2F0UG9pbnQmIHAxLCBmbG9hdCByMSwg
ZmxvYXQgYXNwZWN0UmF0aW8gPSAxKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBHcmFkaWVudChwMCwgcjAsIHAxLCByMSwgYXNwZWN0UmF0aW8pKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKaW5kZXggNzM2YjhmZC4uNDc0OTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zMzUsMjUg
KzMzNSwyNSBAQCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhpY3NDb250ZXh0Ojpz
dGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFBhc3NSZWY8UGF0dGVybj4gcGF0dGVybikKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCiB7
CiAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC5jbGVhcigpOwogICAgIG1fc3RhdGUuc3Ryb2tl
UGF0dGVybiA9IFdURjo6bW92ZShwYXR0ZXJuKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldEZpbGxQYXR0ZXJuKFBhc3NSZWY8UGF0dGVybj4gcGF0dGVybikKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQogewogICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50LmNsZWFyKCk7CiAgICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IFdU
Rjo6bW92ZShwYXR0ZXJuKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdy
YWRpZW50KFBhc3NSZWY8R3JhZGllbnQ+IGdyYWRpZW50KQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCkKIHsKICAgICBtX3N0
YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RGOjptb3ZlKGdyYWRpZW50KTsKICAgICBtX3N0YXRlLnN0
cm9rZVBhdHRlcm4uY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxH
cmFkaWVudChQYXNzUmVmPEdyYWRpZW50PiBncmFkaWVudCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50KQogewogICAgIG1fc3Rh
dGUuZmlsbEdyYWRpZW50ID0gV1RGOjptb3ZlKGdyYWRpZW50KTsKICAgICBtX3N0YXRlLmZpbGxQ
YXR0ZXJuLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDEzZTNhNWQuLjBlZjRiZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yMzQs
MTAgKzIzNCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENvbG9yU3BhY2Ugc3Ry
b2tlQ29sb3JTcGFjZSgpIGNvbnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0
cm9rZUNvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAKLSAgICAgICAgdm9pZCBzZXRT
dHJva2VQYXR0ZXJuKFBhc3NSZWY8UGF0dGVybj4pOworICAgICAgICB2b2lkIHNldFN0cm9rZVBh
dHRlcm4oUmVmPFBhdHRlcm4+JiYpOwogICAgICAgICBQYXR0ZXJuKiBzdHJva2VQYXR0ZXJuKCkg
Y29uc3Q7CiAKLSAgICAgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChQYXNzUmVmPEdyYWRpZW50
Pik7CisgICAgICAgIHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmKTsKICAg
ICAgICAgR3JhZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3Q7CiAKICAgICAgICAgV2luZFJ1
bGUgZmlsbFJ1bGUoKSBjb25zdDsKQEAgLTI0NiwxMCArMjQ2LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSgpIGNvbnN0OwogICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3Bh
Y2UpOwogCi0gICAgICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUGFzc1JlZjxQYXR0ZXJuPik7Cisg
ICAgICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwogICAgICAgICBQYXR0
ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0OwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RmlsbEdyYWRpZW50KFBhc3NSZWY8R3JhZGllbnQ+KTsKKyAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmKTsKICAgICAgICAgR3JhZGll
bnQqIGZpbGxHcmFkaWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0U2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oCmluZGV4IGYyMDUzOGMuLmJi
NWNjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
U291cmNlUHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIE1l
ZGlhU291cmNlUHJpdmF0ZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlUHJp
dmF0ZUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU291cmNlUHJpdmF0ZUNs
aWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVBbmRPcGVuKFBhc3NSZWY8
TWVkaWFTb3VyY2VQcml2YXRlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcml2YXRlQW5k
T3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmKSA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVRp
bWUgZHVyYXRpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCmluZGV4IDllMTE0YzYuLmE5YWNjYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpj
cmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVw
ZWF0WSkKK1JlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4gdGls
ZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQYXR0ZXJuKHRpbGVJbWFnZSwgcmVwZWF0WCwgcmVwZWF0WSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCmluZGV4IGY0MjUyNWQuLjNlZGFm
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKQEAgLTUx
LDcgKzUxLDcgQEAgY2xhc3MgSW1hZ2U7CiAKIGNsYXNzIFBhdHRlcm4gZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8UGF0dGVy
bj4gY3JlYXRlKFBhc3NSZWZQdHI8SW1hZ2U+IHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29s
IHJlcGVhdFkpOworICAgIHN0YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFBhc3NSZWZQdHI8SW1h
Z2U+IHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwogICAgIH5QYXR0ZXJu
KCk7CiAKICAgICBJbWFnZSogdGlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2Uu
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgKaW5kZXggNjRlZDU0Ni4u
NzkyNjJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWMgOiBwdWJsaWMgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24gewog
cHVibGljOgogICAgIHZpcnR1YWwgflNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFj
KCk7Ci0gICAgc3RhdGljIFBhc3NSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+
IGNyZWF0ZShpZCk7CisgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbj4gY3JlYXRlKGlkKTsKIAogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXpl
KEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBkYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWMubW0KaW5kZXggOGQ2MmFiNi4uYTY3NjBhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1S
ZXByZXNlbnRhdGlvbk1hYy5tbQpAQCAtNzEsNyArNzEsNyBAQCBTZXJpYWxpemVkUGxhdGZvcm1S
ZXByZXNlbnRhdGlvbk1hYzo6flNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKCkK
IHsKIH0KIAotUGFzc1JlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWM6OmNyZWF0ZShpZCBuYXRpdmVWYWx1ZSkKK1Jl
ZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gU2VyaWFsaXplZFBsYXRmb3JtUmVw
cmVzZW50YXRpb25NYWM6OmNyZWF0ZShpZCBuYXRpdmVWYWx1ZSkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYyhuYXRpdmVWYWx1
ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3Bl
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApp
bmRleCBjMWI4Mjk4Li5iOTA5MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ2xpcFBhdGhPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xp
cFBhdGhPcGVyYXRpb24uaApAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBTaGFw
ZUNsaXBQYXRoT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPiBjcmVh
dGUoUGFzc1JlZjxCYXNpY1NoYXBlPiBzaGFwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFw
ZUNsaXBQYXRoT3BlcmF0aW9uPiBjcmVhdGUoUmVmPEJhc2ljU2hhcGU+JiYgc2hhcGUpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24oV1RG
Ojptb3ZlKHNoYXBlKSkpOwogICAgIH0KQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gbV9zaGFwZS5wdHIoKSA9PSBzaGFwZUNsaXAubV9zaGFwZS5wdHIoKTsKICAg
ICB9CiAKLSAgICBleHBsaWNpdCBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKFBhc3NSZWY8QmFzaWNT
aGFwZT4gc2hhcGUpCisgICAgZXhwbGljaXQgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbihSZWY8QmFz
aWNTaGFwZT4mJiBzaGFwZSkKICAgICAgICAgOiBDbGlwUGF0aE9wZXJhdGlvbihTaGFwZSkKICAg
ICAgICAgLCBtX3NoYXBlKFdURjo6bW92ZShzaGFwZSkpCiAgICAgICAgICwgbV9yZWZlcmVuY2VC
b3goQm94TWlzc2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmlu
ZGV4IDdiNGE4NDEuLmM5OWVjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhZFZlcnRp
Y2FsTGF5b3V0T3ZlcmZsb3c7CiB9OwogCi1SZW5kZXJCbG9jazo6UmVuZGVyQmxvY2soRWxlbWVu
dCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBl
RmxhZ3MpCitSZW5kZXJCbG9jazo6UmVuZGVyQmxvY2soRWxlbWVudCYgZWxlbWVudCwgUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckJv
eChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyQmxvY2tG
bGFnKQogICAgICwgbV9saW5lSGVpZ2h0KC0xKQogICAgICwgbV9oYXNNYXJnaW5CZWZvcmVRdWly
ayhmYWxzZSkKQEAgLTE5Miw3ICsxOTIsNyBAQCBSZW5kZXJCbG9jazo6UmVuZGVyQmxvY2soRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkCiB7CiB9
CiAKLVJlbmRlckJsb2NrOjpSZW5kZXJCbG9jayhEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQorUmVuZGVyQmxvY2s6
OlJlbmRlckJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwg
dW5zaWduZWQgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncyB8IFJlbmRlckJsb2NrRmxhZykKICAgICAsIG1fbGlu
ZUhlaWdodCgtMSkKICAgICAsIG1faGFzTWFyZ2luQmVmb3JlUXVpcmsoZmFsc2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGYxODlkOWQuLmQ0MjMxNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC02MCw4ICs2MCw4IEBAIHB1Ymxp
YzoKICAgICBmcmllbmQgY2xhc3MgTGluZUxheW91dFN0YXRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
UmVuZGVyQmxvY2soRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNl
VHlwZUZsYWdzKTsKLSAgICBSZW5kZXJCbG9jayhEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCbG9jayhFbGVtZW50Jiwg
UmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQmxv
Y2soRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJCbG9jaygpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IGEyYzIwNzkuLjQzZDc0ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC05MSw3
ICs5MSw3IEBAIFJlbmRlckJsb2NrRmxvdzo6TWFyZ2luSW5mbzo6TWFyZ2luSW5mbyhSZW5kZXJC
bG9ja0Zsb3cmIGJsb2NrLCBMYXlvdXRVbml0IGJlZm9yCiAgICAgbV9uZWdhdGl2ZU1hcmdpbiA9
IChtX2NhbkNvbGxhcHNlTWFyZ2luQmVmb3JlV2l0aENoaWxkcmVuICYmICFibG9jay5tdXN0RGlz
Y2FyZE1hcmdpbkJlZm9yZSgpKSA/IGJsb2NrLm1heE5lZ2F0aXZlTWFyZ2luQmVmb3JlKCkgOiBM
YXlvdXRVbml0KCk7CiB9CiAKLVJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93KEVsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyQmxvY2tGbG93
OjpSZW5kZXJCbG9ja0Zsb3coRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKICAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIFJlbmRlckJs
b2NrRmxvd0ZsYWcpCiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCiAgICAgLCBtX3dp
ZHRoRm9yVGV4dEF1dG9zaXppbmcoLTEpCkBAIC0xMDEsNyArMTAxLDcgQEAgUmVuZGVyQmxvY2tG
bG93OjpSZW5kZXJCbG9ja0Zsb3coRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUodHJ1ZSk7CiB9CiAKLVJlbmRlckJsb2Nr
Rmxvdzo6UmVuZGVyQmxvY2tGbG93KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvdyhEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9jayhkb2N1
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgUmVuZGVyQmxvY2tGbG93RmxhZykKICNpZiBFTkFCTEUo
SU9TX1RFWFRfQVVUT1NJWklORykKICAgICAsIG1fd2lkdGhGb3JUZXh0QXV0b3NpemluZygtMSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCBmNjIwMzY2
Li5lOTVmZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
CkBAIC01NCw4ICs1NCw4IEBAIGVudW0gTGluZUNvdW50IHsKIAogY2xhc3MgUmVuZGVyQmxvY2tG
bG93IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJCbG9ja0Zsb3co
RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJCbG9ja0Zsb3coRG9j
dW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyQmxvY2tGbG93KEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJCbG9ja0Zsb3coRG9jdW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJCbG9ja0Zsb3coKTsKICAgICAg
ICAgCiAgICAgdmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBlNGUwMDFiLi4yMDlkNGRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBi
b29sIHNraXBCb2R5QmFja2dyb3VuZChjb25zdCBSZW5kZXJCb3gqIGJvZHlFbGVtZW50UmVuZGVy
ZXIpCiAgICAgICAgICYmIChkb2N1bWVudEVsZW1lbnRSZW5kZXJlciA9PSBib2R5RWxlbWVudFJl
bmRlcmVyLT5wYXJlbnQoKSk7CiB9CiAKLVJlbmRlckJveDo6UmVuZGVyQm94KEVsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdz
KQorUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MpCiAgICAgLCBtX21p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1fbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoKC0xKQpAQCAtMTIwLDcgKzEyMCw3IEBAIFJlbmRlckJveDo6UmVuZGVyQm94KEVsZW1lbnQm
IGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlCiAgICAg
c2V0SXNCb3goKTsKIH0KIAotUmVuZGVyQm94OjpSZW5kZXJCb3goRG9jdW1lbnQmIGRvY3VtZW50
LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKK1Jl
bmRlckJveDo6UmVuZGVyQm94KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0
KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQogICAgICwgbV9taW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCiAgICAgLCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0
aCgtMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBjNzk3Njk0Li5jNzJh
ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC02MTUsOCArNjE1LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0xheW91dEFmdGVyUmVnaW9uUmFuZ2VD
aGFuZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVy
Qm94KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVGbGFn
cyk7Ci0gICAgUmVuZGVyQm94KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVuc2ln
bmVkIGJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckJveChFbGVtZW50JiwgUmVmPFJlbmRlclN0
eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQm94KERvY3VtZW50Jiwg
UmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUm
IG5ld1N0eWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5k
ZXggZmJkZDdmMi4uYjUxMmZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCBib29sIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIEltYQogICAgIHJldHVybiB2aWV3KCkuaW1hZ2VRdWFsaXR5Q29udHJvbGxlcigp
LnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMsIGltYWdlLCBsYXllciwgc2l6
ZSk7CiB9CiAKLVJlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChFbGVt
ZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5
cGVGbGFncykKK1JlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChFbGVt
ZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZs
YWdzKQogICAgIDogUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyQm94TW9kZWxPYmplY3RGbGFnKQogewogfQogCi1S
ZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykK
K1JlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCiAg
ICAgOiBSZW5kZXJMYXllck1vZGVsT2JqZWN0KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBi
YXNlVHlwZUZsYWdzIHwgUmVuZGVyQm94TW9kZWxPYmplY3RGbGFnKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCA0ZjBjZDUy
MC4uMTE4YTJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKQEAgLTI1MSw4ICsyNTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5k
QW5pbWF0aW9ucyhkb3VibGUgdGltZSA9IDApOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyQm94
TW9kZWxPYmplY3QoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNl
VHlwZUZsYWdzKTsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVGbGFn
cyk7CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3QoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0
cm95ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmNwcAppbmRleCA4ZDNhMTBlLi44MDMwNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckJ1dHRvbjo6UmVuZGVyQnV0dG9u
KEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyQnV0dG9uOjpSZW5kZXJCdXR0b24oSFRNTEZvcm1Db250cm9sRWxlbWVudCYg
ZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94
KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2J1dHRvblRleHQoMCkKICAgICAs
IG1faW5uZXIoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
dXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAppbmRleCA3
MDEwN2E5Li43ZDA1NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5o
CkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIC8vIHRvIGRhdGUg
YXMgdGhlIGJ1dHRvbiBjaGFuZ2VzLgogY2xhc3MgUmVuZGVyQnV0dG9uIGZpbmFsIDogcHVibGlj
IFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJCdXR0b24oSFRNTEZvcm1D
b250cm9sRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJCdXR0b24o
SFRNTEZvcm1Db250cm9sRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwg
flJlbmRlckJ1dHRvbigpOwogCiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZm9ybUNvbnRy
b2xFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDAxNDU1YmIuLjQ3MWJkZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3guY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBpbnQg
bV9vcmRpbmFsSXRlcmF0aW9uOwogfTsKIAotUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OlJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQogICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKIHsKICAg
ICBzZXRDaGlsZHJlbklubGluZShmYWxzZSk7IC8vIEFsbCBvZiBvdXIgY2hpbGRyZW4gbXVzdCBi
ZSBibG9jay1sZXZlbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oCmluZGV4IDA1YTliMGYuLjQzOTBlNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgRmxleEJveEl0ZXJhdG9yOwogCiBjbGFzcyBS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewog
cHVibGljOgotICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChFbGVtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChFbGVtZW50
JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94KCk7CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCmluZGV4IGFlNTg4MGEuLjFiY2Y1
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFy
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtl
ci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJEZXRhaWxzTWFya2VyOjpSZW5kZXJEZXRhaWxzTWFy
a2VyKERldGFpbHNNYXJrZXJDb250cm9sJiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlckRldGFpbHNNYXJrZXI6OlJlbmRlckRldGFpbHNNYXJrZXIoRGV0YWlsc01h
cmtlckNvbnRyb2wmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5k
ZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCmluZGV4IGQzYWVhYmUuLjVj
YmIxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxz
TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJr
ZXIuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRl
ckRldGFpbHNNYXJrZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJEZXRhaWxzTWFya2VyKERldGFpbHNNYXJrZXJDb250cm9sJiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckRldGFpbHNNYXJrZXIoRGV0YWlsc01hcmtlckNvbnRy
b2wmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICBEZXRhaWxzTWFya2VyQ29udHJvbCYgZWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNNYXJrZXJDb250cm9sJj4obm9k
ZUZvck5vbkFub255bW91cygpKTsgfQogCiAgICAgZW51bSBPcmllbnRhdGlvbiB7IFVwLCBEb3du
LCBMZWZ0LCBSaWdodCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCmluZGV4IDhkYjY4MzUuLjhiYWUxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIEhhc2hNYXA8Y29uc3Qg
UmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRlcyo+JiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAo
KQogICAgIHJldHVybiBtYXA7CiB9CiAKLWlubGluZSBSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVt
ZW50KENvbnRhaW5lck5vZGUmIGVsZW1lbnRPckRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKK2lubGluZSBSZW5kZXJFbGVtZW50OjpS
ZW5kZXJFbGVtZW50KENvbnRhaW5lck5vZGUmIGVsZW1lbnRPckRvY3VtZW50LCBSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyT2JqZWN0
KGVsZW1lbnRPckRvY3VtZW50KQogICAgICwgbV9iYXNlVHlwZUZsYWdzKGJhc2VUeXBlRmxhZ3Mp
CiAgICAgLCBtX2FuY2VzdG9yTGluZUJveERpcnR5KGZhbHNlKQpAQCAtOTcsMTIgKzk3LDEyIEBA
IGlubGluZSBSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KENvbnRhaW5lck5vZGUmIGVsZW1l
bnRPckRvY3VtZW50LCBQYXNzUmVmPFJlCiB7CiB9CiAKLVJlbmRlckVsZW1lbnQ6OlJlbmRlckVs
ZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2ln
bmVkIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3Mp
CiAgICAgOiBSZW5kZXJFbGVtZW50KHN0YXRpY19jYXN0PENvbnRhaW5lck5vZGUmPihlbGVtZW50
KSwgV1RGOjptb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncykKIHsKIH0KIAotUmVuZGVyRWxlbWVu
dDo6UmVuZGVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQorUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxl
bWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVk
IGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJFbGVtZW50KHN0YXRpY19jYXN0PENvbnRhaW5l
ck5vZGUmPihkb2N1bWVudCksIFdURjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MpCiB7CiB9
CkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVyRWxlbWVudDo6flJlbmRlckVsZW1lbnQoKQogICAg
ICAgICB2aWV3KCkucmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2VkSW1hZ2VBbmltYXRpb25zKCp0aGlz
KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZv
cihFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICAvLyBNaW5pbWFsIHN1cHBvcnQgZm9y
IGNvbnRlbnQgcHJvcGVydGllcyByZXBsYWNpbmcgYW4gZW50aXJlIGVsZW1lbnQuCiAgICAgLy8g
V29ya3Mgb25seSBpZiB3ZSBoYXZlIGV4YWN0bHkgb25lIHBpZWNlIG9mIGNvbnRlbnQgYW5kIGl0
J3MgYSBVUkwuCkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojppbml0aWFs
aXplU3R5bGUoKQogICAgIC8vIGhhdmUgdGhlaXIgcGFyZW50IHNldCBiZWZvcmUgZ2V0dGluZyBh
IGNhbGwgdG8gaW5pdGlhbGl6ZVN0eWxlKCkgOnwKIH0KIAotdm9pZCBSZW5kZXJFbGVtZW50Ojpz
ZXRTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK3ZvaWQgUmVuZGVyRWxlbWVudDo6
c2V0U3R5bGUoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIC8vIEZJWE1FOiBTaG91
bGQgY2hhbmdlIFJlbmRlclZpZXcgc28gaXQgY2FuIHVzZSBpbml0aWFsaXplU3R5bGUgdG9vLgog
ICAgIC8vIElmIHdlIGRvIHRoYXQsIHdlIGNhbiBhc3NlcnQgbV9oYXNJbml0aWFsaXplZFN0eWxl
IHVuY29uZGl0aW9uYWxseSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
CmluZGV4IDY2NGFjM2IuLjhhMTZjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBSZW5kZXJFbGVtZW50IDogcHVibGlj
IFJlbmRlck9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyRWxlbWVudCgpOwog
Ci0gICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVGb3IoRWxlbWVudCYs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUZvcihFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKICAgICBib29sIGhh
c0luaXRpYWxpemVkU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2hhc0luaXRpYWxpemVkU3R5bGU7
IH0KIApAQCAtNDMsOSArNDMsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVTdHls
ZSgpOwogCi0gICAgdm9pZCBzZXRTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgdm9p
ZCBzZXRTdHlsZShSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIC8vIENhbGxlZCB0byB1cGRhdGUg
YSBzdHlsZSB0aGF0IGlzIGFsbG93ZWQgdG8gdHJpZ2dlciBhbmltYXRpb25zLgotICAgIHZvaWQg
c2V0QW5pbWF0YWJsZVN0eWxlKFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICB2b2lkIHNldEFu
aW1hdGFibGVTdHlsZShSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAgLy8gVGhlIHBzZXVkbyBl
bGVtZW50IHN0eWxlIGNhbiBiZSBjYWNoZWQgb3IgdW5jYWNoZWQuICBVc2UgdGhlIGNhY2hlZCBt
ZXRob2QgaWYgdGhlIHBzZXVkbyBlbGVtZW50IGRvZXNuJ3QgcmVzcGVjdAogICAgIC8vIGFueSBw
c2V1ZG8gY2xhc3NlcyAoYW5kIHRoZXJlZm9yZSBoYXMgbm8gY29uY2VwdCBvZiBjaGFuZ2luZyBz
dGF0ZSkuCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogCiAgICAgLy8gVXBkYXRlcyBvbmx5
IHRoZSBsb2NhbCBzdHlsZSBwdHIgb2YgdGhlIG9iamVjdC4gRG9lcyBub3QgdXBkYXRlIHRoZSBz
dGF0ZSBvZiB0aGUgb2JqZWN0LAogICAgIC8vIGFuZCBzbyBvbmx5IHNob3VsZCBiZSBjYWxsZWQg
d2hlbiB0aGUgc3R5bGUgaXMga25vd24gbm90IHRvIGhhdmUgY2hhbmdlZCAob3IgZnJvbSBzZXRT
dHlsZSkuCi0gICAgdm9pZCBzZXRTdHlsZUludGVybmFsKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKSB7IG1fc3R5bGUgPSBXVEY6Om1vdmUoc3R5bGUpOyB9CisgICAgdm9pZCBzZXRTdHlsZUlu
dGVybmFsKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkgeyBtX3N0eWxlID0gV1RGOjptb3ZlKHN0
eWxlKTsgfQogCiAgICAgLy8gUmVwYWludCBvbmx5IGlmIG91ciBvbGQgYm91bmRzIGFuZCBuZXcg
Ym91bmRzIGFyZSBkaWZmZXJlbnQuIFRoZSBjYWxsZXIgbWF5IHBhc3MgaW4gbmV3Qm91bmRzIGFu
ZCBuZXdPdXRsaW5lQm94IGlmIHRoZXkgYXJlIGtub3duLgogICAgIGJvb2wgcmVwYWludEFmdGVy
TGF5b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgY29uc3QgTGF5b3V0UmVjdCYgb2xkQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRP
dXRsaW5lQm94LCBjb25zdCBMYXlvdXRSZWN0KiBuZXdCb3VuZHNQdHIgPSBudWxscHRyLCBjb25z
dCBMYXlvdXRSZWN0KiBuZXdPdXRsaW5lQm94UHRyID0gbnVsbHB0cik7CkBAIC0yMDEsOCArMjAx
LDggQEAgcHJvdGVjdGVkOgogICAgICAgICBSZW5kZXJCbG9ja0Zsb3dGbGFnID0gMSA8PCA1LAog
ICAgIH07CiAKLSAgICBSZW5kZXJFbGVtZW50KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
PiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7Ci0gICAgUmVuZGVyRWxlbWVudChEb2N1bWVudCYs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5k
ZXJFbGVtZW50KEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZs
YWdzKTsKKyAgICBSZW5kZXJFbGVtZW50KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiwgdW5z
aWduZWQgYmFzZVR5cGVGbGFncyk7CiAKICAgICBib29sIGxheWVyQ3JlYXRpb25BbGxvd2VkRm9y
U3VidHJlZSgpIGNvbnN0OwogCkBAIC0yMzUsNyArMjM1LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0
YXRpYyB2b2lkIGFkZENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3Qq
LCBDb250cm9sU3RhdGVzKik7CiAKIHByaXZhdGU6Ci0gICAgUmVuZGVyRWxlbWVudChDb250YWlu
ZXJOb2RlJiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOwor
ICAgIFJlbmRlckVsZW1lbnQoQ29udGFpbmVyTm9kZSYsIFJlZjxSZW5kZXJTdHlsZT4sIHVuc2ln
bmVkIGJhc2VUeXBlRmxhZ3MpOwogICAgIHZvaWQgbm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogICAg
IHZvaWQgbm9uUHNldWRvTm9kZSgpIGNvbnN0ID0gZGVsZXRlOwogICAgIHZvaWQgZ2VuZXJhdGlu
Z05vZGUoKSBjb25zdCA9IGRlbGV0ZTsKQEAgLTI5MCw3ICsyOTAsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBib29sIHNfbm9Mb25nZXJBZmZlY3RzUGFyZW50QmxvY2s7CiB9OwogCi1pbmxpbmUg
dm9pZCBSZW5kZXJFbGVtZW50OjpzZXRBbmltYXRhYmxlU3R5bGUoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitpbmxpbmUgdm9pZCBSZW5kZXJFbGVtZW50OjpzZXRBbmltYXRhYmxlU3R5bGUo
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHNldFN0eWxlKGFuaW1hdGlvbigpLnVw
ZGF0ZUFuaW1hdGlvbnMoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IDU1NGEw
ODMuLmE2OWJhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcApAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgY29uc3QgQ29sb3ImIHVu
YXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IoKQogICAgIHJldHVybiBzdGFuZGFyZDsKIH0KIAot
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OlJlbmRlckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVy
RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJFbWJl
ZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBl
bGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyV2lkZ2V0KGVsZW1l
bnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2lzUGx1Z2luVW5hdmFpbGFibGUoZmFsc2Up
CiAgICAgLCBtX2lzVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JIaWRkZW4oZmFsc2UpCkBAIC0x
MTIsNyArMTEyLDcgQEAgUmVuZGVyRW1iZWRkZWRPYmplY3Q6On5SZW5kZXJFbWJlZGRlZE9iamVj
dCgpCiAgICAgdmlldygpLmZyYW1lVmlldygpLnJlbW92ZUVtYmVkZGVkT2JqZWN0VG9VcGRhdGUo
KnRoaXMpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRW1iZWRkZWRPYmplY3Q+IFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxldEVsZW1lbnQmIGFwcGxldCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRW1iZWRkZWRPYmplY3Q+
IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxldEVsZW1lbnQm
IGFwcGxldCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBhdXRvIHJlbmRlcmVyID0g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KGFwcGxldCwgV1RGOjptb3ZlKHN0
eWxlKSk7CiAgICAgcmVuZGVyZXItPnNldElubGluZSh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXggMTRmMGEzOC4uYTFiYTk0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmgKQEAgLTM1LDEwICszNSwxMCBAQCBjbGFzcyBUZXh0UnVuOwogLy8gRm9yIGV4YW1wbGUsIDxl
bWJlZCBzcmM9ImZvby5odG1sIj4gZG9lcyBub3QgaW52b2tlIGEgcGx1Zy1pbi4KIGNsYXNzIFJl
bmRlckVtYmVkZGVkT2JqZWN0IDogcHVibGljIFJlbmRlcldpZGdldCB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyRW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVyRWxlbWVu
dCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlckVtYmVkZGVkT2JqZWN0
KCk7CiAKLSAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckVtYmVkZGVkT2JqZWN0PiBjcmVhdGVG
b3JBcHBsZXQoSFRNTEFwcGxldEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAg
c3RhdGljIFJlbmRlclB0cjxSZW5kZXJFbWJlZGRlZE9iamVjdD4gY3JlYXRlRm9yQXBwbGV0KEhU
TUxBcHBsZXRFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKICAgICBlbnVtIFBsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uIHsKICAgICAgICAgUGx1Z2luTWlzc2luZywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCmluZGV4IDI4MWQzYWYuLjM4NjgwYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLVJlbmRlckZpZWxkc2V0OjpSZW5kZXJGaWVsZHNldChIVE1MRmllbGRTZXRFbGVtZW50
JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZpZWxkc2V0OjpS
ZW5kZXJGaWVsZHNldChIVE1MRmllbGRTZXRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHls
ZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmll
bGRzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCmluZGV4
IDEzODZjY2UuLjMxMjRhYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmllbGRzZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmll
bGRzZXQuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIVE1MRmllbGRTZXRFbGVtZW50OwogCiBj
bGFzcyBSZW5kZXJGaWVsZHNldCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVi
bGljOgotICAgIFJlbmRlckZpZWxkc2V0KEhUTUxGaWVsZFNldEVsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyRmllbGRzZXQoSFRNTEZpZWxkU2V0RWxlbWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4pOwogCiAgICAgZW51bSBGaW5kTGVnZW5kT3B0aW9uIHsgSWdub3JlRmxv
YXRpbmdPck91dE9mRmxvdywgSW5jbHVkZUZsb2F0aW5nT3JPdXRPZkZsb3cgfTsKICAgICBSZW5k
ZXJCb3gqIGZpbmRMZWdlbmQoRmluZExlZ2VuZE9wdGlvbiA9IElnbm9yZUZsb2F0aW5nT3JPdXRP
ZkZsb3cpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
aWxlVXBsb2FkQ29udHJvbC5jcHAKaW5kZXggZmFmNTQxMS4uZjhkYTkyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIGNvbnN0IGludCBkZWZhdWx0V2lkdGhOdW1DaGFycyA9IDM4OwogI2Vu
ZGlmCiBjb25zdCBpbnQgYnV0dG9uU2hhZG93SGVpZ2h0ID0gMjsKIAotUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sKEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0
LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZpbGVVcGxvYWRDb250cm9sOjpS
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCwgUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhpbnB1dCwgV1RGOjptb3ZlKHN0
eWxlKSkKICAgICAsIG1fY2FuUmVjZWl2ZURyb3BwZWRGaWxlcyhpbnB1dC5jYW5SZWNlaXZlRHJv
cHBlZEZpbGVzKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
aWxlVXBsb2FkQ29udHJvbC5oCmluZGV4IDY2NDYzNDIuLjQ3Yzg0YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCkBAIC0zMyw3
ICszMyw3IEBAIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckZpbGVVcGxv
YWRDb250cm9sIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyRmlsZVVwbG9hZENvbnRyb2woSFRNTElucHV0RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+KTsKKyAgICBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRFbGVtZW50Jiwg
UmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyRmlsZVVwbG9hZENvbnRyb2wo
KTsKIAogICAgIFN0cmluZyBidXR0b25WYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggMzZhZDcxZS4uYjI5ZTIzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC02Niw3
ICs2Niw3IEBAIHN0cnVjdCBSZW5kZXJGbGV4aWJsZUJveDo6VmlvbGF0aW9uIHsKIH07CiAKIAot
UmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KEVsZW1lbnQmIGVsZW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhp
YmxlQm94KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBS
ZW5kZXJCbG9jayhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9vcmRlckl0
ZXJhdG9yKCp0aGlzKQogICAgICwgbV9udW1iZXJPZkluRmxvd0NoaWxkcmVuT25GaXJzdExpbmUo
LTEpCkBAIC03NCw3ICs3NCw3IEBAIFJlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJv
eChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsCiAgICAgc2V0Q2hp
bGRyZW5JbmxpbmUoZmFsc2UpOyAvLyBBbGwgb2Ygb3VyIGNoaWxkcmVuIG11c3QgYmUgYmxvY2st
bGV2ZWwuCiB9CiAKLVJlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChEb2N1bWVu
dCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRmxleGlibGVC
b3g6OlJlbmRlckZsZXhpYmxlQm94KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAw
KQogICAgICwgbV9vcmRlckl0ZXJhdG9yKCp0aGlzKQogICAgICwgbV9udW1iZXJPZkluRmxvd0No
aWxkcmVuT25GaXJzdExpbmUoLTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5oCmluZGV4IDJiNmVmYWMuLjZmMTUyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC0zOCw4ICszOCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyRmxleGlibGVCb3ggOiBwdWJsaWMgUmVuZGVyQmxv
Y2sgewogcHVibGljOgotICAgIFJlbmRlckZsZXhpYmxlQm94KEVsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7Ci0gICAgUmVuZGVyRmxleGlibGVCb3goRG9jdW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyRmxleGlibGVCb3goRWxlbWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlckZsZXhpYmxlQm94KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxl
Pik7CiAgICAgdmlydHVhbCB+UmVuZGVyRmxleGlibGVCb3goKTsKIAogICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IGMwZjAxM2UuLmY3ZWU5ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJGbG93VGhyZWFkOjpS
ZW5kZXJGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fcHJldmlvdXNSZWdpb25Db3VudCgwKQog
ICAgICwgbV9hdXRvTG9naWNhbEhlaWdodFJlZ2lvbnNDb3VudCgwKQpAQCAtNjgsNyArNjgsNyBA
QCBSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bAogICAgIHNldEZsb3dUaHJlYWRTdGF0ZShJbnNpZGVP
dXRPZkZsb3dUaHJlYWQpOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJGbG93VGhy
ZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQorUmVm
PFJlbmRlclN0eWxlPiBSZW5kZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUoUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlKQogewogICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y3JlYXRlKCk7CiAgICAgbmV3U3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20ocGFyZW50U3R5bGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKaW5kZXggNjIz
ZWJmYS4uOWMyZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB3aGVuIGEg
ZGVzY2VuZGFudCBib3gncyBsYXlvdXQgaXMgZmluaXNoZWQgYW5kIGl0IGhhcyBiZWVuIHBvc2l0
aW9uZWQgd2l0aGluIGl0cyBjb250YWluZXIuCiAgICAgdmlydHVhbCB2b2lkIGZsb3dUaHJlYWRE
ZXNjZW5kYW50Qm94TGFpZE91dChSZW5kZXJCb3gqKSB7IH0KIAotICAgIHN0YXRpYyBQYXNzUmVm
PFJlbmRlclN0eWxlPiBjcmVhdGVGbG93VGhyZWFkU3R5bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlKTsKKyAgICBzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVGbG93VGhyZWFkU3R5bGUo
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJp
ZGU7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZXF1
aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgUmVuZGVyRmxvd1RocmVhZChEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJGbG93VGhyZWFkKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7
CiAKICAgICB2aXJ0dWFsIFJlbmRlckZsb3dUaHJlYWQqIGxvY2F0ZUZsb3dUaHJlYWRDb250YWlu
aW5nQmxvY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb25zdF9jYXN0PFJlbmRlckZsb3dU
aHJlYWQqPih0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNw
cAppbmRleCAzMGEyZTYzLi5hZGZlMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJGcmFtZTo6UmVuZGVyRnJhbWUoSFRNTEZyYW1lRWxlbWVudCYgZnJhbWUsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRnJhbWU6OlJlbmRlckZyYW1lKEhUTUxGcmFtZUVs
ZW1lbnQmIGZyYW1lLCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyRnJhbWVC
YXNlKGZyYW1lLCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWUuaAppbmRleCA3NGY2ODhmLi4yNjNhZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhbWUuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBIVE1MRnJhbWVFbGVt
ZW50OwogCiBjbGFzcyBSZW5kZXJGcmFtZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGcmFtZUJhc2Ug
ewogcHVibGljOgotICAgIFJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyRnJhbWUoSFRNTEZyYW1lRWxlbWVudCYsIFJlZjxSZW5k
ZXJTdHlsZT4pOwogCiAgICAgSFRNTEZyYW1lRWxlbWVudCYgZnJhbWVFbGVtZW50KCkgY29uc3Q7
CiAgICAgRnJhbWVFZGdlSW5mbyBlZGdlSW5mbygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAppbmRleCAzYWU0NGJhLi44MTNjYzNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcApAQCAtMzMsNyAr
MzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlckZyYW1lQmFzZTo6UmVuZGVy
RnJhbWVCYXNlKEhUTUxGcmFtZUVsZW1lbnRCYXNlJiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlckZyYW1lQmFzZTo6UmVuZGVyRnJhbWVCYXNlKEhUTUxGcmFtZUVs
ZW1lbnRCYXNlJiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVy
V2lkZ2V0KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmgKaW5kZXggMTdjOWQ4Zi4uYzE3YTllNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBIVE1MRnJhbWVFbGVtZW50QmFzZTsKIC8vIEJhc2UgY2xhc3MgZm9yIFJlbmRlckZy
YW1lIGFuZCBSZW5kZXJJRnJhbWUKIGNsYXNzIFJlbmRlckZyYW1lQmFzZSA6IHB1YmxpYyBSZW5k
ZXJXaWRnZXQgewogcHJvdGVjdGVkOgotICAgIFJlbmRlckZyYW1lQmFzZShIVE1MRnJhbWVFbGVt
ZW50QmFzZSYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJGcmFtZUJhc2UoSFRN
TEZyYW1lRWxlbWVudEJhc2UmLCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogcHVibGljOgogICAgIEZy
YW1lVmlldyogY2hpbGRWaWV3KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RnJhbWVWaWV3PihS
ZW5kZXJXaWRnZXQ6OndpZGdldCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5jcHAKaW5kZXggMmExYzFkMi4uYWE2ZWI2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRnJhbWVTZXQ6OlJlbmRlckZyYW1lU2V0KEhUTUxGcmFt
ZVNldEVsZW1lbnQmIGZyYW1lU2V0LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ckZyYW1lU2V0OjpSZW5kZXJGcmFtZVNldChIVE1MRnJhbWVTZXRFbGVtZW50JiBmcmFtZVNldCwg
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJveChmcmFtZVNldCwgV1RGOjpt
b3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faXNSZXNpemluZyhmYWxzZSkKICAgICAsIG1faXNDaGls
ZFJlc2l6aW5nKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQu
aAppbmRleCBiMGVlODlhLi44NjExY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVTZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBSZW5kZXJG
cmFtZVNldCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgotICAgIFJlbmRlckZy
YW1lU2V0KEhUTUxGcmFtZVNldEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyRnJhbWVTZXQoSFRNTEZyYW1lU2V0RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwog
ICAgIHZpcnR1YWwgflJlbmRlckZyYW1lU2V0KCk7CiAKICAgICBIVE1MRnJhbWVTZXRFbGVtZW50
JiBmcmFtZVNldEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGdWxsU2NyZWVuLmNwcAppbmRleCBlMTE1ZjdmLi45M2RiYzc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVy
IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRnVs
bFNjcmVlblBsYWNlaG9sZGVyKFJlbmRlckZ1bGxTY3JlZW4mIG93bmVyLCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKKyAgICBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXIoUmVuZGVyRnVs
bFNjcmVlbiYgb3duZXIsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgICAgIDogUmVuZGVy
QmxvY2tGbG93KG93bmVyLmRvY3VtZW50KCksIFdURjo6bW92ZShzdHlsZSkpCiAgICAgICAgICwg
bV9vd25lcihvd25lcikgCiAgICAgewpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFJlbmRlckZ1bGxT
Y3JlZW5QbGFjZWhvbGRlcjo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBSZW5kZXJCbG9ja0Zsb3c6
OndpbGxCZURlc3Ryb3llZCgpOwogfQogCi1SZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2Ny
ZWVuKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGRvY3VtZW50LCBXVEY6
Om1vdmUoc3R5bGUpKQogICAgICwgbV9wbGFjZWhvbGRlcigwKQogewpAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFJlbmRlckZ1bGxTY3JlZW46OndpbGxCZURlc3Ryb3llZCgpCiAgICAgUmVuZGVyRmxl
eGlibGVCb3g6OndpbGxCZURlc3Ryb3llZCgpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gY3JlYXRlRnVsbFNjcmVlblN0eWxlKCkKK3N0YXRpYyBSZWY8UmVuZGVyU3R5bGU+IGNy
ZWF0ZUZ1bGxTY3JlZW5TdHlsZSgpCiB7CiAgICAgYXV0byBmdWxsc2NyZWVuU3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlRGVmYXVsdFN0eWxlKCk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lk
IFJlbmRlckZ1bGxTY3JlZW46OnNldFBsYWNlaG9sZGVyKFJlbmRlckJsb2NrKiBwbGFjZWhvbGRl
cikKICAgICBtX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7CiB9CiAKLXZvaWQgUmVuZGVyRnVs
bFNjcmVlbjo6Y3JlYXRlUGxhY2Vob2xkZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNv
bnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCkKK3ZvaWQgUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRl
UGxhY2Vob2xkZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBMYXlvdXRSZWN0JiBm
cmFtZVJlY3QpCiB7CiAgICAgaWYgKHN0eWxlLmdldCgpLndpZHRoKCkuaXNBdXRvKCkpCiAgICAg
ICAgIHN0eWxlLmdldCgpLnNldFdpZHRoKExlbmd0aChmcmFtZVJlY3Qud2lkdGgoKSwgRml4ZWQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVu
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCmluZGV4IDli
NmM4ZGIuLmZkYTJmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGdWxsU2NyZWVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxT
Y3JlZW4uaApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UmVuZGVyRnVsbFNjcmVlbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKKyAgICBSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAK
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyRnVsbFNjcmVlbiI7IH0KIAogICAgIHZvaWQgc2V0UGxhY2Vob2xkZXIoUmVu
ZGVyQmxvY2sqKTsKICAgICBSZW5kZXJCbG9jayogcGxhY2Vob2xkZXIoKSB7IHJldHVybiBtX3Bs
YWNlaG9sZGVyOyB9Ci0gICAgdm9pZCBjcmVhdGVQbGFjZWhvbGRlcihQYXNzUmVmPFJlbmRlclN0
eWxlPiwgY29uc3QgTGF5b3V0UmVjdCYgZnJhbWVSZWN0KTsKKyAgICB2b2lkIGNyZWF0ZVBsYWNl
aG9sZGVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgTGF5b3V0UmVjdCYgZnJhbWVSZWN0KTsK
IAogICAgIHN0YXRpYyBSZW5kZXJGdWxsU2NyZWVuKiB3cmFwUmVuZGVyZXIoUmVuZGVyT2JqZWN0
KiwgUmVuZGVyRWxlbWVudCosIERvY3VtZW50Jik7CiAgICAgdm9pZCB1bndyYXBSZW5kZXJlcihi
b29sJiByZXF1aXJlc1JlbmRlclRyZWVSZWJ1aWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAppbmRleCAwMTJiYWM2Li41NDUwZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gZ3Jvd0Fib3ZlTWF4QnJlYWR0aFRyYWNrSW5kZXhlczsKIH07CiAKLVJl
bmRlckdyaWQ6OlJlbmRlckdyaWQoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJHcmlkOjpSZW5kZXJHcmlkKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50LCBXVEY6Om1vdmUo
c3R5bGUpLCAwKQogICAgICwgbV9vcmRlckl0ZXJhdG9yKCp0aGlzKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggNTU2ZGViZS4uZWMxNjk4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEdyaWRJdGVt
V2l0aFNwYW47CiAKIGNsYXNzIFJlbmRlckdyaWQgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2sg
ewogcHVibGljOgotICAgIFJlbmRlckdyaWQoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKKyAgICBSZW5kZXJHcmlkKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJHcmlkKCk7CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCmluZGV4IDYyMWNmMjguLmIy
NWZiN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2Fu
dmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi1SZW5kZXJIVE1MQ2FudmFzOjpSZW5kZXJIVE1MQ2FudmFzKEhUTUxD
YW52YXNFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ckhUTUxDYW52YXM6OlJlbmRlckhUTUxDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmIGVsZW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBX
VEY6Om1vdmUoc3R5bGUpLCBlbGVtZW50LnNpemUoKSkKIHsKICAgICAvLyBBY3R1YWwgc2l6ZSBp
cyBub3Qga25vd24geWV0LCByZXBvcnQgdGhlIGRlZmF1bHQgaW50cmluc2ljIHNpemUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaAppbmRleCBkMjVjMWM3Li5m
Njk5YWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENh
bnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgK
QEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRl
ckhUTUxDYW52YXMgZmluYWwgOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgewogcHVibGljOgotICAg
IFJlbmRlckhUTUxDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVySFRNTENhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4pOwogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAppbmRleCA5MGM2MzU3
Li4yNjQyZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAgICAgCi1SZW5kZXJJRnJhbWU6OlJlbmRlcklGcmFtZShIVE1MSUZyYW1lRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJJRnJhbWU6
OlJlbmRlcklGcmFtZShIVE1MSUZyYW1lRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKICAgICA6IFJlbmRlckZyYW1lQmFzZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUp
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCmluZGV4IDQyMDk2
NWIuLjEzYTUxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKQEAg
LTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVuZGVyVmlldzsKIAogY2xhc3MgUmVuZGVySUZyYW1lIGZp
bmFsIDogcHVibGljIFJlbmRlckZyYW1lQmFzZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySUZyYW1l
KEhUTUxJRnJhbWVFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlcklG
cmFtZShIVE1MSUZyYW1lRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogCiAgICAgSFRNTElG
cmFtZUVsZW1lbnQmIGlmcmFtZUVsZW1lbnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZmE1NzQyNC4uMzQ4MzRlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBS
ZW5kZXJJbWFnZTo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYg
cmVjdHMsIHVuc2lnbmVkLAogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4
ZWxSYXRpbykKK1JlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjb25zdCBmbG9hdCBp
bWFnZURldmljZVBpeGVsUmF0aW8pCiAgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEY6
Om1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCiAgICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFn
ZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHls
ZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKICAgICAs
IG1fbmVlZHNUb1NldFNpemVGb3JBbHRUZXh0KGZhbHNlKQpAQCAtMTM0LDcgKzEzNCw3IEBAIFJl
bmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSwgU3R5bGVJbWFnCiAgICAgICAgIG1faGFzU2hhZG93Q29udHJvbHMgPSBkb3du
Y2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KS5oYXNTaGFkb3dDb250cm9scygpOwogfQog
Ci1SZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKK1JlbmRlckltYWdlOjpS
ZW5kZXJJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIFN0
eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChkb2N1bWVudCwgV1RG
Ojptb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQogICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1h
Z2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5
bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAg
LCBtX25lZWRzVG9TZXRTaXplRm9yQWx0VGV4dChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmgKaW5kZXggNGE4YzY5Zi4uOTUxNDJmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTM1LDggKzM1LDggQEAgY2xhc3MgSFRNTE1hcEVsZW1l
bnQ7CiAKIGNsYXNzIFJlbmRlckltYWdlIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJJbWFnZShFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIFN0eWxl
SW1hZ2UqID0gbnVsbHB0ciwgY29uc3QgZmxvYXQgPSAxLjBmKTsKLSAgICBSZW5kZXJJbWFnZShE
b2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCBTdHlsZUltYWdlKiA9IG51bGxwdHIpOwor
ICAgIFJlbmRlckltYWdlKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+LCBTdHlsZUltYWdlKiA9
IG51bGxwdHIsIGNvbnN0IGZsb2F0ID0gMS4wZik7CisgICAgUmVuZGVySW1hZ2UoRG9jdW1lbnQm
LCBSZWY8UmVuZGVyU3R5bGU+LCBTdHlsZUltYWdlKiA9IG51bGxwdHIpOwogICAgIHZpcnR1YWwg
flJlbmRlckltYWdlKCk7CiAKICAgICBSZW5kZXJJbWFnZVJlc291cmNlJiBpbWFnZVJlc291cmNl
KCkgeyByZXR1cm4gKm1faW1hZ2VSZXNvdXJjZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAppbmRleCA1Mzc2MDE2Li4wM2RjMDc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNTEsMTMgKzUxLDEzIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVuZGVySW5saW5lOjpSZW5kZXJJbmxpbmUoRWxlbWVudCYgZWxl
bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJJbmxpbmU6OlJlbmRlcklu
bGluZShFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVu
ZGVyQm94TW9kZWxPYmplY3QoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgUmVuZGVySW5saW5l
RmxhZykKIHsKICAgICBzZXRDaGlsZHJlbklubGluZSh0cnVlKTsKIH0KIAotUmVuZGVySW5saW5l
OjpSZW5kZXJJbmxpbmUoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlcklubGluZTo6UmVuZGVySW5saW5lKERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KGRvY3VtZW50
LCBXVEY6Om1vdmUoc3R5bGUpLCBSZW5kZXJJbmxpbmVGbGFnKQogewogICAgIHNldENoaWxkcmVu
SW5saW5lKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4
IGM0YjNiYjEuLjVmNTZlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmgKQEAgLTM0LDggKzM0LDggQEAgY2xhc3MgUmVuZGVyUmVnaW9uOwogCiBjbGFzcyBSZW5kZXJJ
bmxpbmUgOiBwdWJsaWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogcHVibGljOgotICAgIFJlbmRl
cklubGluZShFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlcklubGlu
ZShEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJJbmxpbmUoRWxl
bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlcklubGluZShEb2N1bWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4pOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVj
dCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZWUxMGIwZS4uOTAy
NTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC02NjA3
LDcgKzY2MDcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZW1vdmVSZWZsZWN0aW9uKCkKICAgICBt
X3JlZmxlY3Rpb24gPSBudWxscHRyOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJM
YXllcjo6Y3JlYXRlUmVmbGVjdGlvblN0eWxlKCkKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyTGF5
ZXI6OmNyZWF0ZVJlZmxlY3Rpb25TdHlsZSgpCiB7CiAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRl
clN0eWxlOjpjcmVhdGUoKTsKICAgICBuZXdTdHlsZS5nZXQoKS5pbmhlcml0RnJvbSgmcmVuZGVy
ZXIoKS5zdHlsZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXgg
ZDE2YzdiZS4uMjI2MzBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
QEAgLTExMjAsNyArMTEyMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVSZWZsZWN0aW9u
KCk7CiAgICAgdm9pZCByZW1vdmVSZWZsZWN0aW9uKCk7CiAKLSAgICBQYXNzUmVmPFJlbmRlclN0
eWxlPiBjcmVhdGVSZWZsZWN0aW9uU3R5bGUoKTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0
ZVJlZmxlY3Rpb25TdHlsZSgpOwogICAgIGJvb2wgcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb247IH0KICAgICB2b2lkIHNl
dFBhaW50aW5nSW5zaWRlUmVmbGVjdGlvbihib29sIGIpIHsgbV9wYWludGluZ0luc2lkZVJlZmxl
Y3Rpb24gPSBiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcAppbmRleCA3MmVmZjliLi43N2I3NTgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC0z
NSwxMiArMzUsMTIgQEAgYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzX2hhZExheWVyID0g
ZmFsc2U7CiBib29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNfaGFkVHJhbnNmb3JtID0gZmFs
c2U7CiBib29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcg
PSBmYWxzZTsKIAotUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVj
dChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQg
YmFzZVR5cGVGbGFncykKK1JlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxP
YmplY3QoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQg
YmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckVsZW1lbnQoZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSwgYmFzZVR5cGVGbGFncyB8IFJlbmRlckxheWVyTW9kZWxPYmplY3RGbGFnKQogewogfQog
Ci1SZW5kZXJMYXllck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0KERvY3VtZW50
JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBl
RmxhZ3MpCitSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0KERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5
cGVGbGFncykKICAgICA6IFJlbmRlckVsZW1lbnQoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSks
IGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJMYXllck1vZGVsT2JqZWN0RmxhZykKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCmluZGV4
IGMzNjg3MGUuLmM3MWQ5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyTW9kZWxPYmplY3QuaApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVCb3goKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVt
ZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOwotICAg
IFJlbmRlckxheWVyTW9kZWxPYmplY3QoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwg
dW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CisgICAgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVk
IGJhc2VUeXBlRmxhZ3MpOwogCiAgICAgdm9pZCBjcmVhdGVMYXllcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IDE2ZTY3ZWMuLjZhYzA1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBA
IC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGludCBp
bnZhbGlkTGluZUhlaWdodCA9IC0xOwogCi1SZW5kZXJMaW5lQnJlYWs6OlJlbmRlckxpbmVCcmVh
ayhIVE1MRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJMaW5lQnJlYWs6OlJlbmRlckxpbmVCcmVhayhIVE1MRWxlbWVudCYgZWxlbWVudCwgUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KGVsZW1lbnQsIFdU
Rjo6bW92ZShzdHlsZSksIDApCiAgICAgLCBtX2lubGluZUJveFdyYXBwZXIobnVsbHB0cikKICAg
ICAsIG1fY2FjaGVkTGluZUhlaWdodChpbnZhbGlkTGluZUhlaWdodCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAppbmRleCBmNWY5NjQzLi5kOGViYTZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCkBAIC0zMiw3ICszMiw3
IEBAIGNsYXNzIFBvc2l0aW9uOwogCiBjbGFzcyBSZW5kZXJMaW5lQnJlYWsgZmluYWwgOiBwdWJs
aWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogcHVibGljOgotICAgIFJlbmRlckxpbmVCcmVhayhI
VE1MRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJMaW5lQnJlYWso
SFRNTEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJMaW5l
QnJlYWsoKTsKIAogICAgIC8vIEZJWE1FOiBUaGUgbGllcyBoZXJlIGtlZXAgcmVuZGVyIHRyZWUg
ZHVtcCBiYXNlZCB0ZXN0IHJlc3VsdHMgdW5jaGFuZ2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDliMjBlMDQuLjBlYzRiM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29u
c3QgaW50IGRlZmF1bHRTaXplID0gNDsKIC8vIHdpZGdldCwgYnV0IEknbSBub3Qgc3VyZSB0aGlz
IGlzIHJpZ2h0IGZvciB0aGUgbmV3IGNvbnRyb2wuCiBjb25zdCBpbnQgYmFzZWxpbmVBZGp1c3Rt
ZW50ID0gNzsKIAotUmVuZGVyTGlzdEJveDo6UmVuZGVyTGlzdEJveChIVE1MU2VsZWN0RWxlbWVu
dCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJMaXN0Qm94OjpS
ZW5kZXJMaXN0Qm94KEhUTUxTZWxlY3RFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CiAgICAgLCBtX29wdGlvbnNDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3Njcm9sbFRvUmV2ZWFsU2Vs
ZWN0aW9uQWZ0ZXJMYXlvdXQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guaAppbmRleCA4YWU2OWRiLi5hMjYzNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSFRNTFNlbGVjdEVsZW1l
bnQ7CiAKIGNsYXNzIFJlbmRlckxpc3RCb3ggZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93
LCBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEgewogcHVibGljOgotICAgIFJlbmRlckxpc3RCb3goSFRN
TFNlbGVjdEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTGlzdEJv
eChIVE1MU2VsZWN0RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJl
bmRlckxpc3RCb3goKTsKIAogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3RFbGVtZW50KCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0
ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAppbmRl
eCA4Yzk5Y2UwLi5lM2UyNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0SXRlbS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJMaXN0SXRlbTo6UmVuZGVyTGlzdEl0ZW0o
RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJMaXN0
SXRlbTo6UmVuZGVyTGlzdEl0ZW0oRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQog
ICAgICwgbV9tYXJrZXIobnVsbHB0cikKICAgICAsIG1faGFzRXhwbGljaXRWYWx1ZShmYWxzZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKaW5kZXggOWE1Yzk0MC4u
ZWQzNmYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJ
dGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKQEAg
LTMzLDcgKzMzLDcgQEAgY2xhc3MgUmVuZGVyTGlzdE1hcmtlcjsKIAogY2xhc3MgUmVuZGVyTGlz
dEl0ZW0gZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJMaXN0SXRlbShFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckxp
c3RJdGVtKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJM
aXN0SXRlbSgpOwogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCA5ZWE3NTBkLi42ZTMwZjQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0x
MTE3LDcgKzExMTcsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoRUxpc3RTdHlsZVR5cGUgdHlw
ZSwgaW50IHZhbHVlKQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVJlbmRl
ckxpc3RNYXJrZXI6OlJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0mIGxpc3RJdGVtLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckxpc3RNYXJrZXI6OlJlbmRlckxpc3RN
YXJrZXIoUmVuZGVyTGlzdEl0ZW0mIGxpc3RJdGVtLCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQog
ICAgIDogUmVuZGVyQm94KGxpc3RJdGVtLmRvY3VtZW50KCksIFdURjo6bW92ZShzdHlsZSksIDAp
CiAgICAgLCBtX2xpc3RJdGVtKGxpc3RJdGVtKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmgKaW5kZXggMWE3ZmI3MC4uY2M5NTNkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCkBAIC0zNSw3ICszNSw3IEBAIFN0
cmluZyBsaXN0TWFya2VyVGV4dChFTGlzdFN0eWxlVHlwZSwgaW50IHZhbHVlKTsKIC8vIFRoZSBS
ZW5kZXJMaXN0TWFya2VyIGFsd2F5cyBoYXMgdG8gYmUgYSBjaGlsZCBvZiBhIFJlbmRlckxpc3RJ
dGVtLgogY2xhc3MgUmVuZGVyTGlzdE1hcmtlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewog
cHVibGljOgotICAgIFJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0mLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSYsIFJlZjxS
ZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlckxpc3RNYXJrZXIoKTsKIAogICAgIGNv
bnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKaW5kZXggMDA1NDZhMC4uZmVhNzFmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJNZWRpYTo6UmVuZGVyTWVkaWEoSFRNTE1l
ZGlhRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJN
ZWRpYTo6UmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckltYWdlKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CiB7CiAgICAgc2V0SGFzU2hhZG93Q29udHJvbHModHJ1ZSk7CiB9CiAKLVJlbmRlck1lZGlhOjpS
ZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSwgY29uc3QgSW50U2l6ZSYgaW50cmluc2ljU2l6ZSkKK1JlbmRlck1lZGlhOjpSZW5k
ZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
LCBjb25zdCBJbnRTaXplJiBpbnRyaW5zaWNTaXplKQogICAgIDogUmVuZGVySW1hZ2UoZWxlbWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKICAgICBzZXRJbnRyaW5zaWNTaXplKGludHJpbnNpY1Np
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAppbmRleCBjMzY2ODAwLi43
NDJjMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaApAQCAtMzUsOCAr
MzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1lZGlhIDogcHVibGlj
IFJlbmRlckltYWdlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1l
bnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgY29uc3QgSW50U2l6ZSYgaW50cmluc2ljU2l6ZSk7
CisgICAgUmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+LCBjb25z
dCBJbnRTaXplJiBpbnRyaW5zaWNTaXplKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJNZWRpYSgpOwog
CiAgICAgSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8SFRNTE1lZGlhRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAKaW5kZXggOTVmZmM3OC4uNDA4NTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0zNSw3ICsz
NSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJD
b250YWluZXI6OlJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKEVsZW1lbnQmIGVsZW1l
bnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJD
b250YWluZXI6OlJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKEVsZW1lbnQmIGVsZW1l
bnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBSZW5kZXJN
ZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KCkKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1SZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcjo6UmVu
ZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVudCYgZWxlbWVudCwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5l
cjo6UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVudCYgZWxlbWVudCwg
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUmVuZGVyTWVk
aWFDb250cm9sVGltZWxpbmVDb250YWluZXI6OmxheW91dCgpCiAKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiAKLVJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OlJlbmRlclRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpSZW5kZXJUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xF
bGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVs
ZW1lbnRzLmgKaW5kZXggN2E2NWMyOS4uMzAyMTE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJNZWRpYVZvbHVtZVNsaWRl
ckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAg
IFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIoRWxlbWVudCYs
IFJlZjxSZW5kZXJTdHlsZT4pOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KSBvdmVycmlkZTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgUmVuZGVyTWVk
aWFDb250cm9sVGltZWxpbmVDb250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVC
b3ggewogcHVibGljOgotICAgIFJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKEVs
ZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWVkaWFDb250cm9sVGlt
ZWxpbmVDb250YWluZXIoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKQEAgLTYwLDcgKzYwLDcgQEAgcHJp
dmF0ZToKIAogY2xhc3MgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50KEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKIAog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCA4MTMwMWQ0Li4xYTJiZjc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTcx
LDcgKzcxLDcgQEAgc3RhdGljIHNpemVfdCBzZWxlY3RlZE9wdGlvbkNvdW50KGNvbnN0IFJlbmRl
ck1lbnVMaXN0JiByZW5kZXJNZW51TGlzdCkKIH0KICNlbmRpZgogCi1SZW5kZXJNZW51TGlzdDo6
UmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyTWVudUxpc3Q6OlJlbmRlck1lbnVMaXN0KEhUTUxTZWxlY3RF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyRmxl
eGlibGVCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fYnV0dG9uVGV4dChu
dWxscHRyKQogICAgICwgbV9pbm5lckJsb2NrKG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5oCmluZGV4IDNkOWI1ZjQuLjhmNTk4MTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNz
IFJlbmRlclRleHQ7CiBjbGFzcyBSZW5kZXJNZW51TGlzdCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJG
bGV4aWJsZUJveCwgcHJpdmF0ZSBQb3B1cE1lbnVDbGllbnQgewogCiBwdWJsaWM6Ci0gICAgUmVu
ZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJNZW51TGlzdCgpOwogCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQm
IHNlbGVjdEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0
ZXIuY3BwCmluZGV4IGQzYzQyOTEuLjk4NjMxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1ldGVyLmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlck1ldGVyOjpSZW5kZXJNZXRlcihI
VE1MRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJN
ZXRlcjo6UmVuZGVyTWV0ZXIoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKaW5kZXggYzZlMjYwYS4u
ODA1YTEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKQEAgLTMyLDcg
KzMyLDcgQEAgY2xhc3MgSFRNTE1ldGVyRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyTWV0ZXIgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNZXRlcihI
VE1MRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNZXRlcihIVE1M
RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlck1ldGVyKCk7
CiAKICAgICBIVE1MTWV0ZXJFbGVtZW50KiBtZXRlckVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVh
ZC5jcHAKaW5kZXggOGRmMzMxZC4uYmJhMTMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIFJlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZDo6Z1NoaWZ0aW5nU3Bhbm5lciA9IGZhbHNlOwogCi1SZW5kZXJNdWx0aUNvbHVtbkZs
b3dUaHJlYWQ6OlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyRmxvd1RocmVhZChkb2N1bWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKICAgICAsIG1fbGFzdFNldFdvcmtlZE9uKG51bGxwdHIpCiAgICAgLCBtX2Nv
bHVtbkNvdW50KDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5GbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKaW5kZXggZjk1NWZhMi4uYTAxNzM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJl
YWQuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlcjsKIAogY2xhc3MgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkIGZpbmFsIDogcHVi
bGljIFJlbmRlckZsb3dUaHJlYWQgewogcHVibGljOgotICAgIFJlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZChEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB+UmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmxv
d0NoaWxkSW5mbyhSZW5kZXJPYmplY3QqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmluZGV4IDI5ZmI2ZmEuLmZlMjFl
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
blNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U2V0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRl
ck11bHRpQ29sdW1uU2V0OjpSZW5kZXJNdWx0aUNvbHVtblNldChSZW5kZXJGbG93VGhyZWFkJiBm
bG93VGhyZWFkLCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck11bHRpQ29sdW1u
U2V0OjpSZW5kZXJNdWx0aUNvbHVtblNldChSZW5kZXJGbG93VGhyZWFkJiBmbG93VGhyZWFkLCBS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyUmVnaW9uU2V0KGZsb3dUaHJlYWQu
ZG9jdW1lbnQoKSwgV1RGOjptb3ZlKHN0eWxlKSwgZmxvd1RocmVhZCkKICAgICAsIG1fY29tcHV0
ZWRDb2x1bW5Db3VudCgxKQogICAgICwgbV9jb21wdXRlZENvbHVtbldpZHRoKDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCmluZGV4IDhjYWMw
NTAuLmZkNGVkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGNv
bWUgYmVmb3JlIGFuZCBhZnRlciB0aGUgc3Bhbi4KIGNsYXNzIFJlbmRlck11bHRpQ29sdW1uU2V0
IGZpbmFsIDogcHVibGljIFJlbmRlclJlZ2lvblNldCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTXVs
dGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJNdWx0aUNvbHVtblNldChSZW5kZXJGbG93VGhyZWFkJiwgUmVmPFJlbmRlclN0eWxl
Pik7CiAKICAgICBSZW5kZXJCbG9ja0Zsb3cqIG11bHRpQ29sdW1uQmxvY2tGbG93KCkgY29uc3Qg
eyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihwYXJlbnQoKSk7IH0KICAgICBSZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCo+KGZsb3dUaHJl
YWQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwCmluZGV4IGVhYTFmMzcuLmQw
YTA0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciogUmVuZGVyTXVsdGlDb2x1bW5T
cGFubmVyUGxhY2Vob2xkZXI6OmNyZWF0ZQogICAgIHJldHVybiBwbGFjZWhvbGRlcjsKIH0KIAot
UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI6OlJlbmRlck11bHRpQ29sdW1uU3Bh
bm5lclBsYWNlaG9sZGVyKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCwg
UmVuZGVyQm94KiBzcGFubmVyLCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck11
bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOjpSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlcihSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQsIFJlbmRlckJv
eCogc3Bhbm5lciwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJveChmbG93
VGhyZWFkLT5kb2N1bWVudCgpLCBXVEY6Om1vdmUoc3R5bGUpLCBSZW5kZXJCb3hNb2RlbE9iamVj
dEZsYWcpCiAgICAgLCBtX3NwYW5uZXIoc3Bhbm5lcikKICAgICAsIG1fZmxvd1RocmVhZChmbG93
VGhyZWFkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaAppbmRleCBjZjlkMWIzLi5kMDg5MGNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5T
cGFubmVyUGxhY2Vob2xkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6
CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkKCkgY29uc3QgeyBy
ZXR1cm4gbV9mbG93VGhyZWFkOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVuZGVyTXVsdGlDb2x1bW5T
cGFubmVyUGxhY2Vob2xkZXIoUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiwgUmVuZGVyQm94
KiBzcGFubmVyLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTXVsdGlDb2x1bW5T
cGFubmVyUGxhY2Vob2xkZXIoUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiwgUmVuZGVyQm94
KiBzcGFubmVyLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJN
dWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKaW5kZXggZjc4YjNiMi4uOGU2Mjc2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQu
Y3BwCkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQ6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQogICAgIDogUmVuZGVyUmVnaW9uKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUp
LCBudWxscHRyKQogICAgICwgbV9oYXNDdXN0b21SZWdpb25TdHlsZShmYWxzZSkKICAgICAsIG1f
aGFzQXV0b0xvZ2ljYWxIZWlnaHQoZmFsc2UpCkBAIC01Nyw3ICs1Nyw3IEBAIFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50Ojp+UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKQogewogfQogCi1QYXNzUmVm
PFJlbmRlclN0eWxlPiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y3JlYXRlU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKQorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudDo6Y3JlYXRlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKQog
ewogICAgIGF1dG8gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRo
RGlzcGxheSgmcGFyZW50U3R5bGUsIEJMT0NLKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAppbmRleCAyYzI0NjlmLi5iODZkOTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQuaApAQCAtNDksMTAgKzQ5LDEwIEBAIGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJSZWdpb24gewogcHVi
bGljOgotICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiwgUmVmPFJl
bmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKTsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUpOworICAgIHN0YXRpYyBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZVN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwCmluZGV4IGY1ZTg4MjUuLmQ0ZjUzYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC00Niw3
ICs0Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTmFtZWRGbG93VGhyZWFk
OjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSwgUGFzc1JlZjxXZWJLaXROYW1lZEZsb3c+IG5hbWVkRmxvdykKK1JlbmRl
ck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVmPFdlYktpdE5hbWVkRmxvdz4gbmFtZWRGbG93
KQogICAgIDogUmVuZGVyRmxvd1RocmVhZChkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAg
ICAsIG1faGFzUmVnaW9uc1dpdGhTdHlsaW5nKGZhbHNlKQogICAgICwgbV9kaXNwYXRjaFJlZ2lv
bk92ZXJzZXRDaGFuZ2VFdmVudChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAppbmRleCBiNWYxNjRiLi4yZDg0OWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCkBAIC00
Niw3ICs0Niw3IEBAIHR5cGVkZWYgTGlzdEhhc2hTZXQ8RWxlbWVudCo+IE5hbWVkRmxvd0NvbnRl
bnRFbGVtZW50czsKIAogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGZpbmFsIDogcHVibGlj
IFJlbmRlckZsb3dUaHJlYWQsIHB1YmxpYyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiBwdWJsaWM6
Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4sIFBhc3NSZWY8V2ViS2l0TmFtZWRGbG93Pik7CisgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFk
KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiwgUmVmPFdlYktpdE5hbWVkRmxvdz4pOwogICAg
IHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd1RocmVhZCgpOwogCiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBmbG93VGhyZWFkTmFtZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJQcm9ncmVzcy5jcHAKaW5kZXggYjI1YWEwMS4uYTRlOTZiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUHJvZ3Jlc3M6OlJlbmRlclByb2dyZXNzKEhUTUxF
bGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclByb2dy
ZXNzOjpSZW5kZXJQcm9ncmVzcyhIVE1MRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUp
KQogICAgICwgbV9wb3NpdGlvbihIVE1MUHJvZ3Jlc3NFbGVtZW50OjpJbnZhbGlkUG9zaXRpb24p
CiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0VGltZSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUHJvZ3Jlc3MuaAppbmRleCA3N2NiNDRjLi5jZmJmMThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaApAQCAtMjksNyArMjksNyBAQCBjbGFzcyBIVE1M
UHJvZ3Jlc3NFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJQcm9ncmVzcyBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclByb2dyZXNzKEhUTUxFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclByb2dyZXNzKEhUTUxFbGVtZW50
JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyUHJvZ3Jlc3MoKTsKIAog
ICAgIGRvdWJsZSBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwCmluZGV4IDU1ZmY2ZmQuLjdhYWM1ZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcApAQCAtMzEsNyArMzEs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlbmRlclF1b3RlOjpSZW5kZXJRdW90ZShEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlLCBRdW90ZVR5cGUgcXVvdGUpCitSZW5kZXJRdW90ZTo6UmVuZGVy
UXVvdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBRdW90ZVR5
cGUgcXVvdGUpCiAgICAgOiBSZW5kZXJJbmxpbmUoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CiAgICAgLCBtX3R5cGUocXVvdGUpCiAgICAgLCBtX2RlcHRoKC0xKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUXVvdGUuaAppbmRleCAzYmI1MGRmLi43ZDA0NTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFJlbmRlclF1b3RlIGZpbmFsIDogcHVibGljIFJlbmRlcklubGluZSB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyUXVvdGUoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
PiwgUXVvdGVUeXBlKTsKKyAgICBSZW5kZXJRdW90ZShEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHls
ZT4sIFF1b3RlVHlwZSk7CiAgICAgdmlydHVhbCB+UmVuZGVyUXVvdGUoKTsKIAogICAgIHZvaWQg
YXR0YWNoUXVvdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAK
aW5kZXggYTU3NDExNC4uNzlmMmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKK1JlbmRlclJlZ2lv
bjo6UmVuZGVyUmVnaW9uKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUs
IFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxl
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQog
ICAgICwgbV9wYXJlbnROYW1lZEZsb3dUaHJlYWQobnVsbHB0cikKQEAgLTU2LDcgKzU2LDcgQEAg
UmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIFJlbmRlckYKIHsKIH0KIAotUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdp
b24oRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVy
Rmxvd1RocmVhZCogZmxvd1RocmVhZCkKK1JlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVyRmxvd1RocmVhZCog
Zmxvd1RocmVhZCkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKICAgICAsIG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQogICAgICwgbV9wYXJlbnROYW1l
ZEZsb3dUaHJlYWQobnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aAppbmRleCBiM2YzMWI4Li43ZWQ4YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5oCkBAIC0xMjksOCArMTI5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVF1YWRzRm9yQm94SW5SZWdpb24oVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiwgY29u
c3QgUmVuZGVyQm94KiwgZmxvYXQsIGZsb2F0KSB7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRl
clJlZ2lvbihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIFJlbmRlckZsb3dUaHJlYWQq
KTsKLSAgICBSZW5kZXJSZWdpb24oRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgUmVu
ZGVyRmxvd1RocmVhZCopOworICAgIFJlbmRlclJlZ2lvbihFbGVtZW50JiwgUmVmPFJlbmRlclN0
eWxlPiwgUmVuZGVyRmxvd1RocmVhZCopOworICAgIFJlbmRlclJlZ2lvbihEb2N1bWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4sIFJlbmRlckZsb3dUaHJlYWQqKTsKIAogICAgIHZvaWQgZW5zdXJlT3Zl
cmZsb3dGb3JCb3goY29uc3QgUmVuZGVyQm94KiwgUmVmUHRyPFJlbmRlck92ZXJmbG93PiYsIGJv
b2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9u
U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuY3BwCmlu
ZGV4IGFlMDczYjEuLmQ5YjViYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZWdpb25TZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb25TZXQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVuZGVyUmVnaW9uU2V0OjpSZW5kZXJSZWdpb25TZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVyRmxvd1RocmVhZCYgZmxvd1RocmVhZCkK
K1JlbmRlclJlZ2lvblNldDo6UmVuZGVyUmVnaW9uU2V0KERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVyRmxvd1RocmVhZCYgZmxvd1RocmVhZCkKICAgICA6
IFJlbmRlclJlZ2lvbihkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgJmZsb3dUaHJlYWQpCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmgKaW5kZXggOTE2
OWI2MC4uYzZhNGI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvblNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25T
ZXQuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBleHBhbmRUb0VuY29tcGFz
c0Zsb3dUaHJlYWRDb250ZW50c0lmTmVlZGVkKCk7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJS
ZWdpb25TZXQoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgUmVuZGVyRmxvd1RocmVh
ZCYpOworICAgIFJlbmRlclJlZ2lvblNldChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4sIFJl
bmRlckZsb3dUaHJlYWQmKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbEZs
b3dUaHJlYWQoKSBvdmVycmlkZSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCmluZGV4IGIyN2RmMmMuLjAwZTkyZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtNDYsMjEgKzQ2LDIxIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBjRGVmYXVsdFdpZHRoID0gMzAwOwogY29uc3QgaW50
IGNEZWZhdWx0SGVpZ2h0ID0gMTUwOwogCi1SZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQo
RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJSZXBs
YWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBSZW5kZXJS
ZXBsYWNlZEZsYWcpCiAgICAgLCBtX2ludHJpbnNpY1NpemUoY0RlZmF1bHRXaWR0aCwgY0RlZmF1
bHRIZWlnaHQpCiB7CiAgICAgc2V0UmVwbGFjZWQodHJ1ZSk7CiB9CiAKLVJlbmRlclJlcGxhY2Vk
OjpSZW5kZXJSZXBsYWNlZChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKK1JlbmRlclJlcGxhY2VkOjpS
ZW5kZXJSZXBsYWNlZChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBj
b25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSksIFJlbmRlclJlcGxhY2VkRmxhZykKICAgICAsIG1faW50cmluc2lj
U2l6ZShpbnRyaW5zaWNTaXplKQogewogICAgIHNldFJlcGxhY2VkKHRydWUpOwogfQogCi1SZW5k
ZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKK1JlbmRl
clJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4gc3R5bGUsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgOiBSZW5k
ZXJCb3goZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIFJlbmRlclJlcGxhY2VkRmxhZykKICAg
ICAsIG1faW50cmluc2ljU2l6ZShpbnRyaW5zaWNTaXplKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAppbmRleCA1NTAxY2QzLi43MTc0MjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtMzksOSArMzksOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSBjb25zdDsKIAogcHJvdGVj
dGVkOgotICAgIFJlbmRlclJlcGxhY2VkKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
Ci0gICAgUmVuZGVyUmVwbGFjZWQoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCBjb25z
dCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKTsKLSAgICBSZW5kZXJSZXBsYWNlZChEb2N1bWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXpl
KTsKKyAgICBSZW5kZXJSZXBsYWNlZChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4sIGNvbnN0IExheW91dFNp
emUmIGludHJpbnNpY1NpemUpOworICAgIFJlbmRlclJlcGxhY2VkKERvY3VtZW50JiwgUmVmPFJl
bmRlclN0eWxlPiwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsaWNhLmNwcAppbmRleCAzNmFkOWQ1Li5jNWI4YTExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUmVwbGljYTo6UmVuZGVyUmVwbGljYShEb2N1bWVudCYg
ZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUmVwbGljYTo6UmVu
ZGVyUmVwbGljYShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAg
ICAgOiBSZW5kZXJCb3goZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDApCiB7CiAgICAgLy8g
VGhpcyBpcyBhIGhhY2suIFJlcGxpY2FzIGFyZSBzeW50aGV0aWMsIGFuZCBkb24ndCBwaWNrIHVw
IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxpY2EuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
aWNhLmgKaW5kZXggNWY0YTVhZS4uZGMyMzk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVwbGljYS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUmVuZGVyUmVwbGljYSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgot
ICAgIFJlbmRlclJlcGxpY2EoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyUmVwbGljYShEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwg
flJlbmRlclJlcGxpY2EoKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsaWNhIjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwCmluZGV4IDQ0NTZkYmYuLjYzZGI5MGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0
aWMgaW5saW5lIFJlbmRlclJ1YnlSdW4mIGZpbmRSdWJ5UnVuUGFyZW50KFJlbmRlck9iamVjdCYg
Y2hpbGQpCiAKIC8vPT09IHJ1YnkgYXMgaW5saW5lIG9iamVjdCA9PT0KIAotUmVuZGVyUnVieUFz
SW5saW5lOjpSZW5kZXJSdWJ5QXNJbmxpbmUoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJSdWJ5QXNJbmxpbmU6OlJlbmRlclJ1YnlBc0lubGluZShF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVySW5s
aW5lKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CkBAIC0yMjUsNyArMjI1LDcgQEAg
dm9pZCBSZW5kZXJSdWJ5QXNJbmxpbmU6OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQp
CiAKIC8vPT09IHJ1YnkgYXMgYmxvY2sgb2JqZWN0ID09PQogCi1SZW5kZXJSdWJ5QXNCbG9jazo6
UmVuZGVyUnVieUFzQmxvY2soRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJSdWJ5QXNCbG9jazo6UmVuZGVyUnVieUFzQmxvY2soRWxlbWVudCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVt
ZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnkuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5LmgKaW5kZXggZjNhODZkNy4uZjMyZmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieS5oCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIDxydWJ5
PiB3aGVuIHVzZWQgYXMgJ2Rpc3BsYXk6aW5saW5lJwogY2xhc3MgUmVuZGVyUnVieUFzSW5saW5l
IGZpbmFsIDogcHVibGljIFJlbmRlcklubGluZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieUFz
SW5saW5lKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieUFz
SW5saW5lKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJS
dWJ5QXNJbmxpbmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3Qq
IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CkBAIC03MSw3
ICs3MSw3IEBAIHByaXZhdGU6CiAvLyA8cnVieT4gd2hlbiB1c2VkIGFzICdkaXNwbGF5OmJsb2Nr
JyBvciAnZGlzcGxheTppbmxpbmUtYmxvY2snCiBjbGFzcyBSZW5kZXJSdWJ5QXNCbG9jayBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlBc0Js
b2NrKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieUFzQmxv
Y2soRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlB
c0Jsb2NrKCk7CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAKaW5kZXggMzEzMjk5OC4uZGE2MzhhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwCkBAIC0zNiw3ICszNiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUnVieUJhc2U6OlJlbmRlclJ1YnlC
YXNlKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJSdWJ5QmFzZTo6UmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEY6Om1vdmUo
c3R5bGUpKQogewogICAgIHNldElubGluZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5QmFzZS5oCmluZGV4IGZiNzViNjMuLjkyZjJmN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFJl
bmRlclJ1YnlSdW47CiAKIGNsYXNzIFJlbmRlclJ1YnlCYXNlIGZpbmFsIDogcHVibGljIFJlbmRl
ckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QmFzZSgpOwogICAgIAogICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJSdWJ5QmFzZSAoYW5vbnltb3VzKSI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSdWJ5UnVuLmNwcAppbmRleCAyNWQ5MDBjLi43OTJkNzU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotUmVuZGVyUnVieVJ1bjo6UmVu
ZGVyUnVieVJ1bihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyUnVieVJ1bjo6UmVuZGVyUnVieVJ1bihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpCiB7CiAgICAgc2V0UmVwbGFjZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAppbmRleCAwOTY4NWI2Li42NTBhMzk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3Mg
UmVuZGVyUnVieVRleHQ7CiAKIGNsYXNzIFJlbmRlclJ1YnlSdW4gZmluYWwgOiBwdWJsaWMgUmVu
ZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5UnVuKERvY3VtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlSdW4oRG9jdW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5UnVuKCk7CiAKICAgICBib29sIGhh
c1J1YnlUZXh0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlU
ZXh0LmNwcAppbmRleCBkYzc2Zjc3Li4yNDI1NWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZW5kZXJSdWJ5VGV4dDo6UmVuZGVyUnVieVRleHQoRWxlbWVudCYgZWxlbWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJSdWJ5VGV4dDo6UmVuZGVyUnVi
eVRleHQoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJl
bmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAppbmRleCA4ZmQzYzIzLi5mYmYzNzU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaApAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclJ1YnlUZXh0IGZpbmFsIDog
cHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieVRleHQoRWxl
bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5VGV4dChFbGVtZW50
JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieVRleHQoKTsKIAog
ICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihu
b2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggNjZkZmQyZi4uODc0M2I3ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKQEAgLTM0
LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTY3JvbGxiYXJQYXJ0
OjpSZW5kZXJTY3JvbGxiYXJQYXJ0KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUsIFJlbmRlclNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBh
cnQpCitSZW5kZXJTY3JvbGxiYXJQYXJ0OjpSZW5kZXJTY3JvbGxiYXJQYXJ0KERvY3VtZW50JiBk
b2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVyU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCkKICAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEY6
Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9zY3JvbGxiYXIoc2Nyb2xsYmFyKQogICAgICwgbV9w
YXJ0KHBhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuaAppbmRleCBlZTY0MjJiLi45ZGNmNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVuZGVy
U2Nyb2xsYmFyOwogCiBjbGFzcyBSZW5kZXJTY3JvbGxiYXJQYXJ0IGZpbmFsIDogcHVibGljIFJl
bmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KERvY3VtZW50Jiwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4sIFJlbmRlclNjcm9sbGJhciogPSAwLCBTY3JvbGxiYXJQYXJ0
ID0gTm9QYXJ0KTsKKyAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KERvY3VtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiwgUmVuZGVyU2Nyb2xsYmFyKiA9IDAsIFNjcm9sbGJhclBhcnQgPSBOb1BhcnQpOwog
ICAgIAogICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclBhcnQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggZDgyNDg2NS4uODg3
NTNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
Y3BwCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAotUmVuZGVyU2VhcmNoRmllbGQ6OlJlbmRlclNlYXJjaEZpZWxkKEhU
TUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyU2VhcmNoRmllbGQ6OlJlbmRlclNlYXJjaEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1l
bnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fc2VhcmNoUG9wdXBJc1Zp
c2libGUoZmFsc2UpCiAgICAgLCBtX3NlYXJjaFBvcHVwKDApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCmluZGV4IGY5M2U1ZjUuLjljYTAwNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCkBAIC0zMyw3ICsz
Myw3IEBAIGNsYXNzIFNlYXJjaFBvcHVwTWVudTsKIAogY2xhc3MgUmVuZGVyU2VhcmNoRmllbGQg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLCBwcml2YXRlIFBvcHVw
TWVudUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU2VhcmNoRmllbGQoSFRNTElucHV0RWxl
bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTZWFyY2hGaWVsZChIVE1M
SW5wdXRFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyU2Vh
cmNoRmllbGQoKTsKIAogICAgIHZvaWQgdXBkYXRlQ2FuY2VsQnV0dG9uVmlzaWJpbGl0eSgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAppbmRleCAxMDc5
NzllLi45YWU3Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGludCBSZW5k
ZXJTbGlkZXI6OmRlZmF1bHRUcmFja0xlbmd0aCA9IDEyOTsKIAotUmVuZGVyU2xpZGVyOjpSZW5k
ZXJTbGlkZXIoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJTbGlkZXI6OlJlbmRlclNsaWRlcihIVE1MSW5wdXRFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyRmxleGlibGVCb3goZWxl
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKICAgICAvLyBXZSBhc3N1bWUgUmVuZGVyU2xpZGVy
IHdvcmtzIG9ubHkgd2l0aCA8aW5wdXQgdHlwZT1yYW5nZT4uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2xpZGVyLmgKaW5kZXggODZkYTIyNS4uMzFkMzAyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBSZW5kZXJT
bGlkZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRyYWNrTGVuZ3RoOwogCi0gICAgUmVuZGVyU2xpZGVyKEhU
TUxJbnB1dEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU2xpZGVy
KEhUTUxJbnB1dEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5k
ZXJTbGlkZXIoKTsKIAogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwCmluZGV4IDU2OTcyMTIuLjZkZmMzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNDgsNyArNDgsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3QoZWxlbWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKICAgICAsIG1fc25hcHNob3RSZXNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9u
KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uaAppbmRleCA2OWI1YTYxLi45NGUxMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJFbWJlZGRlZE9iamVjdCB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4oKTsKIAogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdJbklt
YWdlRWxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAKaW5kZXggOTBlNDQ1MC4uMjUxOTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKEVsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGU6OlJl
bmRlclRhYmxlKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAg
OiBSZW5kZXJCbG9jayhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9oZWFk
KG51bGxwdHIpCiAgICAgLCBtX2Zvb3QobnVsbHB0cikKQEAgLTczLDcgKzczLDcgQEAgUmVuZGVy
VGFibGU6OlJlbmRlclRhYmxlKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQogICAgIG1fY29sdW1uUG9zLmZpbGwoMCwgMSk7CiB9CiAKLVJlbmRlclRhYmxlOjpS
ZW5kZXJUYWJsZShEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5
bGUpLCAwKQogICAgICwgbV9oZWFkKG51bGxwdHIpCiAgICAgLCBtX2Zvb3QobnVsbHB0cikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKaW5kZXggOTRkMWNiZC4uOTA3ZDVjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTQ0LDggKzQ0LDggQEAg
ZW51bSBTa2lwRW1wdHlTZWN0aW9uc1ZhbHVlIHsgRG9Ob3RTa2lwRW1wdHlTZWN0aW9ucywgU2tp
cEVtcHR5U2VjdGlvbnMgfTsKIAogY2xhc3MgUmVuZGVyVGFibGUgOiBwdWJsaWMgUmVuZGVyQmxv
Y2sgewogcHVibGljOgotICAgIFJlbmRlclRhYmxlKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0
eWxlPik7Ci0gICAgUmVuZGVyVGFibGUoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyVGFibGUoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
clRhYmxlKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVy
VGFibGUoKTsKIAogICAgIC8vIFBlciBDU1MgMyB3cml0aW5nLW1vZGU6ICJUaGUgZmlyc3QgYW5k
IHNlY29uZCB2YWx1ZXMgb2YgdGhlICdib3JkZXItc3BhY2luZycgcHJvcGVydHkgcmVwcmVzZW50
IHNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNhcHRpb24uY3BwCmluZGV4IGNlMzI0MWMuLmY4ZmU1ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uY3BwCkBAIC0yNCw3ICsy
NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVGFibGVDYXB0aW9uOjpSZW5k
ZXJUYWJsZUNhcHRpb24oRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJUYWJsZUNhcHRpb246OlJlbmRlclRhYmxlQ2FwdGlvbihFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1l
bnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDYXB0aW9uLmgKaW5kZXggYTc2M2Y4My4uZmQzODdhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uaApAQCAtMjgsNyArMjgsNyBA
QCBjbGFzcyBSZW5kZXJUYWJsZTsKIAogY2xhc3MgUmVuZGVyVGFibGVDYXB0aW9uIGZpbmFsIDog
cHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVDYXB0aW9u
KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVDYXB0aW9u
KEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUYWJsZUNh
cHRpb24oKTsKIAogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDEyODIwODkuLjljOTA3NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC01NCw3ICs1
NCw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyVGFibGVDZWxsIDogcHVibGljIFJlbmRlckJs
b2NrRmxvdyB7CiBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVyVGFibGVDZWxsKSA9PSBzaXpl
b2YoU2FtZVNpemVBc1JlbmRlclRhYmxlQ2VsbCksIFJlbmRlclRhYmxlQ2VsbF9zaG91bGRfc3Rh
eV9zbWFsbCk7CiBDT01QSUxFX0FTU0VSVChzaXplb2YoQ29sbGFwc2VkQm9yZGVyVmFsdWUpID09
IDgsIENvbGxhcHNlZEJvcmRlclZhbHVlX3Nob3VsZF9zdGF5X3NtYWxsKTsKIAotUmVuZGVyVGFi
bGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChFbGVtZW50JiBl
bGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVs
ZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2NvbHVtbih1bnNldENvbHVtbkluZGV4
KQogICAgICwgbV9jZWxsV2lkdGhDaGFuZ2VkKGZhbHNlKQpAQCAtNjYsNyArNjYsNyBAQCBSZW5k
ZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKICAgICB1cGRhdGVDb2xBbmRSb3dTcGFuRmxhZ3MoKTsKIH0KIAot
UmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFibGVDZWxs
KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRl
ckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fY29sdW1uKHVu
c2V0Q29sdW1uSW5kZXgpCiAgICAgLCBtX2NlbGxXaWR0aENoYW5nZWQoZmFsc2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXggNjUxMzM0Yy4uYzY4NzMy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMzgs
OCArMzgsOCBAQCBlbnVtIEluY2x1ZGVCb3JkZXJDb2xvck9yTm90IHsgRG9Ob3RJbmNsdWRlQm9y
ZGVyQ29sb3IsIEluY2x1ZGVCb3JkZXJDb2xvciB9OwogCiBjbGFzcyBSZW5kZXJUYWJsZUNlbGwg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJs
ZUNlbGwoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJUYWJsZUNl
bGwoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVDZWxs
KEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUYWJsZUNlbGwoRG9jdW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICAKICAgICB1bnNpZ25lZCBjb2xTcGFuKCkgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcApp
bmRleCBiYzE4NDk4Li44OGU0ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNvbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJUYWJsZUNvbDo6UmVuZGVyVGFibGVD
b2woRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJU
YWJsZUNvbDo6UmVuZGVyVGFibGVDb2woRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQog
ICAgICwgbV9zcGFuKDEpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNv
bC5oCmluZGV4IDBmM2NkOTcuLjMxOTk3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNvbC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclRhYmxlQ2VsbDsK
IAogY2xhc3MgUmVuZGVyVGFibGVDb2wgZmluYWwgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJUYWJsZUNvbChFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlclRhYmxlQ29sKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICBFbGVt
ZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5v
bkFub255bW91cygpKTsgfQogCiAgICAgdm9pZCBjbGVhclByZWZlcnJlZExvZ2ljYWxXaWR0aHNE
aXJ0eUJpdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3Bw
CmluZGV4IDJkNTg5ZDMuLjJhOTk2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlUm93LmNwcApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGFibGVSb3c6OlJlbmRlclRh
YmxlUm93KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1fcm93SW5kZXgodW5zZXRSb3dJbmRleCkKIHsKICAgICBzZXRJbmxpbmUoZmFs
c2UpOwogfQogCi1SZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3coRG9jdW1lbnQmIGRvY3Vt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlUm93OjpSZW5kZXJU
YWJsZVJvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAg
OiBSZW5kZXJCb3goZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDApCiAgICAgLCBtX3Jvd0lu
ZGV4KHVuc2V0Um93SW5kZXgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVJvdy5oCmluZGV4IDVkMDExNDk5Li42ZWRmNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuaApAQCAtMzQsOCArMzQsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWF4Um93SW5kZXggPSAweDdGRkZGRkZFOyAvLyAyLDE0Nyw0ODMsNjQ2CiAKIGNsYXNzIFJl
bmRlclRhYmxlUm93IGZpbmFsIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyVGFibGVSb3coRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJU
YWJsZVJvdyhEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUYWJs
ZVJvdyhFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVSb3coRG9j
dW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogICAgIFJlbmRlclRhYmxlUm93KiBuZXh0Um93
KCkgY29uc3Q7CiAgICAgUmVuZGVyVGFibGVSb3cqIHByZXZpb3VzUm93KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IGRh
NDMxMDQuLmQ3YTc1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRh
dGVMb2dpY2FsSGVpZ2h0Rm9yQ2VsbChSZW5kZXJUYWJsZVNlY3Rpb246OlJvd1N0cnVjdCYgcm93
CiAgICAgfQogfQogCi1SZW5kZXJUYWJsZVNlY3Rpb246OlJlbmRlclRhYmxlU2VjdGlvbihFbGVt
ZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlU2Vj
dGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkK
ICAgICAsIG1fY0NvbCgwKQogICAgICwgbV9jUm93KDApCkBAIC05Niw3ICs5Niw3IEBAIFJlbmRl
clRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0CiAgICAgc2V0SW5saW5lKGZhbHNlKTsKIH0KIAotUmVuZGVyVGFi
bGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0
aW9uKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJl
bmRlckJveChkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fY0NvbCgwKQog
ICAgICwgbV9jUm93KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmgKaW5kZXggZWU4NTkyOS4uNjMxNzZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaApAQCAtNjQsOCArNjQsOCBAQCBjbGFzcyBSZW5k
ZXJUYWJsZVJvdzsKIAogY2xhc3MgUmVuZGVyVGFibGVTZWN0aW9uIGZpbmFsIDogcHVibGljIFJl
bmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGVTZWN0aW9uKERvY3VtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlU2VjdGlvbihFbGVtZW50JiwgUmVm
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVTZWN0aW9uKERvY3VtZW50JiwgUmVmPFJl
bmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGFibGVTZWN0aW9uKCk7CiAKICAgICBS
ZW5kZXJUYWJsZVJvdyogZmlyc3RSb3coKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDFkMWIzZTUuLjI2MTJkMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtMzcs
NyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclRleHRDb250cm9sOjpS
ZW5kZXJUZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVudCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENv
bnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxl
KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgK
aW5kZXggZWFjNTVlNS4uOTM1Y2UyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flJlbmRlclRleHRDb250cm9sKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCYgdGV4dEZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxSZW5kZXJTdHls
ZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNv
bnN0ID0gMDsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIGNhblNjcm9sbCgpIGNvbnN0
OwpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIFJl
bmRlclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKICAgICAvLyBUaGlzIGNvbnZlbmllbmNlIGZ1bmN0
aW9uIHNob3VsZCBub3QgYmUgbWFkZSBwdWJsaWMgYmVjYXVzZSBpbm5lclRleHRFbGVtZW50IG1h
eSBvdXRsaXZlIHRoZSByZW5kZXIgdHJlZS4KICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQqIGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdDsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToK
IC8vIGFueW1vcmUuCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyIGZpbmFs
IDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZW5k
ZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorICAgIGV4cGxpY2l0IFJlbmRlclRleHRDb250cm9sSW5uZXJDb250
YWluZXIoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICAgICAg
OiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgIHsgfQog
ICAgIHZpcnR1YWwgflJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXIoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuY3BwCmluZGV4IDgyZmIzNWIuLjM0ZmQzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtMzIsNyAr
MzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyVGV4dENvbnRyb2woZWxl
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTg3LDcgKzg3LDcgQEAgaW50IFJlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNl
bGluZVR5cGUsIGJvb2wKICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKGJh
c2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpOwogfQog
Ci1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y3JlYXRl
SW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0CitSZWY8
UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpjcmVhdGVJbm5lclRleHRT
dHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QKIHsKICAgICBhdXRvIHRl
eHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgIHRleHRCbG9ja1N0eWxl
LmdldCgpLmluaGVyaXRGcm9tKHN0YXJ0U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAppbmRleCAwNjc5YTBmLi5h
ZWFjZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUuaApAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBIVE1MVGV4dEFyZWFF
bGVtZW50OwogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJUZXh0Q29udHJvbCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUoSFRNTFRleHRBcmVhRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoKTsKIAog
ICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQmIHRleHRBcmVhRWxlbWVudCgpIGNvbnN0OwpAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlQ29udHJv
bExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNvbnRl
bnRIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQ
b3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdGFydFN0eWxlKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKSBvdmVycmlk
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggY2RlY2IzMy4uOWRkZjEyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6UmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJUZXh0Q29udHJvbChlbGVtZW50LCBXVEY6Om1v
dmUoc3R5bGUpKQogICAgICwgbV9zaG91bGREcmF3Q2Fwc0xvY2tJbmRpY2F0b3IoZmFsc2UpCiAg
ICAgLCBtX2Rlc2lyZWRJbm5lclRleHRMb2dpY2FsSGVpZ2h0KC0xKQpAQCAtMzY0LDcgKzM2NCw3
IEBAIExheW91dFVuaXQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjb21wdXRlQ29udHJv
bExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsCiAgICAgcmV0dXJuIGxpbmVIZWlnaHQgKyBub25D
b250ZW50SGVpZ2h0OwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFy
dFN0eWxlKSBjb25zdAorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmU6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBj
b25zdAogewogICAgIGF1dG8gdGV4dEJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7
CiAgICAgdGV4dEJsb2NrU3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20oc3RhcnRTdHlsZSk7CkBAIC0z
ODcsNyArMzg3LDcgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW4KICAgICByZXR1cm4gdGV4dEJs
b2NrU3R5bGU7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6Y3JlYXRlSW5uZXJCbG9ja1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0
eWxlKSBjb25zdAorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6
OmNyZWF0ZUlubmVyQmxvY2tTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29u
c3QKIHsKICAgICBhdXRvIGlubmVyQmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsK
ICAgICBpbm5lckJsb2NrU3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20oc3RhcnRTdHlsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmgKaW5kZXggOTA2M2M0My4uNjYzYWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaApAQCAtMzIsMTEgKzMy
LDExIEBAIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZSA6IHB1YmxpYyBSZW5kZXJUZXh0Q29udHJvbCB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUoKTsKICAgICAvLyBGSVhNRTogTW92ZSBjcmVhdGUqU3R5bGUoKSB0byB0aGVpciBj
bGFzc2VzLgotICAgIHZpcnR1YWwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0IG92ZXJyaWRlOwotICAg
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyQmxvY2tTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7CisgICAgdmlydHVhbCBSZWY8UmVuZGVyU3R5bGU+IGNy
ZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdCBv
dmVycmlkZTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyQmxvY2tTdHlsZShjb25z
dCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7CiAKICAgICB2b2lkIGNhcHNMb2NrU3Rh
dGVNYXlIYXZlQ2hhbmdlZCgpOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgaW5saW5lIEhUTUxFbGVt
ZW50KiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmlubmVyQmxvY2tFbGVtZW50KCkgY29u
c3QKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrIGZpbmFsIDogcHVibGljIFJl
bmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2Nr
KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIFJlbmRl
clRleHRDb250cm9sSW5uZXJCbG9jayhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQogICAgICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUu
Y3BwCmluZGV4IGQ0M2Y5OTYuLjNiNTFjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWVFRDdWUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVuZGVyVlRUQ3VlOjpSZW5kZXJWVFRDdWUoVlRUQ3VlQm94JiBlbGVtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclZUVEN1ZTo6UmVuZGVyVlRUQ3VlKFZUVEN1ZUJv
eCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxv
dyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9jdWUoZWxlbWVudC5nZXRDdWUo
KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAppbmRleCAzMDZiMjU4
Li4zNjJhZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRU
Q3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oCkBAIC00
MCw3ICs0MCw3IEBAIGNsYXNzIFZUVEN1ZUJveDsKIAogY2xhc3MgUmVuZGVyVlRUQ3VlIGZpbmFs
IDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVlRUQ3VlKFZU
VEN1ZUJveCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJWVFRDdWUoVlRUQ3Vl
Qm94JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAK
aW5kZXggZjdlY2ZjYS4uZWJlYzc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VmlkZW8uY3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVmlkZW86OlJlbmRlclZpZGVvKEhUTUxWaWRl
b0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVmlk
ZW86OlJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJNZWRpYShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQog
ewogICAgIHNldEludHJpbnNpY1NpemUoY2FsY3VsYXRlSW50cmluc2ljU2l6ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggNzQ4MjRiNy4uOWRjMGFhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgSFRNTFZpZGVvRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyVmlkZW8gZmluYWwgOiBwdWJsaWMg
UmVuZGVyTWVkaWEgewogcHVibGljOgotICAgIFJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVmlkZW8oSFRNTFZpZGVvRWxlbWVu
dCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclZpZGVvKCk7CiAKICAg
ICBIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAzZGU4OTYxLi5iYjRlOTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0cnVjdCBT
ZWxlY3Rpb25JdGVyYXRvciB7CiAgICAgfQogfTsKIAotUmVuZGVyVmlldzo6UmVuZGVyVmlldyhE
b2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVmll
dzo6UmVuZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAg
LCBtX2ZyYW1lVmlldygqZG9jdW1lbnQudmlldygpKQogICAgICwgbV9zZWxlY3Rpb25VbnNwbGl0
U3RhcnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IGU3NWM5ZTQu
LmJiOTdkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtNDQsNyAr
NDQsNyBAQCBjbGFzcyBSZW5kZXJRdW90ZTsKIAogY2xhc3MgUmVuZGVyVmlldyBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJCbG9ja0Zsb3csIHB1YmxpYyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyVmlldyhEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJWaWV3KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+
UmVuZGVyVmlldygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoaXRUZXN0KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcAppbmRleCBmNTQ5OWU5Li4wYTQwYzZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgdm9p
ZCBtb3ZlV2lkZ2V0VG9QYXJlbnRTb29uKFdpZGdldCogY2hpbGQsIEZyYW1lVmlldyogcGFyZW50
KQogICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNjaGVkdWxlV2lk
Z2V0VG9Nb3ZlKGNoaWxkLCBwYXJlbnQpOwogfQogCi1SZW5kZXJXaWRnZXQ6OlJlbmRlcldpZGdl
dChIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyV2lkZ2V0OjpSZW5kZXJXaWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBl
bGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxl
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAppbmRleCBhNTU1NzhhLi4wZTBk
OGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCkBAIC03NSw3ICs3
NSw3IEBAIHB1YmxpYzoKICAgICBXZWFrUHRyPFJlbmRlcldpZGdldD4gY3JlYXRlV2Vha1B0cigp
IHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBSZW5kZXJXaWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlcldpZGdldChIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGUgZmluYWw7CiAg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAppbmRleCAzZTlhNTQy
Li40ZWZjN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKICAgICAKLVJlbmRlck1h
dGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayhFbGVtZW50JiBjb250YWluZXIsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2Nr
KEVsZW1lbnQmIGNvbnRhaW5lciwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRl
ckZsZXhpYmxlQm94KGNvbnRhaW5lciwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KIAotUmVuZGVy
TWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxCbG9jazo6UmVuZGVyTWF0aE1MQmxv
Y2soRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVu
ZGVyRmxleGlibGVCb3goZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5k
ZXggZjhmMTJhOC4uNjg4ZWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtNDEsOCArNDEsOCBAQCBjbGFzcyBSZW5k
ZXJNYXRoTUxPcGVyYXRvcjsKIAogY2xhc3MgUmVuZGVyTWF0aE1MQmxvY2sgOiBwdWJsaWMgUmVu
ZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTEJsb2NrKEVsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWF0aE1MQmxvY2soRG9jdW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MQmxvY2soRWxlbWVudCYs
IFJlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTEJsb2NrKERvY3VtZW50JiwgUmVm
PFJlbmRlclN0eWxlPik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKICAgICAK
QEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgUmVuZGVyTWF0aE1MVGFibGUgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyVGFibGUgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlck1h
dGhNTFRhYmxlKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
ICAgIGV4cGxpY2l0IFJlbmRlck1hdGhNTFRhYmxlKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCiAgICAgICAgIDogUmVuZGVyVGFibGUoZWxlbWVudCwgV1RGOjptb3Zl
KHN0eWxlKSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCmluZGV4IGE4NDkzNWEuLjFmMjYwMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZlbmNlZC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5h
bWVzOwogc3RhdGljIGNvbnN0IGNoYXIqIGdPcGVuaW5nQnJhY2VDaGFyID0gIigiOwogc3RhdGlj
IGNvbnN0IGNoYXIqIGdDbG9zaW5nQnJhY2VDaGFyID0gIikiOwogCi1SZW5kZXJNYXRoTUxGZW5j
ZWQ6OlJlbmRlck1hdGhNTEZlbmNlZChNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTEZlbmNlZDo6UmVu
ZGVyTWF0aE1MRmVuY2VkKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIFJl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RG
Ojptb3ZlKHN0eWxlKSkKICAgICAsIG1fY2xvc2VGZW5jZVJlbmRlcmVyKG51bGxwdHIpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZl
bmNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5j
ZWQuaAppbmRleCAzNzAzYTljLi4wM2YxODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MRmVuY2VkIGZpbmFs
IDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MRmVu
Y2VkKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyTWF0aE1MRmVuY2VkKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+KTsKICAgICBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVt
ZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCY+
KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3Bw
CmluZGV4IDVjZDNhNjAuLjQxMGY2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCkBAIC00Myw3ICs0Myw3
IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBnTGluZU1lZGl1bSA9IDEuZjsKIHN0YXRpYyBjb25zdCBm
bG9hdCBnTGluZVRoaWNrID0gMy5mOwogc3RhdGljIGNvbnN0IGZsb2F0IGdGcmFjdGlvbkJhcldp
ZHRoID0gMC4wNWY7CiAKLVJlbmRlck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFjdGlv
bihNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFjdGlvbihN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkK
ICAgICAsIG1fbGluZVRoaWNrbmVzcyhnTGluZU1lZGl1bSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCA4
ZjJjNzE3Li5iYjM3NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTWF0aE1MRnJhY3Rpb24gZmluYWwgOiBwdWJsaWMg
UmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTEZyYWN0aW9uKE1h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyTWF0aE1MRnJhY3Rpb24oTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4pOwogCiAgICAgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVu
dCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmPihu
b2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAgICAgZmxvYXQgbGluZVRoaWNrbmVzcygpIGNvbnN0
IHsgcmV0dXJuIG1fbGluZVRoaWNrbmVzczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5jcHAKaW5kZXggNDdlMDBjMi4uOTFlOTk1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE1hdGguY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxNYXRoOjpSZW5kZXJNYXRo
TUxNYXRoKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyTWF0aE1MTWF0aDo6UmVuZGVyTWF0aE1MTWF0aChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MUm93KGVsZW1lbnQsIFdURjo6bW92
ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE1hdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MTWF0aC5oCmluZGV4IGM1MWJiMGIuLjkyNWYwYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTE1h
dGggZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJN
YXRoTUxNYXRoKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0
aE1MTWF0aChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGlzUmVuZGVyTWF0aE1MTWF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MTWVuY2xvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxNZW5jbG9zZS5jcHAKaW5kZXggNmZhZDIyZS4uZWI2MjIyYyAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9z
ZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgTWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTE1lbmNsb3NlOjpSZW5kZXJNYXRoTUxN
ZW5jbG9zZShFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlck1hdGhNTE1lbmNsb3NlOjpSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MUm93KGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgKaW5kZXggNzY5ODQ4OS4uYWQwMmY2
MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNZW5jbG9zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MTWVuY2xvc2UuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxNZW5jbG9zZSBmaW5hbDogcHVibGljIFJlbmRlck1hdGhN
TFJvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MTWVuY2xvc2UoRWxlbWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50JiwgUmVm
PFJlbmRlclN0eWxlPik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNsb3NlIjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmNwcAppbmRleCA4NWUxZWZlLi5mMDc5Yzg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNw
cApAQCAtMTEzNSw3ICsxMTM1LDcgQEAgc3RhdGljIGNvbnN0IFVDaGFyIGhvcml6b250YWxPcGVy
YXRvcnNbXSA9IHsKIAogfQogCi1SZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3IoTWF0aE1MRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoTWF0aE1MRWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFRv
a2VuKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3N0cmV0Y2hIZWlnaHRBYm92
ZUJhc2VsaW5lKDApCiAgICAgLCBtX3N0cmV0Y2hEZXB0aEJlbG93QmFzZWxpbmUoMCkKQEAgLTEx
NDUsNyArMTE0NSw3IEBAIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cihNYXRoTUxFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlCiAgICAgdXBkYXRlVG9rZW5D
b250ZW50KCk7CiB9CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBT
dHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0gZm9y
bSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpCitSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0
aE1MT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBj
b25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZv
cm0gZm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpCiAgICAgOiBSZW5kZXJNYXRoTUxUb2tlbihk
b2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFz
ZWxpbmUoMCkKICAgICAsIG1fc3RyZXRjaERlcHRoQmVsb3dCYXNlbGluZSgwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5o
CmluZGV4IGU4NzFjZTAuLmZhZDEyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTYwLDggKzYwLDggQEAg
c3RydWN0IEVudHJ5IHsKIAogY2xhc3MgUmVuZGVyTWF0aE1MT3BlcmF0b3IgOiBwdWJsaWMgUmVu
ZGVyTWF0aE1MVG9rZW4gewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKE1hdGhN
TEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWF0aE1MT3BlcmF0
b3IoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgY29uc3QgU3RyaW5nJiBvcGVyYXRv
clN0cmluZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtLCB1bnNpZ25lZCBzaG9ydCBm
bGFncyA9IDApOworICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKE1hdGhNTEVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvcihEb2N1bWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4sIGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsIE1hdGhNTE9wZXJhdG9y
RGljdGlvbmFyeTo6Rm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBzdHJldGNoVG8oTGF5b3V0VW5pdCBoZWlnaHRBYm92ZUJhc2VsaW5lLCBMYXlvdXRV
bml0IGRlcHRoQmVsb3dCYXNlbGluZSk7CiAgICAgdm9pZCBzdHJldGNoVG8oTGF5b3V0VW5pdCB3
aWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKaW5kZXggYjY4YzI5Mi4uNTFlNjk3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSYWRpY2FsT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcApAQCAtNTYsNyArNTYsNyBAQCBjb25z
dCBmbG9hdCBnUmFkaWNhbExpbmVUaGlja25lc3NFbXMgPSAwLjAyZjsKIC8vIFJhZGljYWwgdGhp
Y2sgbGluZSB0aGlja25lc3MgKGVtKQogY29uc3QgZmxvYXQgZ1JhZGljYWxUaGlja0xpbmVUaGlj
a25lc3NFbXMgPSAwLjFmOwogCi1SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OlJlbmRlck1h
dGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxSYWRp
Y2FsT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQog
ICAgIDogUmVuZGVyTWF0aE1MT3BlcmF0b3IoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIFN0
cmluZygmZ1JhZGljYWxDaGFyYWN0ZXIsIDEpLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlBy
ZWZpeCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oCmluZGV4IDVhMmE3OWYuLmQ1MzQ0
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUmFkaWNhbE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvciBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJNYXRoTUxPcGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1M
UmFkaWNhbE9wZXJhdG9yKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJl
bmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBzdHJldGNoVG8oTGF5b3V0VW5pdCBoZWlnaHRBYm92ZUJhc2VsaW5l
LCBMYXlvdXRVbml0IGRlcHRoQmVsb3dCYXNlbGluZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5
b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvb3QuY3BwCmluZGV4IGFmMmQ5MGEuLmQzNWM2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcApAQCAtNTUs
MTIgKzU1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEluIG9yZGVyIHRvIGFjY2VwdCBp
bnZhbGlkIG1hcmt1cCBhbmQgdG8gaGFuZGxlIDxtcm9vdD4gYW5kIDxtc3FydD4gY29uc2lzdGVu
dGx5LCB3ZSB3aWxsIGFsbG93IGFueSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhlIEJhc2VXcmFw
cGVyIG9mIDxtcm9vdD4gdG9vLgogLy8gV2Ugd2lsbCBhbGxvdyB0aGUgSW5kZXhXcmFwcGVyIHRv
IGJlIGVtcHR5IGFuZCBpdCB3aWxsIGFsd2F5cyBjb250YWluIHRoZSBsYXN0IGNoaWxkIG9mIHRo
ZSA8bXJvb3Q+IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGVsZW1lbnRzLgogCi1SZW5kZXJNYXRo
TUxSb290OjpSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdChFbGVtZW50
JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxv
Y2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KIAotUmVuZGVyTWF0aE1MUm9vdDo6
UmVuZGVyTWF0aE1MUm9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdChEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhk
b2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKaW5kZXggZWNhNTc1MS4uZDg4OWE2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKQEAgLTQyLDggKzQyLDggQEAgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdCA6IHB1Ymxp
YyBSZW5kZXJNYXRoTUxCbG9jayB7CiBmcmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdFdyYXBw
ZXI7CiAKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWF0aE1MUm9vdChEb2N1bWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxSb290KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSkgb3ZlcnJpZGU7CkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFJvb3RXcmFw
cGVyIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CiBmcmllbmQgY2xhc3MgUmVuZGVy
TWF0aE1MUm9vdDsKIAogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyKERvY3Vt
ZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCisgICAgUmVuZGVyTWF0
aE1MUm9vdFdyYXBwZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQogICAgICAgICA6IFJlbmRlck1hdGhNTFJvdyhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkg
eyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJvdy5jcHAKaW5kZXggY2YwNDlhZC4uM2IxMTkxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcApAQCAt
MzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIE1h
dGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFJvdzo6UmVu
ZGVyTWF0aE1MUm93KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAg
ICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQog
Ci1SZW5kZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxS
b3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVu
ZGVyTWF0aE1MQmxvY2soZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAppbmRleCBi
ODdkOTY0Li42YTZiNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmgKQEAgLTM2LDggKzM2LDggQEAgY2xhc3MgUmVuZGVyTWF0aE1M
Um9vdDsKIAogY2xhc3MgUmVuZGVyTWF0aE1MUm93IDogcHVibGljIFJlbmRlck1hdGhNTEJsb2Nr
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb3coRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxSb3coRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyTWF0aE1MUm93KEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJNYXRoTUxSb3coRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogICAg
IHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm93PiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFy
ZW50UmVuZGVyZXIoUmVuZGVyTWF0aE1MUm9vdCYpOwogICAgIHZvaWQgdXBkYXRlT3BlcmF0b3JQ
cm9wZXJ0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAppbmRleCBiNWFkYzIzLi5jNGMzNjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2Ny
aXB0cy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGJvb2wgaXNQcmVzY3JpcHQoY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QpCiAgICAgcmV0dXJuIHJlbmRlck9iamVjdC5ub2Rl
KCkgJiYgcmVuZGVyT2JqZWN0Lm5vZGUoKS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXByZXNj
cmlwdHNUYWcpOwogfQogCi1SZW5kZXJNYXRoTUxTY3JpcHRzOjpSZW5kZXJNYXRoTUxTY3JpcHRz
KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0
aE1MU2NyaXB0czo6UmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKICAgICAsIG1fYmFzZVdyYXBwZXIoMCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKaW5kZXggMTc5
YzRiMi4uN2M0ZTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKLSAgICBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlcihEb2N1bWVudCYgZG9jdW1lbnQs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBXcmFwcGVyVHlwZSBraW5kKQorICAgIFJlbmRl
ck1hdGhNTFNjcmlwdHNXcmFwcGVyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSwgV3JhcHBlclR5cGUga2luZCkKICAgICAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhk
b2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAgICAgLCBtX2tpbmQoa2luZCkKICAgICB7
CkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHMgZmluYWwgOiBwdWJs
aWMgUmVuZGVyTWF0aE1MQmxvY2sgewogZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHNX
cmFwcGVyOwogCiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3Qq
IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNl
LmNwcAppbmRleCAyODQ0YTAzLi5hZjgxZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcApAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7
CiAKLVJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVu
dCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxTcGFj
ZTo6UmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEY6Om1v
dmUoc3R5bGUpKQogICAgICwgbV93aWR0aCgwKQogICAgICwgbV9oZWlnaHQoMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAppbmRl
eCBjZGZjNTcxLi5kMjgwZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTFNwYWNlIGZpbmFsIDogcHVibGljIFJl
bmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxU
ZXh0RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxTcGFj
ZShNYXRoTUxUZXh0RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIE1hdGhNTFRleHRF
bGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MVGV4dEVsZW1lbnQm
Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmNw
cAppbmRleCA0YmU3NjIwLi43YjRiOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAKQEAgLTM0LDEy
ICszNCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1SZW5kZXJNYXRoTUxTcXVh
cmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MU3F1YXJlUm9vdDo6UmVuZGVyTWF0aE1M
U3F1YXJlUm9vdChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAg
IDogUmVuZGVyTWF0aE1MUm9vdChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQogCi1S
ZW5kZXJNYXRoTUxTcXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KERvY3VtZW50JiBk
b2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxTcXVhcmVS
b290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJvb3QoZG9jdW1lbnQsIFdURjo6bW92
ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCmluZGV4IDYxNDAwNTguLjc3YTBjYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1
YXJlUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU3F1YXJlUm9vdC5oCkBAIC0zOCw4ICszOCw4IEBAIGNsYXNzIFJlbmRlck1hdGhNTE1lbmNs
b3NlOwogLy8gUmVuZGVyIHNxcnQoYmFzZSksIHVzaW5nIHJhZGljYWwgbm90YXRpb24uCiBjbGFz
cyBSZW5kZXJNYXRoTUxTcXVhcmVSb290IGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJvb3Qg
ewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxTcXVhcmVSb290KERvY3VtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYs
IFJlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRG9jdW1lbnQm
LCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlck1hdGhNTFNx
dWFyZVJvb3Q+IGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihSZW5kZXJNYXRoTUxN
ZW5jbG9zZSYpOwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXggOTlhNWViMS4uMWNkMGU4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxUb2tlbi5jcHAKQEAgLTM2LDEzICszNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAotUmVuZGVyTWF0aE1MVG9rZW46OlJlbmRl
ck1hdGhNTFRva2VuKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyTWF0aE1MVG9rZW46OlJlbmRlck1hdGhNTFRva2VuKEVsZW1lbnQmIGVsZW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50
LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9jb250YWluc0VsZW1lbnQoZmFsc2UpCiB7CiB9
CiAKLVJlbmRlck1hdGhNTFRva2VuOjpSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYgZG9jdW1l
bnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MVG9rZW46OlJlbmRl
ck1hdGhNTFRva2VuKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
ICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAg
ICwgbV9jb250YWluc0VsZW1lbnQoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKaW5kZXggMGE0ZDY0YS4uZWZjMTgx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uaApAQCAtMzYsOCArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBj
bGFzcyBSZW5kZXJNYXRoTUxUb2tlbiA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyTWF0aE1MVG9rZW4oRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKLSAgICBSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKKyAgICBSZW5kZXJNYXRoTUxUb2tlbihFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyTWF0aE1MVG9rZW4oRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogICAg
IE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1M
VGV4dEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNw
cAppbmRleCBkZTQ2OTMxLi42NDVlYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVz
OwogICAgIAotUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxV
bmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKIHsKICAgICAvLyBEZXRlcm1pbmUgd2hhdCBraW5kIG9mIHVuZGVyL292ZXIg
ZXhwcmVzc2lvbiB3ZSBoYXZlIGJ5IGVsZW1lbnQgbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKaW5kZXggNmY2
NTNkNS4uZWRlYjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTFVuZGVyT3ZlciBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MVW5kZXJP
dmVyKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICAKICAgICB2aXJ0dWFsIFJl
bmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXgg
NmM5ODU2OC4uYjMxMmMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBCYXNpY1NoYXBlQ2lyY2xl
OjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCiAgICAgKSk7
CiB9CiAKLVBhc3NSZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZUNpcmNsZTo6YmxlbmQoY29uc3Qg
QmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKK1JlZjxCYXNpY1NoYXBl
PiBCYXNpY1NoYXBlQ2lyY2xlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBvdGhlciwgZG91Ymxl
IHByb2dyZXNzKSBjb25zdAogewogICAgIEFTU0VSVCh0eXBlKCkgPT0gb3RoZXIudHlwZSgpKTsK
ICAgICBjb25zdCBhdXRvJiBvdGhlckNpcmNsZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVDaXJjbGU+
KG90aGVyKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIEJhc2ljU2hhcGVFbGxpcHNlOjpwYXRo
KFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCiAgICAgICAgIHJhZGl1
c1kgKiAyKSk7CiB9CiAKLVBhc3NSZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZUVsbGlwc2U6OmJs
ZW5kKGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CitSZWY8
QmFzaWNTaGFwZT4gQmFzaWNTaGFwZUVsbGlwc2U6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIG90
aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHR5cGUoKSA9PSBvdGhl
ci50eXBlKCkpOwogICAgIGNvbnN0IGF1dG8mIG90aGVyRWxsaXBzZSA9IGRvd25jYXN0PEJhc2lj
U2hhcGVFbGxpcHNlPihvdGhlcik7CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBCYXNpY1NoYXBl
UG9seWdvbjo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQog
ICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7CiB9CiAKLVBhc3NSZWY8QmFzaWNTaGFwZT4gQmFzaWNT
aGFwZVBvbHlnb246OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyLCBkb3VibGUgcHJvZ3Jl
c3MpIGNvbnN0CitSZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZVBvbHlnb246OmJsZW5kKGNvbnN0
IEJhc2ljU2hhcGUmIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KHR5cGUoKSA9PSBvdGhlci50eXBlKCkpOwogCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBCYXNp
Y1NoYXBlSW5zZXQ6OnBhdGgoUGF0aCYgcGF0aCwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0Jv
eCkKICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHIpOwogfQogCi1QYXNzUmVmPEJhc2ljU2hhcGU+
IEJhc2ljU2hhcGVJbnNldDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJsZSBw
cm9ncmVzcykgY29uc3QKK1JlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlSW5zZXQ6OmJsZW5kKGNv
bnN0IEJhc2ljU2hhcGUmIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKHR5cGUoKSA9PSBvdGhlci50eXBlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9CYXNpY1NoYXBlcy5oCmluZGV4IDQ5NDhkZjEuLjgwN2E3NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3Qm
KSA9IDA7CiAgICAgdmlydHVhbCBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IHsgcmV0dXJuIFJV
TEVfTk9OWkVSTzsgfQotICAgIHZpcnR1YWwgUGFzc1JlZjxCYXNpY1NoYXBlPiBibGVuZChjb25z
dCBCYXNpY1NoYXBlJiwgZG91YmxlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8QmFzaWNT
aGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYsIGRvdWJsZSkgY29uc3QgPSAwOwogCiAgICAg
dmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CiB9OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFJhZGl1cyhCYXNpY1NoYXBlUmFkaXVzIHJhZGl1cykgeyBtX3Jh
ZGl1cyA9IFdURjo6bW92ZShyYWRpdXMpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRo
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmPEJhc2lj
U2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3Vi
bGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBCYXNpY1NoYXBlQ2lyY2xlVHlwZTsgfQogcHJpdmF0ZToKQEAgLTE4Niw3
ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSYWRpdXNZKEJhc2ljU2hhcGVSYWRpdXMg
cmFkaXVzWSkgeyBtX3JhZGl1c1kgPSBXVEY6Om1vdmUocmFkaXVzWSk7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYsIGRvdWJsZSkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3Qg
QmFzaWNTaGFwZSYsIGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhc2ljU2hhcGVFbGxpcHNlVHlwZTsgfQog
cHJpdmF0ZToKQEAgLTIxMCw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRQb2lu
dChMZW5ndGggeCwgTGVuZ3RoIHkpIHsgbV92YWx1ZXMuYXBwZW5kKFdURjo6bW92ZSh4KSk7IG1f
dmFsdWVzLmFwcGVuZChXVEY6Om1vdmUoeSkpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF0aChQ
YXRoJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmPEJh
c2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBk
b3VibGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBXaW5kUnVsZSB3aW5kUnVsZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KIApAQCAtMjQ5LDcgKzI0OSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJvdHRvbUxlZnRSYWRpdXMoTGVuZ3RoU2l6ZSByYWRp
dXMpIHsgbV9ib3R0b21MZWZ0UmFkaXVzID0gV1RGOjptb3ZlKHJhZGl1cyk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFBhc3NSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYsIGRvdWJs
ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29u
c3QgQmFzaWNTaGFwZSYsIGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFR5
cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhc2ljU2hhcGVJbnNldFR5cGU7IH0K
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0
YVJlZi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaAppbmRleCA5
MjQ0NTM3Li5mYjhmZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvRGF0YVJlZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVm
LmgKQEAgLTI0LDE0ICsyNCwxMyBAQAogI2lmbmRlZiBEYXRhUmVmX2gKICNkZWZpbmUgRGF0YVJl
Zl9oCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRGF0YVJl
ZiB7CiBwdWJsaWM6Ci0gICAgRGF0YVJlZihQYXNzUmVmPFQ+IGRhdGEpIDogbV9kYXRhKFdURjo6
bW92ZShkYXRhKSkgeyB9CisgICAgRGF0YVJlZihSZWY8VD4mJiBkYXRhKSA6IG1fZGF0YShXVEY6
Om1vdmUoZGF0YSkpIHsgfQogICAgIERhdGFSZWYoY29uc3QgRGF0YVJlZiYgb3RoZXIpIDogbV9k
YXRhKGNvbnN0X2Nhc3Q8VCY+KG90aGVyLm1fZGF0YS5nZXQoKSkpIHsgfQogICAgIERhdGFSZWYm
IG9wZXJhdG9yPShjb25zdCBEYXRhUmVmJiBvdGhlcikgeyBtX2RhdGEgPSBjb25zdF9jYXN0PFQm
PihvdGhlci5tX2RhdGEuZ2V0KCkpOyByZXR1cm4gKnRoaXM7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKaW5kZXggMDQxNGM3OC4u
NTdlY2QxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQ
aWVjZUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBp
ZWNlSW1hZ2UuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGlubGluZSBOaW5lUGllY2VJbWFnZURhdGE6
Ok5pbmVQaWVjZUltYWdlRGF0YShjb25zdCBOaW5lUGllY2VJbWFnZURhdGEmIG90aGVyKQogewog
fQogCi1QYXNzUmVmPE5pbmVQaWVjZUltYWdlRGF0YT4gTmluZVBpZWNlSW1hZ2VEYXRhOjpjb3B5
KCkgY29uc3QKK1JlZjxOaW5lUGllY2VJbWFnZURhdGE+IE5pbmVQaWVjZUltYWdlRGF0YTo6Y29w
eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmluZVBpZWNlSW1hZ2VEYXRh
KCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
TmluZVBpZWNlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5oCmluZGV4IGQ2ODY4ZmYuLjViYWIzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCkBAIC0zNyw4ICszNyw4IEBAIGVudW0g
RU5pbmVQaWVjZUltYWdlUnVsZSB7CiAKIGNsYXNzIE5pbmVQaWVjZUltYWdlRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPE5pbmVQaWVjZUltYWdlRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmPE5pbmVQaWVjZUltYWdlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBOaW5lUGllY2VJbWFnZURhdGEpOyB9Ci0gICAgUGFzc1JlZjxOaW5lUGllY2VJbWFnZURhdGE+
IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPE5pbmVQaWVjZUltYWdlRGF0YT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBOaW5lUGllY2VJbWFnZURhdGEpOyB9CisgICAgUmVm
PE5pbmVQaWVjZUltYWdlRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE5pbmVQaWVjZUltYWdlRGF0YSYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBOaW5lUGllY2VJbWFnZURhdGEmIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmlu
ZGV4IGY3Yjg5ZmMuLjU2ZWNkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtODYsMTcgKzg2LDE3IEBAIGlubGluZSBSZW5kZXJTdHls
ZSYgZGVmYXVsdFN0eWxlKCkKICAgICByZXR1cm4gc3R5bGU7CiB9CiAKLVBhc3NSZWY8UmVuZGVy
U3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGUoKQorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHls
ZTo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJTdHlsZShkZWZh
dWx0U3R5bGUoKSkpOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3Jl
YXRlRGVmYXVsdFN0eWxlKCkKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZURl
ZmF1bHRTdHlsZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVuZGVyU3R5bGUodHJ1
ZSkpOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIEVEaXNw
bGF5IGRpc3BsYXkpCitSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgRURpc3Bs
YXkgZGlzcGxheSkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgp
OwogICAgIG5ld1N0eWxlLmdldCgpLmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKQEAgLTEwNSwx
MiArMTA1LDEyIEBAIFBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0CiAgICAgcmV0dXJuIG5ld1N0eWxl
OwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3QgUmVu
ZGVyU3R5bGUqIG90aGVyKQorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y2xvbmUoY29u
c3QgUmVuZGVyU3R5bGUqIG90aGVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRl
clN0eWxlKCpvdGhlcikpOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6
Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBw
c2V1ZG9TdHlsZSkKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5o
ZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUpCiB7
CiAgICAgQVNTRVJUKHBzZXVkb1N0eWxlLnN0eWxlVHlwZSgpID09IEJFRk9SRSB8fCBwc2V1ZG9T
dHlsZS5zdHlsZVR5cGUoKSA9PSBBRlRFUik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggOWFhNDI1OS4uN2MwY2VhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTQ4MiwxMyArNDgyLDEz
IEBAIHByaXZhdGU6CiAgICAgQUxXQVlTX0lOTElORSBSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8UmVuZGVyU3R5bGU+IGNyZWF0
ZSgpOwotICAgIHN0YXRpYyBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVEZWZhdWx0U3R5bGUo
KTsKLSAgICBzdGF0aWMgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIEVEaXNwbGF5KTsKLSAg
ICBzdGF0aWMgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY2xvbmUoY29uc3QgUmVuZGVyU3R5bGUqKTsK
KyAgICBzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFJl
bmRlclN0eWxlPiBjcmVhdGVEZWZhdWx0U3R5bGUoKTsKKyAgICBzdGF0aWMgUmVmPFJlbmRlclN0
eWxlPiBjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlKiBw
YXJlbnRTdHlsZSwgRURpc3BsYXkpOworICAgIHN0YXRpYyBSZWY8UmVuZGVyU3R5bGU+IGNsb25l
KGNvbnN0IFJlbmRlclN0eWxlKik7CiAKICAgICAvLyBDcmVhdGUgYSBSZW5kZXJTdHlsZSBmb3Ig
Z2VuZXJhdGVkIGNvbnRlbnQgYnkgaW5oZXJpdGluZyBmcm9tIGEgcHNldWRvIHN0eWxlLgotICAg
IHN0YXRpYyBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNl
dWRvU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKTsKKyAgICBzdGF0aWMgUmVm
PFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKTsKIAogICAgIGVudW0gSXNBdFNoYWRvd0JvdW5kYXJ5
IHsKICAgICAgICAgQXRTaGFkb3dCb3VuZGFyeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCmluZGV4IDdkMjljYTguLmE4NjQ5MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNw
cApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIGRlZmF1bHRT
VkdTdHlsZSgpCiAgICAgcmV0dXJuICpzdHlsZS5nZXQoKS5nZXQoKTsKIH0KIAotUGFzc1JlZjxT
VkdSZW5kZXJTdHlsZT4gU1ZHUmVuZGVyU3R5bGU6OmNyZWF0ZURlZmF1bHRTdHlsZSgpCitSZWY8
U1ZHUmVuZGVyU3R5bGU+IFNWR1JlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUoKQogewog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1JlbmRlclN0eWxlKENyZWF0ZURlZmF1bHQpKTsK
IH0KQEAgLTkyLDcgKzkyLDcgQEAgaW5saW5lIFNWR1JlbmRlclN0eWxlOjpTVkdSZW5kZXJTdHls
ZShjb25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpCiB7CiB9CiAKLVBhc3NSZWY8U1ZHUmVuZGVy
U3R5bGU+IFNWR1JlbmRlclN0eWxlOjpjb3B5KCkgY29uc3QKK1JlZjxTVkdSZW5kZXJTdHlsZT4g
U1ZHUmVuZGVyU3R5bGU6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNWR1JlbmRlclN0eWxlKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCmluZGV4IDAxNDMyZmUuLmJkZGFmZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCkBAIC00MSw5
ICs0MSw5IEBAIGNsYXNzIFJlbmRlck9iamVjdDsKIAogY2xhc3MgU1ZHUmVuZGVyU3R5bGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxTVkdSZW5kZXJTdHlsZT4geyAgICAKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZjxTVkdSZW5kZXJTdHlsZT4gY3JlYXRlRGVmYXVsdFN0eWxlKCk7Ci0gICAgc3Rh
dGljIFBhc3NSZWY8U1ZHUmVuZGVyU3R5bGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU1ZHUmVuZGVyU3R5bGUpOyB9Ci0gICAgUGFzc1JlZjxTVkdSZW5kZXJTdHlsZT4gY29weSgp
IGNvbnN0OworICAgIHN0YXRpYyBSZWY8U1ZHUmVuZGVyU3R5bGU+IGNyZWF0ZURlZmF1bHRTdHls
ZSgpOworICAgIHN0YXRpYyBSZWY8U1ZHUmVuZGVyU3R5bGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU1ZHUmVuZGVyU3R5bGUpOyB9CisgICAgUmVmPFNWR1JlbmRlclN0eWxlPiBj
b3B5KCkgY29uc3Q7CiAgICAgflNWR1JlbmRlclN0eWxlKCk7CiAKICAgICBib29sIGluaGVyaXRl
ZE5vdEVxdWFsKGNvbnN0IFNWR1JlbmRlclN0eWxlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCmluZGV4IDdk
YTYwZDkuLjNkMjA0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGlubGluZSBTdHls
ZUZpbGxEYXRhOjpTdHlsZUZpbGxEYXRhKGNvbnN0IFN0eWxlRmlsbERhdGEmIG90aGVyKQogewog
fQogCi1QYXNzUmVmPFN0eWxlRmlsbERhdGE+IFN0eWxlRmlsbERhdGE6OmNvcHkoKSBjb25zdAor
UmVmPFN0eWxlRmlsbERhdGE+IFN0eWxlRmlsbERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsbERhdGEoKnRoaXMpKTsKIH0KQEAgLTEwNCw3ICsx
MDQsNyBAQCBpbmxpbmUgU3R5bGVTdHJva2VEYXRhOjpTdHlsZVN0cm9rZURhdGEoY29uc3QgU3R5
bGVTdHJva2VEYXRhJiBvdGhlcikKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVN0cm9rZURhdGE+IFN0
eWxlU3Ryb2tlRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVTdHJva2VEYXRhPiBTdHlsZVN0
cm9rZURhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
U3Ryb2tlRGF0YSgqdGhpcykpOwogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIGlubGluZSBTdHlsZVN0
b3BEYXRhOjpTdHlsZVN0b3BEYXRhKGNvbnN0IFN0eWxlU3RvcERhdGEmIG90aGVyKQogewogfQog
Ci1QYXNzUmVmPFN0eWxlU3RvcERhdGE+IFN0eWxlU3RvcERhdGE6OmNvcHkoKSBjb25zdAorUmVm
PFN0eWxlU3RvcERhdGE+IFN0eWxlU3RvcERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlU3RvcERhdGEoKnRoaXMpKTsKIH0KQEAgLTE1OSw3ICsxNTks
NyBAQCBpbmxpbmUgU3R5bGVUZXh0RGF0YTo6U3R5bGVUZXh0RGF0YShjb25zdCBTdHlsZVRleHRE
YXRhJiBvdGhlcikKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVRleHREYXRhPiBTdHlsZVRleHREYXRh
Ojpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZVRleHREYXRhPiBTdHlsZVRleHREYXRhOjpjb3B5KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVRleHREYXRhKCp0aGlzKSk7
CiB9CkBAIC0xODYsNyArMTg2LDcgQEAgaW5saW5lIFN0eWxlTWlzY0RhdGE6OlN0eWxlTWlzY0Rh
dGEoY29uc3QgU3R5bGVNaXNjRGF0YSYgb3RoZXIpCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVNaXNj
RGF0YT4gU3R5bGVNaXNjRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVNaXNjRGF0YT4gU3R5
bGVNaXNjRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVNaXNjRGF0YSgqdGhpcykpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGlubGluZSBTdHlsZVNo
YWRvd1NWR0RhdGE6OlN0eWxlU2hhZG93U1ZHRGF0YShjb25zdCBTdHlsZVNoYWRvd1NWR0RhdGEm
IG90aGVyKQogewogfQogCi1QYXNzUmVmPFN0eWxlU2hhZG93U1ZHRGF0YT4gU3R5bGVTaGFkb3dT
VkdEYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IFN0eWxlU2hhZG93
U1ZHRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVT
aGFkb3dTVkdEYXRhKCp0aGlzKSk7CiB9CkBAIC0yMzgsNyArMjM4LDcgQEAgaW5saW5lIFN0eWxl
UmVzb3VyY2VEYXRhOjpTdHlsZVJlc291cmNlRGF0YShjb25zdCBTdHlsZVJlc291cmNlRGF0YSYg
b3RoZXIpCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVSZXNvdXJjZURhdGE+IFN0eWxlUmVzb3VyY2VE
YXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZVJlc291cmNlRGF0YT4gU3R5bGVSZXNvdXJjZURh
dGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUmVzb3Vy
Y2VEYXRhKCp0aGlzKSk7CiB9CkBAIC0yNjUsNyArMjY1LDcgQEAgaW5saW5lIFN0eWxlSW5oZXJp
dGVkUmVzb3VyY2VEYXRhOjpTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YShjb25zdCBTdHlsZUlu
aGVyaXQKIHsKIH0KIAotUGFzc1JlZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gU3R5bGVJ
bmhlcml0ZWRSZXNvdXJjZURhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlSW5oZXJpdGVkUmVz
b3VyY2VEYXRhPiBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGEoKnRoaXMp
KTsKIH0KQEAgLTMwMCw3ICszMDAsNyBAQCBpbmxpbmUgU3R5bGVMYXlvdXREYXRhOjpTdHlsZUxh
eW91dERhdGEoY29uc3QgU3R5bGVMYXlvdXREYXRhJiBvdGhlcikKIHsKIH0KIAotUGFzc1JlZjxT
dHlsZUxheW91dERhdGE+IFN0eWxlTGF5b3V0RGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVM
YXlvdXREYXRhPiBTdHlsZUxheW91dERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlTGF5b3V0RGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCmluZGV4IDFlNTFl
ZTEuLjc2YzFhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
VkdSZW5kZXJTdHlsZURlZnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U1ZHUmVuZGVyU3R5bGVEZWZzLmgKQEAgLTExNyw4ICsxMTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgLy8gSW5oZXJpdGVkL05vbi1Jbmhlcml0ZWQgU3R5bGUgRGF0YXN0cnVjdHVyZXMK
ICAgICBjbGFzcyBTdHlsZUZpbGxEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVGaWxsRGF0
YT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWY8U3R5bGVGaWxsRGF0YT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZpbGxEYXRhKTsgfQotICAgICAg
ICBQYXNzUmVmPFN0eWxlRmlsbERhdGE+IGNvcHkoKSBjb25zdDsKKyAgICAgICAgc3RhdGljIFJl
ZjxTdHlsZUZpbGxEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmls
bERhdGEpOyB9CisgICAgICAgIFJlZjxTdHlsZUZpbGxEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsbERhdGEmKSBjb25zdDsKICAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlRmlsbERhdGEmIG90aGVyKSBjb25zdApAQCAt
MTQxLDggKzE0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0eWxlU3Ry
b2tlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU3Ryb2tlRGF0YT4gewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWY8U3R5bGVTdHJva2VEYXRhPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU3Ryb2tlRGF0YSk7IH0KLSAgICAgICAgUGFzc1JlZjxT
dHlsZVN0cm9rZURhdGE+IGNvcHkoKSBjb25zdDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHlsZVN0
cm9rZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTdHJva2VEYXRh
KTsgfQorICAgICAgICBSZWY8U3R5bGVTdHJva2VEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlU3Ryb2tlRGF0YSYpIGNvbnN0OwogICAgICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTdHJva2VEYXRhJiBvdGhlcikgY29uc3QKQEAg
LTE3MSw4ICsxNzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTdHlsZVN0
b3BEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVTdG9wRGF0YT4gewogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFBhc3NSZWY8U3R5bGVTdG9wRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdHlsZVN0b3BEYXRhKTsgfQotICAgICAgICBQYXNzUmVmPFN0eWxlU3Rv
cERhdGE+IGNvcHkoKSBjb25zdDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHlsZVN0b3BEYXRhPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU3RvcERhdGEpOyB9CisgICAgICAg
IFJlZjxTdHlsZVN0b3BEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFN0eWxlU3RvcERhdGEmKSBjb25zdDsKICAgICAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0eWxlU3RvcERhdGEmIG90aGVyKSBjb25zdApAQCAtMTkwLDggKzE5MCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0eWxlVGV4dERhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxTdHlsZVRleHREYXRhPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFz
c1JlZjxTdHlsZVRleHREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
VGV4dERhdGEpOyB9Ci0gICAgICAgIFBhc3NSZWY8U3R5bGVUZXh0RGF0YT4gY29weSgpIGNvbnN0
OworICAgICAgICBzdGF0aWMgUmVmPFN0eWxlVGV4dERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVUZXh0RGF0YSk7IH0KKyAgICAgICAgUmVmPFN0eWxlVGV4dERhdGE+
IGNvcHkoKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHlsZVRleHREYXRhJiBvdGhlcikgY29uc3Q7CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZVRleHREYXRhJiBvdGhlcikgY29uc3QKQEAgLTIwOSw4ICsyMDksOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgLy8gTm90ZTogdGhlIHJ1bGUgZm9yIHRoaXMgY2xhc3MgaXMsICpu
byBpbmhlcml0YW5jZSogb2YgdGhlc2UgcHJvcHMKICAgICBjbGFzcyBTdHlsZU1pc2NEYXRhIDog
cHVibGljIFJlZkNvdW50ZWQ8U3R5bGVNaXNjRGF0YT4gewogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFBhc3NSZWY8U3R5bGVNaXNjRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZU1pc2NEYXRhKTsgfQotICAgICAgICBQYXNzUmVmPFN0eWxlTWlzY0RhdGE+IGNv
cHkoKSBjb25zdDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHlsZU1pc2NEYXRhPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTWlzY0RhdGEpOyB9CisgICAgICAgIFJlZjxTdHls
ZU1pc2NEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0eWxlTWlzY0RhdGEmKSBjb25zdDsKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0
eWxlTWlzY0RhdGEmIG90aGVyKSBjb25zdApAQCAtMjMyLDggKzIzMiw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0eWxlU2hhZG93U1ZHRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN0eWxlU2hhZG93U1ZHRGF0YT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NSZWY8U3R5bGVTaGFkb3dTVkdEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlU2hhZG93U1ZHRGF0YSk7IH0KLSAgICAgICAgUGFzc1JlZjxTdHlsZVNoYWRvd1NWR0Rh
dGE+IGNvcHkoKSBjb25zdDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHlsZVNoYWRvd1NWR0RhdGE+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGFkb3dTVkdEYXRhKTsgfQor
ICAgICAgICBSZWY8U3R5bGVTaGFkb3dTVkdEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0YSYpIGNvbnN0OwogICAgICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRhJiBvdGhlcikgY29uc3QK
QEAgLTI1MSw4ICsyNTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gTm9uLWluaGVy
aXRlZCByZXNvdXJjZXMKICAgICBjbGFzcyBTdHlsZVJlc291cmNlRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPFN0eWxlUmVzb3VyY2VEYXRhPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZjxTdHlsZVJlc291cmNlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVJlc291cmNlRGF0YSk7IH0KLSAgICAgICAgUGFzc1JlZjxTdHlsZVJlc291cmNlRGF0
YT4gY29weSgpIGNvbnN0OworICAgICAgICBzdGF0aWMgUmVmPFN0eWxlUmVzb3VyY2VEYXRhPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUmVzb3VyY2VEYXRhKTsgfQorICAg
ICAgICBSZWY8U3R5bGVSZXNvdXJjZURhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3R5bGVSZXNvdXJjZURhdGEmKSBjb25zdDsKICAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlUmVzb3VyY2VEYXRhJiBvdGhlcikgY29uc3QKQEAgLTI3
Miw4ICsyNzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gSW5oZXJpdGVkIHJlc291
cmNlcwogICAgIGNsYXNzIFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhIDogcHVibGljIFJlZkNv
dW50ZWQ8U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhKTsgfQotICAgICAg
ICBQYXNzUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhPiBjb3B5KCkgY29uc3Q7CisgICAg
ICAgIHN0YXRpYyBSZWY8U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGEpOyB9CisgICAgICAg
IFJlZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSYpIGNvbnN0
OwogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURh
dGEmIG90aGVyKSBjb25zdApAQCAtMjkzLDggKzI5Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAvLyBQb3NpdGlvbmluZyBhbmQgc2l6aW5nIHByb3BlcnRpZXMuCiAgICAgY2xhc3MgU3R5
bGVMYXlvdXREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVMYXlvdXREYXRhPiB7CiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZUxheW91dERhdGE+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVMYXlvdXREYXRhKTsgfQotICAgICAgICBQYXNz
UmVmPFN0eWxlTGF5b3V0RGF0YT4gY29weSgpIGNvbnN0OworICAgICAgICBzdGF0aWMgUmVmPFN0
eWxlTGF5b3V0RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUxheW91
dERhdGEpOyB9CisgICAgICAgIFJlZjxTdHlsZUxheW91dERhdGE+IGNvcHkoKSBjb25zdDsKIAog
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVMYXlvdXREYXRhJikgY29uc3Q7CiAg
ICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUxheW91dERhdGEmIG90aGVyKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dy
b3VuZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dy
b3VuZERhdGEuY3BwCmluZGV4IGM1MWI4MjUuLjFiYTM2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgaW5saW5lIFN0eWxlQmFja2dyb3VuZERhdGE6OlN0eWxlQmFja2dyb3VuZERh
dGEoY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHlsZUJh
Y2tncm91bmREYXRhPiBTdHlsZUJhY2tncm91bmREYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHls
ZUJhY2tncm91bmREYXRhPiBTdHlsZUJhY2tncm91bmREYXRhOjpjb3B5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUJhY2tncm91bmREYXRhKCp0aGlzKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5k
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERh
dGEuaAppbmRleCBiMjk5NmRjLi4yZTFiNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKQEAgLTM1LDggKzM1LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHlsZUJhY2tncm91bmREYXRhIDogcHVibGlj
IFJlZkNvdW50ZWQ8U3R5bGVCYWNrZ3JvdW5kRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVCYWNrZ3JvdW5kRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlQmFja2dyb3VuZERh
dGE+IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVCYWNrZ3JvdW5kRGF0YSk7IH0KKyAg
ICBSZWY8U3R5bGVCYWNrZ3JvdW5kRGF0YT4gY29weSgpIGNvbnN0OwogICAgIH5TdHlsZUJhY2tn
cm91bmREYXRhKCkgeyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVCYWNrZ3Jv
dW5kRGF0YSYgbykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVCb3hEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUJveERhdGEuY3BwCmluZGV4IGExMTg3ZmYuLjM5MjcwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IGlubGluZSBTdHlsZUJveERhdGE6OlN0eWxlQm94RGF0YShjb25zdCBTdHlsZUJveERhdGEmIG8p
CiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVCb3hEYXRhPiBTdHlsZUJveERhdGE6OmNvcHkoKSBjb25z
dAorUmVmPFN0eWxlQm94RGF0YT4gU3R5bGVCb3hEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUJveERhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuaAppbmRleCAyYzZkMDMzLi5lYzI1
NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5o
CkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVCb3hE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVCb3hEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWY8U3R5bGVCb3hEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlQm94RGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlQm94RGF0YT4gY29weSgpIGNvbnN0
OworICAgIHN0YXRpYyBSZWY8U3R5bGVCb3hEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlQm94RGF0YSk7IH0KKyAgICBSZWY8U3R5bGVCb3hEYXRhPiBjb3B5KCkgY29u
c3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVCb3hEYXRhJiBvKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVCb3hEYXRhJiBvKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXBy
ZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcAppbmRleCAzYzgzNTkyLi4zMmY3ODA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGli
bGVCb3hEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVE
ZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmNwcApAQCAtNDksNyArNDksNyBAQCBpbmxpbmUgU3R5
bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERh
dGEoY29uc3QgU3R5bAogewogfQogCi1QYXNzUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94
RGF0YT4gU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxT
dHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94
RGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVEZXBy
ZWNhdGVkRmxleGlibGVCb3hEYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhLmgKaW5kZXggNjRjOWM3Zi4uMjBmZWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERh
dGEuaApAQCAtMzIsOCArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxl
RGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlRGVwcmVj
YXRlZEZsZXhpYmxlQm94RGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxl
RGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZURl
cHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0
eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEpOyB9CisgICAgUmVmPFN0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYpIGNvbnN0OwogICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmIG8pIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0
ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRh
dGEuY3BwCmluZGV4IDcxY2ZmNjIuLmIwZDNiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuY3BwCkBAIC00Miw3ICs0Miw3IEBAIGlu
bGluZSBTdHlsZUZpbHRlckRhdGE6OlN0eWxlRmlsdGVyRGF0YShjb25zdCBTdHlsZUZpbHRlckRh
dGEmIG8pCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVGaWx0ZXJEYXRhPiBTdHlsZUZpbHRlckRhdGE6
OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlRmlsdGVyRGF0YT4gU3R5bGVGaWx0ZXJEYXRhOjpjb3B5
KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZpbHRlckRhdGEoKnRo
aXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUZpbHRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRl
ckRhdGEuaAppbmRleCBlOTg0NDYxLi4yMTBkMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVGaWx0ZXJEYXRhIDogcHVibGljIFJlZkNvdW50
ZWQ8U3R5bGVGaWx0ZXJEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVG
aWx0ZXJEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsdGVyRGF0
YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlRmlsdGVyRGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0
YXRpYyBSZWY8U3R5bGVGaWx0ZXJEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlRmlsdGVyRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVGaWx0ZXJEYXRhPiBjb3B5KCkgY29u
c3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVGaWx0ZXJEYXRhJikgY29uc3Q7
CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYgbykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJv
eERhdGEuY3BwCmluZGV4IDc3NTg4NmIuLjk5ZTU1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmNwcApAQCAtNDks
NyArNDksNyBAQCBpbmxpbmUgU3R5bGVGbGV4aWJsZUJveERhdGE6OlN0eWxlRmxleGlibGVCb3hE
YXRhKGNvbnN0IFN0eWxlRmxleGlibGVCb3hEYXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxl
RmxleGlibGVCb3hEYXRhPiBTdHlsZUZsZXhpYmxlQm94RGF0YTo6Y29weSgpIGNvbnN0CitSZWY8
U3R5bGVGbGV4aWJsZUJveERhdGE+IFN0eWxlRmxleGlibGVCb3hEYXRhOjpjb3B5KCkgY29uc3QK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZsZXhpYmxlQm94RGF0YSgqdGhpcykp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxl
eGlibGVCb3hEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4
aWJsZUJveERhdGEuaAppbmRleCAwZTMzNTJjLi5kMzMyZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaApAQCAtMzUs
OCArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxlRmxleGlibGVCb3hE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVGbGV4aWJsZUJveERhdGE+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZUZsZXhpYmxlQm94RGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZsZXhpYmxlQm94RGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0
eWxlRmxleGlibGVCb3hEYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZUZs
ZXhpYmxlQm94RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZsZXhp
YmxlQm94RGF0YSk7IH0KKyAgICBSZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IGNvcHkoKSBjb25z
dDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYpIGNv
bnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYgbykg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdl
bmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdl
bmVyYXRlZEltYWdlLmNwcAppbmRleCBhYzA3ZDY2Li4yMjM3MWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVN0eWxlR2VuZXJh
dGVkSW1hZ2U6OlN0eWxlR2VuZXJhdGVkSW1hZ2UoUGFzc1JlZjxDU1NJbWFnZUdlbmVyYXRvclZh
bHVlPiB2YWx1ZSkKK1N0eWxlR2VuZXJhdGVkSW1hZ2U6OlN0eWxlR2VuZXJhdGVkSW1hZ2UoUmVm
PENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+JiYgdmFsdWUpCiAgICAgOiBtX2ltYWdlR2VuZXJhdG9y
VmFsdWUoV1RGOjptb3ZlKHZhbHVlKSkKICAgICAsIG1fZml4ZWRTaXplKG1faW1hZ2VHZW5lcmF0
b3JWYWx1ZS0+aXNGaXhlZFNpemUoKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDM0MWRkNGYuLjk3NWJiZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRl
ZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJh
dGVkSW1hZ2UuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
OwogCiBjbGFzcyBTdHlsZUdlbmVyYXRlZEltYWdlIGZpbmFsIDogcHVibGljIFN0eWxlSW1hZ2Ug
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlR2VuZXJhdGVkSW1hZ2U+IGNy
ZWF0ZShQYXNzUmVmPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+IHZhbHVlKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0eWxlR2VuZXJhdGVkSW1hZ2U+IGNyZWF0ZShSZWY8Q1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZT4mJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5
bGVHZW5lcmF0ZWRJbWFnZShXVEY6Om1vdmUodmFsdWUpKSk7CiAgICAgfQpAQCAtNTYsNyArNTYs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVy
RWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgU3R5bGVHZW5lcmF0ZWRJbWFnZShQYXNzUmVmPENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU+KTsKKyAgICBleHBsaWNpdCBTdHlsZUdlbmVyYXRlZEltYWdlKFJlZjxDU1NJbWFnZUdlbmVy
YXRvclZhbHVlPiYmKTsKICAgICAKICAgICBSZWY8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4gbV9p
bWFnZUdlbmVyYXRvclZhbHVlOwogICAgIEZsb2F0U2l6ZSBtX2NvbnRhaW5lclNpemU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAKaW5kZXgg
MWIxNWRlNC4uYmRiM2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR3JpZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUdyaWREYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBpbmxpbmUgU3R5bGVHcmlkRGF0
YTo6U3R5bGVHcmlkRGF0YShjb25zdCBTdHlsZUdyaWREYXRhJiBvKQogewogfQogCi1QYXNzUmVm
PFN0eWxlR3JpZERhdGE+IFN0eWxlR3JpZERhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlR3Jp
ZERhdGE+IFN0eWxlR3JpZERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlR3JpZERhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCmluZGV4IGJlYjRlZmYuLjNiOTljZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaApAQCAtNDMs
OCArNDMsOCBAQCB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFZlY3RvcjxTdHJpbmc+LCBXVEY6
OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkVwogCiBjbGFzcyBTdHlsZUdyaWREYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVHcmlkRGF0YT4gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmPFN0eWxlR3JpZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3R5bGVHcmlkRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlR3JpZERhdGE+IGNvcHkoKSBjb25z
dDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlR3JpZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVHcmlkRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVHcmlkRGF0YT4gY29weSgp
IGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlR3JpZERhdGEmIG8pIGNv
bnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR3JpZEl0ZW1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdyaWRJdGVtRGF0YS5jcHAKaW5kZXggOGY1YzhlYi4uMTAyYmU5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuY3BwCkBAIC01
Myw3ICs1Myw3IEBAIGlubGluZSBTdHlsZUdyaWRJdGVtRGF0YTo6U3R5bGVHcmlkSXRlbURhdGEo
Y29uc3QgU3R5bGVHcmlkSXRlbURhdGEmIG8pCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVHcmlkSXRl
bURhdGE+IFN0eWxlR3JpZEl0ZW1EYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZUdyaWRJdGVt
RGF0YT4gU3R5bGVHcmlkSXRlbURhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFN0eWxlR3JpZEl0ZW1EYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oCmluZGV4IGIxNzU0Njku
LmQ2Njc4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdyaWRJdGVtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdyaWRJdGVtRGF0YS5oCkBAIC00Miw4ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU3R5bGVHcmlkSXRlbURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUdyaWRJdGVt
RGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlR3JpZEl0ZW1EYXRhKTsgfQotICAg
IFBhc3NSZWY8U3R5bGVHcmlkSXRlbURhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVm
PFN0eWxlR3JpZEl0ZW1EYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
R3JpZEl0ZW1EYXRhKTsgfQorICAgIFJlZjxTdHlsZUdyaWRJdGVtRGF0YT4gY29weSgpIGNvbnN0
OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlR3JpZEl0ZW1EYXRhJiBvKSBjb25z
dAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
SW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggN2YyZTFjNS4uNjMzY2M1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAKQEAg
LTU2LDcgKzU2LDcgQEAgaW5saW5lIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWRE
YXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHlsZUlu
aGVyaXRlZERhdGE+IFN0eWxlSW5oZXJpdGVkRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVJ
bmhlcml0ZWREYXRhPiBTdHlsZUluaGVyaXRlZERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlSW5oZXJpdGVkRGF0YSgqdGhpcykpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCmlu
ZGV4IGE2NWJlZmYuLmRlZjE0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKQEAgLTM2LDggKzM2LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTdHlsZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdHlsZUluaGVyaXRlZERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHls
ZUluaGVyaXRlZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVJbmhl
cml0ZWREYXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBjb3B5KCkgY29u
c3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZUluaGVyaXRlZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWREYXRhKTsgfQorICAgIFJlZjxTdHlsZUluaGVy
aXRlZERhdGE+IGNvcHkoKSBjb25zdDsKICAgICB+U3R5bGVJbmhlcml0ZWREYXRhKCk7CiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRhLmNw
cAppbmRleCA1ZTI1ZTQ5Li41OTdiM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlTWFycXVlZURhdGEuY3BwCkBAIC00NSw3ICs0NSw3IEBAIGlubGlu
ZSBTdHlsZU1hcnF1ZWVEYXRhOjpTdHlsZU1hcnF1ZWVEYXRhKGNvbnN0IFN0eWxlTWFycXVlZURh
dGEmIG8pCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVNYXJxdWVlRGF0YT4gU3R5bGVNYXJxdWVlRGF0
YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVNYXJxdWVlRGF0YT4gU3R5bGVNYXJxdWVlRGF0YTo6
Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVNYXJxdWVlRGF0
YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlTWFycXVlZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZU1hcnF1ZWVEYXRhLmgKaW5kZXggNjllOWRjYy4uZGQxMWE2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTWFycXVlZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5oCkBAIC0zNCw4ICszNCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVNYXJxdWVlRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0eWxlTWFycXVlZURhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZjxTdHlsZU1hcnF1ZWVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlTWFycXVlZURhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZU1hcnF1ZWVEYXRhPiBjb3B5KCkg
Y29uc3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZU1hcnF1ZWVEYXRhPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlTWFycXVlZURhdGEpOyB9CisgICAgUmVmPFN0eWxlTWFycXVl
ZURhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU1h
cnF1ZWVEYXRhJiBvKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVNYXJx
dWVlRGF0YSYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCmluZGV4IDY4YjYxNzguLjNmNzcyOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNw
cApAQCAtNjMsNyArNjMsNyBAQCBpbmxpbmUgU3R5bGVNdWx0aUNvbERhdGE6OlN0eWxlTXVsdGlD
b2xEYXRhKGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxl
TXVsdGlDb2xEYXRhPiBTdHlsZU11bHRpQ29sRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVN
dWx0aUNvbERhdGE+IFN0eWxlTXVsdGlDb2xEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZU11bHRpQ29sRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaAppbmRleCAw
ZTQyZTZmLi5mMzc1NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVNdWx0aUNvbERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVNdWx0aUNvbERhdGEuaApAQCAtMzcsOCArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFN0eWxlTXVsdGlDb2xEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVN
dWx0aUNvbERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZU11bHRpQ29s
RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZU11bHRpQ29sRGF0YSk7
IH0KLSAgICBQYXNzUmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3Rh
dGljIFJlZjxTdHlsZU11bHRpQ29sRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZU11bHRpQ29sRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVNdWx0aUNvbERhdGE+IGNvcHko
KSBjb25zdDsKICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVNdWx0aUNvbERh
dGEmIG8pIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZU11bHRpQ29sRGF0
YSAmbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAppbmRleCBhYjc5ZDc2Li4xMjY3MzBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVk
RGEKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiBTdHlsZVJhcmVJbmhl
cml0ZWREYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiBTdHls
ZVJhcmVJbmhlcml0ZWREYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAppbmRl
eCAyZjllZmY2Li5hNWQyOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAgLTQ3LDggKzQ3LDggQEAgY2xh
c3MgU3R5bGVJbWFnZTsKIC8vIGFjdHVhbGx5IHVzZXMgb25lIG9mIHRoZXNlIHByb3BlcnRpZXMu
CiBjbGFzcyBTdHlsZVJhcmVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVS
YXJlSW5oZXJpdGVkRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlUmFy
ZUluaGVyaXRlZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+IGNv
cHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk7IH0KKyAg
ICBSZWY8U3R5bGVSYXJlSW5oZXJpdGVkRGF0YT4gY29weSgpIGNvbnN0OwogICAgIH5TdHlsZVJh
cmVJbmhlcml0ZWREYXRhKCk7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YSYgbykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggYzUy
NGEwYS4uOGU3YmUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtMTkyLDcgKzE5Miw3
IEBAIGlubGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YT4gU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y29weSgpIGNvbnN0CitS
ZWY8U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4gU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6
Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXggZGYwYmViNi4u
OTRiODg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC04MCw4ICs4MCw4IEBAIGVudW0gUGFn
ZVNpemVUeXBlIHsKIC8vIGFjdHVhbGx5IHVzZXMgb25lIG9mIHRoZXNlIHByb3BlcnRpZXMuCiBj
bGFzcyBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4gY29weSgp
IGNvbnN0OwogICAgIH5TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCk7CiAgICAgCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQ
b2ludHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25h
cFBvaW50cy5jcHAKaW5kZXggOWM4NmRmZi4uYWMxZjUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgaW5saW5lIFN0eWxlU2Nyb2xsU25hcFBvaW50czo6U3R5bGVTY3JvbGxT
bmFwUG9pbnRzKGNvbnN0IFN0eWxlU2Nyb2xsU25hcFBvaW50cyYKIHsKIH0KIAotUGFzc1JlZjxT
dHlsZVNjcm9sbFNuYXBQb2ludHM+IFN0eWxlU2Nyb2xsU25hcFBvaW50czo6Y29weSgpIGNvbnN0
CitSZWY8U3R5bGVTY3JvbGxTbmFwUG9pbnRzPiBTdHlsZVNjcm9sbFNuYXBQb2ludHM6OmNvcHko
KSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2Nyb2xsU25hcFBvaW50
cygqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCmluZGV4IGNmN2Q5ZWIuLjRlYWNlMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9p
bnRzLmgKQEAgLTUwLDggKzUwLDggQEAgTGVuZ3RoU2l6ZSBkZWZhdWx0U2Nyb2xsU25hcERlc3Rp
bmF0aW9uKCk7CiAKIGNsYXNzIFN0eWxlU2Nyb2xsU25hcFBvaW50cyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN0eWxlU2Nyb2xsU25hcFBvaW50cz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
PFN0eWxlU2Nyb2xsU25hcFBvaW50cz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHlsZVNjcm9sbFNuYXBQb2ludHMpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZVNjcm9sbFNuYXBQb2lu
dHM+IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlU2Nyb2xsU25hcFBvaW50cz4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNjcm9sbFNuYXBQb2ludHMpOyB9
CisgICAgUmVmPFN0eWxlU2Nyb2xsU25hcFBvaW50cz4gY29weSgpIGNvbnN0OwogCiAgICAgU2Ny
b2xsU25hcFBvaW50cyB4UG9pbnRzOwogICAgIFNjcm9sbFNuYXBQb2ludHMgeVBvaW50czsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEu
Y3BwCmluZGV4IDc2NmE3MGYuLjVjOWJiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmNwcApAQCAtMzksNyArMzksNyBAQCBp
bmxpbmUgU3R5bGVTdXJyb3VuZERhdGE6OlN0eWxlU3Vycm91bmREYXRhKGNvbnN0IFN0eWxlU3Vy
cm91bmREYXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxlU3Vycm91bmREYXRhPiBTdHlsZVN1
cnJvdW5kRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVTdXJyb3VuZERhdGE+IFN0eWxlU3Vy
cm91bmREYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVN1cnJvdW5kRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuaAppbmRleCAwZGNlMzE4Li4wMGJmNWYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEu
aApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxlU3Vy
cm91bmREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVTdXJyb3VuZERhdGE+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVN1cnJvdW5kRGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVN1cnJvdW5kRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxl
U3Vycm91bmREYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZVN1cnJvdW5k
RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVN1cnJvdW5kRGF0YSk7
IH0KKyAgICBSZWY8U3R5bGVTdXJyb3VuZERhdGE+IGNvcHkoKSBjb25zdDsKICAgICAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTdXJyb3VuZERhdGEmIG8pIGNvbnN0OwogICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVN1cnJvdW5kRGF0YSYgbykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAK
aW5kZXggYzNmOTFlYS4uZWFmMzEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgaW5s
aW5lIFN0eWxlVHJhbnNmb3JtRGF0YTo6U3R5bGVUcmFuc2Zvcm1EYXRhKGNvbnN0IFN0eWxlVHJh
bnNmb3JtRGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVRyYW5zZm9ybURhdGE+IFN0eWxl
VHJhbnNmb3JtRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBTdHls
ZVRyYW5zZm9ybURhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlVHJhbnNmb3JtRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oCmluZGV4IGU4MmVhMjAuLjVhNDUy
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5z
Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFu
c2Zvcm1EYXRhLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTdHlsZVRyYW5zZm9ybURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVRyYW5zZm9ybURh
dGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVRyYW5zZm9ybURhdGE+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVUcmFuc2Zvcm1EYXRhKTsgfQotICAg
IFBhc3NSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJl
ZjxTdHlsZVRyYW5zZm9ybURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVUcmFuc2Zvcm1EYXRhKTsgfQorICAgIFJlZjxTdHlsZVRyYW5zZm9ybURhdGE+IGNvcHkoKSBj
b25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8p
IGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG8p
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVW
aXN1YWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3Vh
bERhdGEuY3BwCmluZGV4IDIzZTZjZDIuLmQ4ZmI4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IGlubGluZSBTdHlsZVZpc3VhbERhdGE6OlN0eWxlVmlzdWFsRGF0YShjb25zdCBTdHlsZVZpc3Vh
bERhdGEmIG8pCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVWaXN1YWxEYXRhPiBTdHlsZVZpc3VhbERh
dGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlVmlzdWFsRGF0YT4gU3R5bGVWaXN1YWxEYXRhOjpj
b3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVZpc3VhbERhdGEo
KnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVZpc3VhbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZp
c3VhbERhdGEuaAppbmRleCAyYjJkNjMwLi41YjI0OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCkBAIC0zNCw4ICszNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVWaXN1YWxEYXRhIDogcHVibGljIFJlZkNv
dW50ZWQ8U3R5bGVWaXN1YWxEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5
bGVWaXN1YWxEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlVmlzdWFs
RGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlVmlzdWFsRGF0YT4gY29weSgpIGNvbnN0OworICAg
IHN0YXRpYyBSZWY8U3R5bGVWaXN1YWxEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFN0eWxlVmlzdWFsRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVWaXN1YWxEYXRhPiBjb3B5KCkg
Y29uc3Q7CiAgICAgflN0eWxlVmlzdWFsRGF0YSgpOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFN0eWxlVmlzdWFsRGF0YSYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKaW5kZXggZGNkZjhlNi4uMWM1ZjQxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdCbG9jazo6UmVu
ZGVyU1ZHQmxvY2soU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclNWR0Jsb2NrOjpSZW5kZXJTVkdCbG9jayhTVkdHcmFwaGljc0Vs
ZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9j
a0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAppbmRleCBkZGM1YjkyLi40ZDNlNGVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCkBAIC0z
NSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZv
ck5vbkFub255bW91cygpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHQmxvY2soU1ZH
R3JhcGhpY3NFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0Js
b2NrKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCA0
NjI2MjBhLi4yMDEyZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVuZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdDb250
YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKICAgICAsIG1fb2JqZWN0Qm91bmRpbmdCb3hWYWxpZChmYWxzZSkKICAgICAs
IG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKHRydWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRleCAxMTZhMzcxLi5jZTZkMTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVy
LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNPYmplY3RCb3VuZGluZ0Jv
eFZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RCb3VuZGluZ0JveFZhbGlkOyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYsIFJlZjxSZW5k
ZXJTdHlsZT4pOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0NvbnRhaW5lciI7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAKaW5kZXggZjE2NmUw
MC4uYmQ0NjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdFbGxpcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0VsbGlwc2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVuZGVyU1ZHRWxsaXBzZTo6UmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQm
IGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHRWxsaXBzZTo6
UmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdTaGFwZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpKQogICAgICwgbV91c2VQYXRoRmFsbGJhY2soZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCmluZGV4IDMwMjdmMTAuLjg2YzRl
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxs
aXBzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBz
ZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVy
U1ZHRWxsaXBzZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdTaGFwZSB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmLCBSZWY8UmVuZGVy
U3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdFbGxpcHNlKCk7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25P
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmNwcAppbmRleCA0YjhjNjIzLi5mM2U2ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKQEAgLTM3
LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0OjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0ZvcmVpZ25PYmplY3Q6
OlJlbmRlclNWR0ZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGVsZW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdCbG9jayhlbGVtZW50LCBX
VEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25P
YmplY3QuaAppbmRleCA4NmE1MzRkLi43OTA4MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaApAQCAtMzIsNyArMzIs
NyBAQCBjbGFzcyBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdCbG9jayB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdCgpOwogCiAgICAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGZvcmVpZ25PYmpl
Y3RFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAKaW5kZXggMjgzY2ZiYi4uN2Y1NmZiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0
b3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGll
bnRTdG9wLmNwcApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1
c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAKLVJlbmRlclNWR0dyYWRpZW50U3RvcDo6UmVuZGVy
U1ZHR3JhZGllbnRTdG9wKFNWR1N0b3BFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclNWR0dyYWRpZW50U3RvcDo6UmVuZGVyU1ZHR3JhZGllbnRTdG9w
KFNWR1N0b3BFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDog
UmVuZGVyRWxlbWVudChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3Au
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgK
aW5kZXggYTlhYjIzZC4uY2FiZTA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNz
IFNWR0dyYWRpZW50RWxlbWVudDsKIC8vIFRoaXMgY2xhc3MgZXhpc3RzIG1vc3RseSBzbyB3ZSBj
YW4gaGVhciBhYm91dCBncmFkaWVudCBzdG9wIHN0eWxlIGNoYW5nZXMKIGNsYXNzIFJlbmRlclNW
R0dyYWRpZW50U3RvcCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJFbGVtZW50IHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJTVkdHcmFkaWVudFN0b3AoU1ZHU3RvcEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wKFNWR1N0b3BFbGVtZW50JiwgUmVmPFJl
bmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHR3JhZGllbnRTdG9wKCk7CiAKICAg
ICBTVkdTdG9wRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR1N0
b3BFbGVtZW50PihSZW5kZXJPYmplY3Q6Om5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFp
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyLmNwcAppbmRleCA2ZjQ3NjIzLi43ZWFjMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCkBA
IC0yNSw3ICsyNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyOjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OlJl
bmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHQ29udGFpbmVyKGVsZW1lbnQsIFdURjo6bW92ZShz
dHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAppbmRleCA5NDczNTE4Li5kODI0ZTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyLmgKQEAgLTMwLDcgKzMwLDcgQEAgY2xhc3MgU1ZHRWxlbWVudDsKIC8vIDxkZWZzPiwg
PGxpbmVhckdyYWRpZW50PiwgPHJhZGlhbEdyYWRpZW50PiBhcmUgYWxsIGdvb2QgZXhhbXBsZXMK
IGNsYXNzIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciA6IHB1YmxpYyBSZW5kZXJTVkdDb250YWlu
ZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdFbGVtZW50Jiwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdF
bGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDVlMzZlYjIuLjg2Y2FiOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC00NCw3ICs0NCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0lt
YWdlKFNWR0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxl
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKHRy
dWUpCiAgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKaW5kZXggMDEzYTA0Zi4uMjRiMzU3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBTVkdJbWFnZUVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR0lt
YWdlIGZpbmFsIDogcHVibGljIFJlbmRlclNWR01vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAg
ICAgdmlydHVhbCB+UmVuZGVyU1ZHSW1hZ2UoKTsKIAogICAgIFNWR0ltYWdlRWxlbWVudCYgaW1h
Z2VFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5jcHAKaW5kZXggZTcwNzU5OC4uMGNlMWM1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtMzAsNyArMzAs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1SZW5kZXJTVkdJbmxpbmU6OlJlbmRl
clNWR0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyU1ZHSW5saW5lOjpSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVySW5s
aW5lKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiAgICAgc2V0QWx3YXlzQ3JlYXRlTGlu
ZUJveGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmUuaAppbmRleCBmN2E3NzM2Li5mZjdkYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdJbmxpbmUgOiBwdWJsaWMgUmVuZGVySW5saW5lIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQm
LCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50Pihub2Rl
Rm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5kZXggOGUyYjUwMC4uN2Y4MjM0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJTVkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHRWxlbWVudCYgZWxl
bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdNb2RlbE9iamVjdDo6
UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKICAgICA6IFJlbmRlckVsZW1lbnQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1faGFzU1ZHU2hhZG93KGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IGI0NDU5NWQuLmRm
NTRkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIFNWR0VsZW1lbnQm
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJTVkdNb2RlbE9iamVjdChT
VkdFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR01vZGVsT2Jq
ZWN0KFNWR0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKIAogICAgIHZpcnR1YWwgdm9pZCB3
aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKaW5kZXggNjI0NDU3MC4uYmViNjc0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUGF0aDo6UmVuZGVyU1ZH
UGF0aChTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyU1ZHUGF0aDo6UmVuZGVyU1ZHUGF0aChTVkdHcmFwaGljc0VsZW1lbnQmIGVs
ZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdTaGFwZShlbGVt
ZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguaAppbmRleCBlYTZlY2MyLi43NTI2MTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR1BhdGggZmluYWwgOiBwdWJsaWMg
UmVuZGVyU1ZHU2hhcGUgewogcHVibGljOgotICAgIFJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NF
bGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1BhdGgoU1ZHR3Jh
cGhpY3NFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZH
UGF0aCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVjdC5jcHAKaW5kZXggZGE4NWZmYS4uZDBkZTllNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVjdDo6UmVuZGVyU1ZHUmVjdChTVkdS
ZWN0RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJT
VkdSZWN0OjpSZW5kZXJTVkdSZWN0KFNWR1JlY3RFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHU2hhcGUoZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKICAgICAsIG1fdXNlUGF0aEZhbGxiYWNrKGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAppbmRleCA0ZGExYjNiLi4yNTVhOWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR1JlY3QgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyU1ZHU2hhcGUgewogcHVibGljOgotICAgIFJlbmRlclNWR1JlY3Qo
U1ZHUmVjdEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVj
dChTVkdSZWN0RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRl
clNWR1JlY3QoKTsKIAogICAgIFNWR1JlY3RFbGVtZW50JiByZWN0RWxlbWVudCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXIuY3BwCmluZGV4IDFhZTA5MzQuLmM1ZmQ5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5j
cHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXI6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcihTVkdDbGlwUGF0aEVsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBhdGhFbGVtZW50JiBl
bGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCmlu
ZGV4IDMxMTQxZjkuLjE5Y2ZiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaApAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyKFNWR0NsaXBQYXRoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBhdGhFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKCk7CiAKICAg
ICBTVkdDbGlwUGF0aEVsZW1lbnQmIGNsaXBQYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PFNWR0NsaXBQYXRoRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyLmNwcAppbmRleCA3OGQzY2U2Li5kMzRmNjFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFp
bmVyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBzdGF0aWMgaW5saW5lIFNWR0RvY3VtZW50RXh0ZW5z
aW9ucyYgc3ZnRXh0ZW5zaW9uc0Zyb21FbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbgogICAgIHJl
dHVybiBlbGVtZW50LmRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpOwogfQogCi1SZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoU1ZHRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcjo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoU1ZHRWxlbWVudCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlclNWR0hpZGRlbkNvbnRh
aW5lcihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9pZChlbGVtZW50LmdldElk
QXR0cmlidXRlKCkpCiAgICAgLCBtX3JlZ2lzdGVyZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgK
aW5kZXggOTc3NDhmYi4uYWQyZjdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaApAQCAtNDUsNyArNDUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVDbGllbnRSZW5kZXJMYXllcihSZW5kZXJMYXll
ciopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoU1ZHRWxl
bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRh
aW5lcihTVkdFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAKICAgICBlbnVtIEludmFsaWRh
dGlvbk1vZGUgewogICAgICAgICBMYXlvdXRBbmRCb3VuZGFyaWVzSW52YWxpZGF0aW9uLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcAppbmRleCBlYzcyZTU3Li43ZGNkNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAt
NDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVtZW50JiBlbGVtZW50
LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAppbmRleCAzZDM5Nzg5Li5kY2Yx
MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5oCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlRmls
dGVyKFNWR0ZpbHRlckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIoU1ZHRmlsdGVyRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwog
ICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNlRmlsdGVyKCk7CiAKICAgICBTVkdGaWx0ZXJF
bGVtZW50JiBmaWx0ZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHRmlsdGVy
RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHAKaW5kZXggNTQ2ODhjMi4uMWMxMDcxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6UmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzJiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmIGZpbHRl
clByaW1pdGl2ZUVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJT
VkdIaWRkZW5Db250YWluZXIoZmlsdGVyUHJpbWl0aXZlRWxlbWVudCwgV1RGOjptb3ZlKHN0eWxl
KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAppbmRleCBkZjQ3NTk4Li5lZjVl
ZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNs
YXNzIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczsKIAogY2xhc3MgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmLCBQYXNzUmVmPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXgg
MTdjNjhjYi4uMDk4OWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6UmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmIG5vZGUsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6UmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmIG5vZGUsIFJlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihub2RlLCBXVEY6Om1v
dmUoc3R5bGUpKQogICAgICwgbV9zaG91bGRDb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKHRydWUp
CiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAppbmRleCBlMzc5MTUyLi4zZmM0MDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGbG9h
dFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+KTsKIAogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcAppbmRleCBhYTZmMzIwLi5jYjEyZWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TGluZWFyR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50OjpSZW5k
ZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCYgZWxl
bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZUxpbmVh
ckdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKaW5kZXggMGZmODQ1OC4uN2I1YTBiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdy
YWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUxpbmVhckdyYWRpZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50IGZpbmFsIDogcHVibGlj
IFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQoU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgdmlydHVhbCB+UmVuZGVy
U1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCgpOwogCiAgICAgU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50JiBsaW5lYXJHcmFkaWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmdyYWRpZW50
RWxlbWVudCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcAppbmRleCAzZjcxODI2Li4yYmU4Mjc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFy
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFya2VyLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlbmRlclNWR1Jlc291cmNlTWFya2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcihTVkdNYXJr
ZXJFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNW
R1Jlc291cmNlTWFya2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcihTVkdNYXJrZXJFbGVtZW50
JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaApp
bmRleCAyN2E5MGE5Li5hNTI0ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCkBAIC0zMiw3ICszMiw3IEBAIGNs
YXNzIFJlbmRlck9iamVjdDsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIgZmluYWwg
OiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRl
clNWR1Jlc291cmNlTWFya2VyKFNWR01hcmtlckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIoU1ZHTWFya2VyRWxlbWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNlTWFya2VyKCk7CiAK
ICAgICBTVkdNYXJrZXJFbGVtZW50JiBtYXJrZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8U1ZHTWFya2VyRWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OmVsZW1l
bnQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggMTBiYzBhYi4uNDk5M2M2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoU1ZHTWFza0VsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXI6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyKFNWR01hc2tFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCA3Y2Q3
NGRjLi40OGFmNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBAIC0zNyw3ICszNyw3IEBAIHN0cnVjdCBNYXNr
ZXJEYXRhIHsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIgZmluYWwgOiBwdWJsaWMg
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291
cmNlTWFza2VyKFNWR01hc2tFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJl
bmRlclNWR1Jlc291cmNlTWFza2VyKFNWR01hc2tFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7
CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoKTsKIAogICAgIFNWR01hc2tF
bGVtZW50JiBtYXNrRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR01hc2tFbGVt
ZW50PihSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6ZWxlbWVudCgpKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwCmluZGV4IDdjMDYxM2MuLjgwOWFlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm46OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybihTVkdQYXR0ZXJuRWxlbWVudCYgZWxlbWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybihTVkdQYXR0ZXJuRWxlbWVudCYgZWxlbWVudCwgUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKGVs
ZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3Nob3VsZENvbGxlY3RQYXR0ZXJuQXR0
cmlidXRlcyh0cnVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKaW5kZXggNjE5MTg5Yi4uOWUzYjI4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogY2xhc3MgUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4oU1ZHUGF0dGVybkVsZW1l
bnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
KFNWR1BhdHRlcm5FbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7CiAgICAgU1ZHUGF0dGVybkVs
ZW1lbnQmIHBhdHRlcm5FbGVtZW50KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
QWxsQ2xpZW50c0Zyb21DYWNoZShib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwCmluZGV4IDFkODhkMmIuLjU5Nzg5
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VSYWRpYWxHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcApAQCAtMjQsNyArMjQsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6
OlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNl
UmFkaWFsR3JhZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQoU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDog
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVJhZGlhbEdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaAppbmRleCAxNjVhYzAzLi44ZWVlYmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFk
aWFsR3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaApAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGll
bnQgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudCB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudChTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxH
cmFkaWVudChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KCk7CiAKICAgICBTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQmIHJhZGlhbEdyYWRpZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGRvd25jYXN0PFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudDo6Z3JhZGllbnRFbGVtZW50KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCAyYjU3Njc1Li5iMGY2YzFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSb290OjpSZW5kZXJT
VkdSb290KFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyU1ZHUm9vdDo6UmVuZGVyU1ZHUm9vdChTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RG
Ojptb3ZlKHN0eWxlKSkKICAgICAsIG1fb2JqZWN0Qm91bmRpbmdCb3hWYWxpZChmYWxzZSkKICAg
ICAsIG1faXNMYXlvdXRTaXplQ2hhbmdlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggY2JmZTAyMS4uYzUzZWZiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKQEAgLTM2LDcgKzM2LDcg
QEAgY2xhc3MgU1ZHU1ZHRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZHUm9vdCBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUm9vdChTVkdTVkdF
bGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jvb3QoU1ZHU1ZH
RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4pOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jvb3Qo
KTsKIAogICAgIFNWR1NWR0VsZW1lbnQmIHN2Z1NWR0VsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggOWE2MWZl
My4uOGYzMjlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZW5kZXJT
VkdTaGFwZSYgbV9yZW5kZXJlcjsKIH07CiAKLVJlbmRlclNWR1NoYXBlOjpSZW5kZXJTVkdTaGFw
ZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyU1ZHU2hhcGU6OlJlbmRlclNWR1NoYXBlKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0
KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0
ZShmYWxzZSkgLy8gRGVmYXVsdCBpcyBmYWxzZSwgdGhlIGNhY2hlZCByZWN0cyBhcmUgZW1wdHkg
ZnJvbSB0aGUgYmVnaW5uaW5nLgogICAgICwgbV9uZWVkc1NoYXBlVXBkYXRlKHRydWUpIC8vIERl
ZmF1bHQgaXMgdHJ1ZSwgc28gd2UgZ3JhYiBhIFBhdGggb2JqZWN0IG9uY2UgZnJvbSBTVkdHcmFw
aGljc0VsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1No
YXBlLmgKaW5kZXggMTA4Y2U0OC4uYWFjYTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtNDUsOCArNDUsOCBAQCBjbGFzcyBTVkdHcmFw
aGljc0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR1NoYXBlIDogcHVibGljIFJlbmRlclNWR01v
ZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1l
bnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyU1ZHU2hhcGUoU1ZHR3JhcGhp
Y3NFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIFBhdGgqLCBib29sKTsKKyAgICBSZW5k
ZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+LCBQYXRo
KiwgYm9vbCk7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHU2hhcGUoKTsKIAogICAgIFNWR0dyYXBo
aWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZH
R3JhcGhpY3NFbGVtZW50PihSZW5kZXJTVkdNb2RlbE9iamVjdDo6ZWxlbWVudCgpKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCmluZGV4IDNmZDk3
OTcuLjMwM2U5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVFNwYW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RTcGFuLmgKQEAgLTI4LDcgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJl
bmRlclNWR1RTcGFuIGZpbmFsIDogcHVibGljIFJlbmRlclNWR0lubGluZSB7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgUmVuZGVyU1ZHVFNwYW4oU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCYgZWxl
bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCisgICAgZXhwbGljaXQgUmVuZGVyU1ZH
VFNwYW4oU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJTVkdJbmxpbmUoZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHAKaW5kZXggYmFjZGQzYS4uMTE5NWMwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHVGV4dDo6UmVuZGVyU1ZHVGV4dChTVkdU
ZXh0RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJT
VkdUZXh0OjpSZW5kZXJTVkdUZXh0KFNWR1RleHRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKICAgICAsIG1fbmVlZHNSZW9yZGVyaW5nKGZhbHNlKQogICAgICwgbV9uZWVkc1Bvc2l0
aW9uaW5nVmFsdWVzVXBkYXRlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaAppbmRleCBmZWQxM2NjLi41ZDEwOGNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFz
cyBSZW5kZXJTVkdJbmxpbmVUZXh0OwogCiBjbGFzcyBSZW5kZXJTVkdUZXh0IGZpbmFsIDogcHVi
bGljIFJlbmRlclNWR0Jsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdUZXh0KFNWR1RleHRF
bGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1RleHQoU1ZHVGV4
dEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdUZXh0
KCk7CiAKICAgICBTVkdUZXh0RWxlbWVudCYgdGV4dEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAKaW5kZXgg
YTM1ZDZjNi4uYmZlNGFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZW5kZXJTVkdUZXh0UGF0aDo6UmVuZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBh
dGhFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNW
R1RleHRQYXRoOjpSZW5kZXJTVkdUZXh0UGF0aChTVkdUZXh0UGF0aEVsZW1lbnQmIGVsZW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdJbmxpbmUoZWxlbWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dFBhdGguaAppbmRleCA3MGE1ZmQ3Li42OTM1M2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCkBAIC0yNyw3
ICsyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHVGV4dFBhdGgg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHSW5saW5lIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdU
ZXh0UGF0aChTVkdUZXh0UGF0aEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBhdGhFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPik7
CiAKICAgICBTVkdUZXh0UGF0aEVsZW1lbnQmIHRleHRQYXRoRWxlbWVudCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcAppbmRleCBmMzZhOTIwLi40OTIxY2EyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIAotUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6UmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lcjo6UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQm
IGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdDb250YWlu
ZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRh
dGUodHJ1ZSkKICAgICAsIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKGZhbHNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIuaAppbmRleCA5ZWRhYmVlLi5hZjM4MTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTVkdHcmFwaGljc0VsZW1lbnQ7CiBjbGFzcyBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihT
VkdHcmFwaGljc0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+KTsKICAgICBTVkdHcmFwaGljc0Vs
ZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxl
bWVudD4oUmVuZGVyU1ZHQ29udGFpbmVyOjplbGVtZW50KCkpOyB9CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAppbmRleCA4MDQzNmQ3Li4wMWFjZmY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRh
aW5lcihTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihT
VkdTVkdFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIDogUmVu
ZGVyU1ZHQ29udGFpbmVyKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2RpZFRy
YW5zZm9ybVRvUm9vdFVwZGF0ZShmYWxzZSkKICAgICAsIG1faXNMYXlvdXRTaXplQ2hhbmdlZChm
YWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIuaAppbmRleCBmNjI0ZjVmLi4yNjU4NTQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lci5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHRodXMg
d2UgaW5oZXJpdCBmcm9tIFJlbmRlclNWR0NvbnRhaW5lciBpbnN0ZWFkIG9mIFJlbmRlclNWR1Ry
YW5zZm9ybWFibGVDb250YWluZXIKIGNsYXNzIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIGZp
bmFsIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsK
KyAgICBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcihTVkdTVkdFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPik7CiAKICAgICBTVkdTVkdFbGVtZW50JiBzdmdTVkdFbGVtZW50KCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRl
cmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJl
bmRlcmluZ0NvbnRleHQuaAppbmRleCA1MWI0MzRjLi40ZmFlMmI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dC5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlOwogCiBjbGFzcyBT
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBUZXh0UnVuOjpSZW5kZXJp
bmdDb250ZXh0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdUZXh0UnVuUmVuZGVy
aW5nQ29udGV4dD4gY3JlYXRlKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCisgICAgc3RhdGljIFJl
ZjxTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUZXh0UnVuUmVuZGVy
aW5nQ29udGV4dChyZW5kZXJlcikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAppbmRleCBkZDhkNjM2Li44NjlhNWY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFN0eWxlIHsK
IAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKK1JlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVy
VHJlZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3Vt
ZW50LmgKaW5kZXggZjcyNDczYi4uM2YxMzAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFN0
eWxlUmVzb2x2ZUZvckRvY3VtZW50X2gKICNkZWZpbmUgU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnRf
aAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTsK
IAogbmFtZXNwYWNlIFN0eWxlIHsKIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRv
Y3VtZW50KGNvbnN0IERvY3VtZW50Jik7CitSZWY8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JEb2N1
bWVudChjb25zdCBEb2N1bWVudCYpOwogCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UmVzb2x2ZVRyZWUuY3BwCmluZGV4IGQ1ODg2OWEuLmI4OGQ3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIGJv
b2wgc2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVu
ZGVyRWxlbWVudCYgcGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYg
aW5oZXJpdGVkU3R5bGUpCitzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmIGluaGVyaXRlZFN0eWxlKQogewogICAgIGlm
IChlbGVtZW50Lmhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZWxlbWVudC5jdXN0b21TdHlsZUZvclJlbmRl
cmVyKGluaGVyaXRlZFN0eWxlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmluZGV4IDE5
MjMxZDAuLmI4NWVjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApAQCAtMTM4LDcg
KzEzOCw3IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgfQogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHQUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAocGFyZW50
Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgZG93bmNhc3Q8U1ZHRWxl
bWVudD4oKnBhcmVudE5vZGUoKSkuaXNUZXh0Q29udGVudCgpKQogICAgICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyU1ZHSW5saW5lPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBRWxlbWVudC5oCmluZGV4IDNhYWE5NzkuLmM3ZjVlNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCmluZGV4IDRhZDA2M2Qu
LjNiZjE3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCkBA
IC04Miw3ICs4Miw3IEBAIGJvb2wgU1ZHQWx0R2x5cGhFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
U1ZHVFNwYW4+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbHRHbHlwaEVsZW1lbnQuaAppbmRleCA2YmU5Zjc1Li5mNGFmYThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU1ZHQWx0R2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQWx0R2x5cGhFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuY3BwCmluZGV4IDA4MmY3YWIuLjg4NzU3NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNW
R0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBTVkdDaXJjbGVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2lyY2xl
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHRWxsaXBzZT4oKnRoaXMsIFdU
Rjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Np
cmNsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKaW5k
ZXggZWMxODJkYi4uYTM3NzkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Np
cmNsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5o
CkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJp
ZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ2lyY2xlRWxl
bWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCA5NjFjZmQxLi5iMjIzZDQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApAQCAtMTEzLDcgKzEx
Myw3IEBAIHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmIGNoYW5nZSkKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAppbmRleCA5MzhjZmI0Li5hNzIxNmUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29u
c3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ2xpcFBhdGhFbGVtZW50KQogICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5pdHMsIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCmluZGV4IDAwNzVlZGUu
LmM2YzM2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCkBAIC0zOSwyMSArMzksMjEgQEAgcHVibGlj
OgogICAgICAgICBTVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUiA9IDMKICAgICB9OwogCi0gICAg
c3RhdGljIFBhc3NSZWY8U1ZHQ29sb3I+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBy
Z2JDb2xvcikKKyAgICBzdGF0aWMgUmVmPFNWR0NvbG9yPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgcmdiQ29sb3IpCiAgICAgewogICAgICAgICBhdXRvIGNvbG9yID0gYWRvcHRSZWYo
Km5ldyBTVkdDb2xvcihTVkdfQ09MT1JUWVBFX1JHQkNPTE9SKSk7CiAgICAgICAgIGNvbG9yLmdl
dCgpLnNldENvbG9yKGNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKHJnYkNvbG9yKSk7CiAgICAgICAg
IHJldHVybiBjb2xvcjsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdDb2xvcj4gY3Jl
YXRlRnJvbUNvbG9yKGNvbnN0IENvbG9yJiByZ2JDb2xvcikKKyAgICBzdGF0aWMgUmVmPFNWR0Nv
bG9yPiBjcmVhdGVGcm9tQ29sb3IoY29uc3QgQ29sb3ImIHJnYkNvbG9yKQogICAgIHsKICAgICAg
ICAgYXV0byBjb2xvciA9IGFkb3B0UmVmKCpuZXcgU1ZHQ29sb3IoU1ZHX0NPTE9SVFlQRV9SR0JD
T0xPUikpOwogICAgICAgICBjb2xvci5nZXQoKS5zZXRDb2xvcihyZ2JDb2xvcik7CiAgICAgICAg
IHJldHVybiBjb2xvcjsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdDb2xvcj4gY3Jl
YXRlQ3VycmVudENvbG9yKCkKKyAgICBzdGF0aWMgUmVmPFNWR0NvbG9yPiBjcmVhdGVDdXJyZW50
Q29sb3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQ29sb3IoU1ZH
X0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNF
bGVtZW50LmNwcAppbmRleCA4YzUyYWU0Li4wMTRjZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
ZWZzRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBTVkdEZWZzRWxlbWVudDo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R0RlZnNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVt
ZW50LmgKaW5kZXggMjNlMjBhOC4uODhiZDc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RlZnNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVt
ZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRGVmc0VsZW1lbnQpCiAgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAK
aW5kZXggZmYzOGEwMC4uNWI0MDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsbGlwc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0VsbGlw
c2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0VsbGlwc2U+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKaW5kZXggNWI5ZjkyYy4uNGIw
NjgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfTsKIAotICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICBC
RUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRWxsaXBzZUVsZW1lbnQpCiAgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJFbGVtZW50LmNwcAppbmRleCBiODc5MjQyLi40ZjhjZWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBTVkdGaWx0
ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAg
ICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRlckVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqdGhpcywg
V1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaApp
bmRleCAxOTM5ZTMxLi5iNDlmNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBO
b2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZl
TGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5jcHAKaW5kZXggM2M3ZGY3YS4uNTI4MTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAg
LTE0MSw3ICsxNDEsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKEZpbHRlckVmZmVjdCogZgogICAgICAgICBmaWx0ZXJF
ZmZlY3QtPnNldEhhc0hlaWdodCh0cnVlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA2NmFjM2MyLi42OWFkYmUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAKaW5k
ZXggNWQ2N2JjYi4uZGYwNzQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
bnRGYWNlTmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZU5hbWVFbGVtZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBQYXNzUmVmUHRyPFNWR0ZvbnRGYWNl
TmFtZUVsZW1lbnQ+IFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmPENTU0ZvbnRGYWNlU3JjVmFsdWU+IFNWR0ZvbnRG
YWNlTmFtZUVsZW1lbnQ6OnNyY1ZhbHVlKCkgY29uc3QKK1JlZjxDU1NGb250RmFjZVNyY1ZhbHVl
PiBTVkdGb250RmFjZU5hbWVFbGVtZW50OjpzcmNWYWx1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZUxvY2FsKGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFt
ZXM6Om5hbWVBdHRyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VOYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlTmFtZUVs
ZW1lbnQuaAppbmRleCBjNjg1ZjhhLi41ZTBhOTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RmFjZU5hbWVFbGVtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgU1ZHRm9udEZh
Y2VOYW1lRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTVkdGb250RmFjZU5hbWVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCi0gICAgUGFzc1JlZjxDU1NGb250RmFjZVNy
Y1ZhbHVlPiBzcmNWYWx1ZSgpIGNvbnN0OworICAgIFJlZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBz
cmNWYWx1ZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCmluZGV4IDQ1YjkwNmQuLmRmZjc4ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3
IEBAIFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6flNWR0ZvbnRGYWNlVXJpRWxlbWVudCgpCiAgICAg
ICAgIG1fY2FjaGVkRm9udC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCi1QYXNzUmVmPENTU0Zv
bnRGYWNlU3JjVmFsdWU+IFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUoKSBjb25zdAor
UmVmPENTU0ZvbnRGYWNlU3JjVmFsdWU+IFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUo
KSBjb25zdAogewogICAgIGF1dG8gc3JjID0gQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlKGdl
dEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0cikpOwogICAgIEF0b21pY1N0cmluZyB2YWx1
ZShmYXN0R2V0QXR0cmlidXRlKGZvcm1hdEF0dHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RmFjZVVyaUVsZW1lbnQuaAppbmRleCAzNTBmMWZkLi5mOGMzOWQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oCkBAIC0zNSw3ICszNSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgflNWR0ZvbnRGYWNlVXJpRWxlbWVudCgpOwogCi0gICAgUGFzc1Jl
ZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBzcmNWYWx1ZSgpIGNvbnN0OworICAgIFJlZjxDU1NGb250
RmFjZVNyY1ZhbHVlPiBzcmNWYWx1ZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNWR0ZvbnRG
YWNlVXJpRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGJhZjgyYmYu
LmZkN2Y1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmgKaW5kZXggYWI0ZDFhZi4uN2ViN2ZkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKaW5kZXggODI5YzNhZC4uOWQ3YmM2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgU1ZH
R0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFNWR0dFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHR0VsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgLy8gU1ZHIDEu
MSB0ZXN0c3VpdGUgZXhwbGljaXRlbHkgdXNlcyBjb25zdHJ1Y3RzIGxpa2UgPGcgZGlzcGxheT0i
bm9uZSI+PGxpbmVhckdyYWRpZW50PgogICAgIC8vIFdlIHN0aWxsIGhhdmUgdG8gY3JlYXRlIHJl
bmRlcmVycyBmb3IgdGhlIDxnPiAmIDxsaW5lYXJHcmFkaWVudD4gZWxlbWVudCwgdGhvdWdoIHRo
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAppbmRleCA4ZTdkMzY5Li5kMzlkYjZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR0VsZW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFNWR0dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuY3BwCmluZGV4IGE5NDM1ZDAuLmMwZWU2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgRmxvYXRSZWN0IFNW
R0dyYXBoaWNzRWxlbWVudDo6Z2V0QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRl
U3RyYXRlZ3kpCiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldEJCb3godGhpcywgc3R5
bGVVcGRhdGVTdHJhdGVneSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdHcmFw
aGljc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdHcmFwaGljc0VsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgLy8gQnkg
ZGVmYXVsdCwgYW55IHN1YmNsYXNzIGlzIGV4cGVjdGVkIHRvIGRvIHBhdGgtYmFzZWQgZHJhd2lu
ZwogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdQYXRoPigqdGhpcywgV1RGOjpt
b3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKaW5kZXgg
NjEyNjY2Zi4uMTEwYWQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQu
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyAiYmFzZSBjbGFzcyIgbWV0aG9k
cyBmb3IgYWxsIHRoZSBlbGVtZW50cyB3aGljaCByZW5kZXIgYXMgcGF0aHMKICAgICB2aXJ0dWFs
IHZvaWQgdG9DbGlwUGF0aChQYXRoJik7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIFNW
R0dyYXBoaWNzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXggYmI4NDc0ZS4uN2FjZWY3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2
b2lkIFNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0lt
YWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSW1hZ2U+KCp0aGlzLCBX
VEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRl
eCAxNzY3NjFkLi41YTliOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBA
IC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRl
cmVycygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcApp
bmRleCA0N2ViODNlLi4xZDE4YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcApAQCAtMzM1
LDcgKzMzNSw3IEBAIFNWR0xlbmd0aCBTVkdMZW5ndGg6OmZyb21DU1NQcmltaXRpdmVWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZSogdmFsdWUpCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUGFzc1Jl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gU1ZHTGVuZ3RoOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0
IFNWR0xlbmd0aCYgbGVuZ3RoKQorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBTVkdMZW5ndGg6OnRv
Q1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgU1ZHTGVuZ3RoJiBsZW5ndGgpCiB7CiAgICAgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19V
TktOT1dOOwogICAgIHN3aXRjaCAobGVuZ3RoLnVuaXRUeXBlKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5n
dGguaAppbmRleCA0MGM4ZjI1Li44NTlhOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCkBAIC05
OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgU1ZHTGVuZ3RoIGZyb21D
U1NQcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSopOwotICAgIHN0YXRpYyBQYXNzUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiB0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aCYp
OworICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvQ1NTUHJpbWl0aXZlVmFsdWUo
Y29uc3QgU1ZHTGVuZ3RoJik7CiAgICAgc3RhdGljIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZUZv
ckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIFNW
R0xlbmd0aCBibGVuZChjb25zdCBTVkdMZW5ndGgmIGZyb20sIGZsb2F0IHByb2dyZXNzKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApp
bmRleCBlNzI1YmQ5Li4xOWIzZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudD4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCmluZGV4
IDQ2ZDkyZGUuLmU5MTQ3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKaW5kZXggMmQ5ZGQzMC4uZDgzNzg1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZv
aWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BbmdsZShjb25zdCBTVkdBbmdsZSYgYW5n
bGUpCiAgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChvcmllbnRBbmdsZVByb3BlcnR5SW5mbygpLT5h
dHRyaWJ1dGVOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hcmtlckVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5kZXggOGE5YjQ2Ni4uODI4
ZjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCkBAIC0xMzIsNyArMTMy
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFz
a0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAppbmRl
eCA2ZjYyOTFlLi43M2Y4ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFz
a0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAK
QEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91
dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gbWFz
a1JlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgK
aW5kZXggZDQ2YzcwMi4uN2FiYWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01hc2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgK
QEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiBt
X2NsaWVudExheWVyczsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGFpbnQuaAppbmRleCBhYTM5YzdlLi43ZGQwNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGFpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaApA
QCAtNDMsNDEgKzQzLDQxIEBAIHB1YmxpYzoKICAgICAgICAgU1ZHX1BBSU5UVFlQRV9VUkkgPSAx
MDcKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVua25vd24o
KQorICAgIHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVua25vd24oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9VTktOT1dOKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZU5vbmUoKQorICAg
IHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZU5vbmUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9OT05FKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZUN1cnJlbnRDb2xvcigpCisgICAgc3Rh
dGljIFJlZjxTVkdQYWludD4gY3JlYXRlQ3VycmVudENvbG9yKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNWR1BhaW50KFNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZUNvbG9yKGNvbnN0
IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPFNWR1BhaW50PiBjcmVhdGVDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgewogICAgICAgICBhdXRvIHBhaW50ID0gYWRvcHRSZWYoKm5l
dyBTVkdQYWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9SKSk7CiAgICAgICAgIHBhaW50LmdldCgp
LnNldENvbG9yKGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHBhaW50OwogICAgIH0KIAotICAgIHN0
YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVVUkkoY29uc3QgU3RyaW5nJiB1cmkpCisgICAg
c3RhdGljIFJlZjxTVkdQYWludD4gY3JlYXRlVVJJKGNvbnN0IFN0cmluZyYgdXJpKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9VUkks
IHVyaSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVVUklB
bmRDb2xvcihjb25zdCBTdHJpbmcmIHVyaSwgY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIHN0YXRp
YyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVSSUFuZENvbG9yKGNvbnN0IFN0cmluZyYgdXJpLCBjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgewogICAgICAgICBhdXRvIHBhaW50ID0gYWRvcHRSZWYoKm5l
dyBTVkdQYWludChTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiwgdXJpKSk7CiAgICAgICAgIHBh
aW50LmdldCgpLnNldENvbG9yKGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHBhaW50OwogICAgIH0K
IAotICAgIHN0YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVVUklBbmROb25lKGNvbnN0IFN0
cmluZyYgdXJpKQorICAgIHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVSSUFuZE5vbmUoY29u
c3QgU3RyaW5nJiB1cmkpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQ
YWludChTVkdfUEFJTlRUWVBFX1VSSV9OT05FLCB1cmkpKTsKICAgICB9CkBAIC05Nyw3ICs5Nyw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I7CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdQYWludD4gY3JlYXRlKGNvbnN0IFNWR1Bh
aW50VHlwZSYgdHlwZSwgY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IENvbG9yJiBjb2xvcikKKyAg
ICBzdGF0aWMgUmVmPFNWR1BhaW50PiBjcmVhdGUoY29uc3QgU1ZHUGFpbnRUeXBlJiB0eXBlLCBj
b25zdCBTdHJpbmcmIHVyaSwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKICAgICAgICAgYXV0
byBwYWludCA9IGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQodHlwZSwgdXJpKSk7CiAgICAgICAgIHBh
aW50LmdldCgpLnNldENvbG9yKGNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwCmluZGV4IGEwNTlkMmEuLjM0ZDYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcApAQCAtNDAzLDcgKzQwMyw3IEBAIEZsb2F0UmVjdCBTVkdQYXRoRWxlbWVudDo6Z2V0
QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRlU3RyYXRlZ3kpCiAgICAgcmV0dXJu
IHJlbmRlcmVyLT5wYXRoKCkuYm91bmRpbmdSZWN0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdGhFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAg
IC8vIEJ5IGRlZmF1bHQsIGFueSBzdWJjbGFzcyBpcyBleHBlY3RlZCB0byBkbyBwYXRoLWJhc2Vk
IGRyYXdpbmcKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUGF0aD4oKnRoaXMs
IFdURjo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAppbmRleCA3
NWIxNmEwLi4yZWQzMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaApAQCAtMTE2
LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
Pikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAKaW5kZXggOWIzYzdhZi4uODM5YmY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgICAgIG9iamVj
dC0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1Bh
dHRlcm5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHUGF0dGVybkVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlUGF0dGVybj4oKnRoaXMsIFdURjo6bW92
ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAppbmRleCA0
OTJjZDY4Li5jMmI0MDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaApA
QCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRl
OwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlh
bEdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggODIxMTdmMS4uZTM5NGEzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTEyOSw3ICsx
MjksNyBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogICAgICAgICBvYmplY3QtPnNldE5lZWRz
TGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuaAppbmRleCAxMmJmNGVkLi4yOTNlNTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKaW5kZXggZDgwZDgx
YS4uYmMzYWU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCkBAIC0xNDQs
NyArMTQ0LDcgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1JlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1JlY3Q+
KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdSZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmgKaW5kZXggM2NlZThkOS4uMmYzNDA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVy
cmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxl
bWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCAxMmZlZDdlLi45MmEyMDJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgYm9vbCBTVkdTVkdFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1
cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBTVkdTVkdFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU1ZH
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICBpZiAoaXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSb290PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCAyNzgyMjcyLi5kZDMxOWNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
Pikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKaW5kZXggMTQw
NWQ0ZS4uMmQ0ZGU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBAIC05
Nyw3ICs5Nyw3IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTdG9wRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR1N0b3BFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdHcmFk
aWVudFN0b3A+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmgKaW5kZXggN2RhMzdjNi4uNmZkYmY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9v
bCBpc0dyYWRpZW50U3RvcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAg
IHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQ
YXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5
bGUmKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdTdG9wRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAppbmRl
eCBmYzNlMmYzLi4wY2ZjNDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dp
dGNoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQu
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgU1ZHU3dpdGNoRWxlbWVudDo6Y2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTd2l0Y2hFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgKaW5kZXggY2U2M2Y5OS4uYjM2MDBmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAog
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVtZW50KQog
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xF
bGVtZW50LmNwcAppbmRleCA4MTA5MDEzLi5hYzljZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N5bWJvbEVsZW1lbnQuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBTVkdTeW1ib2xFbGVt
ZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKICAgICByZXR1cm4gaGFzQXR0cmli
dXRlKFNWR05hbWVzOjp2aWV3Qm94QXR0cik7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdTeW1ib2xFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU3ltYm9sRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyPigqdGhpcywgV1RG
Ojptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3lt
Ym9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAppbmRl
eCAzMTQ2NWFjLi4xODU1NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3lt
Ym9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxl
bmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5j
cHAKaW5kZXggYjAxMjQ4Yy4uN2M4MWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1l
bnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFBhc3NSZWZQdHI8U1ZHVFJlZkVsZW1lbnQ+IFNWR1RS
ZWZFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKIAogY2xhc3Mg
U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI+IGNyZWF0
ZShTVkdUUmVmRWxlbWVudCYgdHJlZkVsZW1lbnQpCisgICAgc3RhdGljIFJlZjxTVkdUUmVmVGFy
Z2V0RXZlbnRMaXN0ZW5lcj4gY3JlYXRlKFNWR1RSZWZFbGVtZW50JiB0cmVmRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RSZWZUYXJnZXRFdmVudExpc3Rl
bmVyKHRyZWZFbGVtZW50KSk7CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgU1ZHVFJl
ZkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RSZWZFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdJbmxpbmU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKaW5kZXggOTg3ZmM2Ni4uYzA5
ZTViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQ
YXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3Qg
Tm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFu
RWxlbWVudC5jcHAKaW5kZXggZDM0NGYwZS4uYjFkNDA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RTcGFuRWxlbWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1JlZlB0cjxTVkdUU3BhbkVs
ZW1lbnQ+IFNWR1RTcGFuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1RTcGFuRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJTVkdUU3Bhbj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RTcGFuRWxlbWVudC5oCmluZGV4IDVlZDhiMTIuLmI2ZjE0NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVFNwYW5FbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBTVkdUU3BhbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAg
ICAgICAgICAgICAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCmluZGV4IGUwOWUyZGYuLmJlZjUxNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcApAQCAtNjYsNyArNjYsNyBAQCBBZmZpbmVU
cmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdAog
ICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUZXh0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJTVkdUZXh0PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCmluZGV4IDQzMDg0ZDUuLmQxNTVjM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgU1ZHVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQYXRoRWxlbWVudC5jcHAKaW5kZXggY2RiOTk1Yi4uMTQwYjdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lk
IFNWR1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogfQogCi1SZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZH
VGV4dFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUZXh0UGF0aD4o
KnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5oCmluZGV4IGYyNDRiYzMuLmUwMWQ2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUm
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDQyYmM4
ZjEuLjdjZTNhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTUyMyw3
ICs1MjMsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkU2hhZG93QW5kSW5zdGFuY2VUcmVl
KFNWR0VsZW1lbnQqIHRhcmdldCkKICNlbmRpZgogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHVXNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+KCp0aGlzLCBX
VEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCmluZGV4IDJm
MGJjMDUuLjYxOTcwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaApAQCAtNjksNyAr
NjksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxBdHRhY2hSZW5kZXJlcnMo
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHRvQ2xpcFBhdGgoUGF0
aCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CmluZGV4IDBiODAyMmIuLjExY2U5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTI1NSw3ICsyNTUsNyBAQCBib29s
IFdlYkVkaXRvckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKIAog
Ym9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiBz
dHlsZSwgUmFuZ2UqIHJhbmdlKQogewotICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBt
dXRhYmxlU3R5bGUoc3R5bGUtPmlzTXV0YWJsZSgpID8gc3RhdGljX2Nhc3Q8TXV0YWJsZVN0eWxl
UHJvcGVydGllcyY+KCpzdHlsZSkgOiBzdHlsZS0+bXV0YWJsZUNvcHkoKSk7CisgICAgUmVmPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IG11dGFibGVTdHlsZShzdHlsZS0+aXNNdXRhYmxlKCkgPyBS
ZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4oc3RhdGljX2Nhc3Q8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcyY+KCpzdHlsZSkpIDogc3R5bGUtPm11dGFibGVDb3B5KCkpOwogICAgIHJldHVybiBbW21f
d2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldwogICAg
ICAgICBzaG91bGRBcHBseVN0eWxlOmtpdChtdXRhYmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVj
bGFyYXRpb24oKSkgdG9FbGVtZW50c0luRE9NUmFuZ2U6a2l0KHJhbmdlKV07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3Jl
LmgKaW5kZXggYWQxYjIxZi4uNGNiYTJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaApAQCAtMjgsMTEgKzI4LDEx
IEBACiAKICNpbXBvcnQgPFdlYkNvcmUvTGlua0hhc2guaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlz
aXRlZExpbmtTdG9yZS5oPgotI2ltcG9ydCA8d3RmL1Bhc3NSZWYuaD4KKyNpbXBvcnQgPHd0Zi9S
ZWYuaD4KIAogY2xhc3MgV2ViVmlzaXRlZExpbmtTdG9yZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpWaXNpdGVkTGlua1N0b3JlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxXZWJWaXNp
dGVkTGlua1N0b3JlPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZpc2l0ZWRMaW5rU3Rv
cmU+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfldlYlZpc2l0ZWRMaW5rU3RvcmUoKTsKIAogICAg
IHN0YXRpYyB2b2lkIHNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUu
bW0KaW5kZXggNmNiOGU2Yi4uYTAwZmMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLm1tCkBAIC00NSw3ICs0NSw3
IEBAIHN0YXRpYyBIYXNoU2V0PFdlYlZpc2l0ZWRMaW5rU3RvcmUqPiYgdmlzaXRlZExpbmtTdG9y
ZXMoKQogfQogCiAKLVBhc3NSZWY8V2ViVmlzaXRlZExpbmtTdG9yZT4gV2ViVmlzaXRlZExpbmtT
dG9yZTo6Y3JlYXRlKCkKK1JlZjxXZWJWaXNpdGVkTGlua1N0b3JlPiBXZWJWaXNpdGVkTGlua1N0
b3JlOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlZpc2l0ZWRMaW5r
U3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlz
dC5oCmluZGV4IDBlZWJiMjYuLmI1NWM3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWYuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpZiBVU0UoQ0YpCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBCYWNrRm9yd2FyZExpc3RTdGF0
ZTsKIAogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6QmFja0ZvcndhcmRMaXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWY8V2ViQmFja0ZvcndhcmRMaXN0PiBjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQor
ICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0PiBjcmVhdGUoV2ViUGFnZVByb3h5JiBw
YWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQmFja0ZvcndhcmRM
aXN0KHBhZ2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAu
Y3BwCmluZGV4IGJiNDBjZDIuLjE2ZjdjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlR3JvdXAuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFBhc3NSZWZQdHI8V2ViUGFnZUdyb3Vw
PiBXZWJQYWdlR3JvdXA6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlz
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQYWdlR3JvdXAoaWRlbnRpZmllciwgdmlzaWJs
ZVRvSW5qZWN0ZWRCdW5kbGUsIHZpc2libGVUb0hpc3RvcnlDbGllbnQpKTsKIH0KIAotUGFzc1Jl
ZjxXZWJQYWdlR3JvdXA+IFdlYlBhZ2VHcm91cDo6Y3JlYXRlTm9uTnVsbChjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIGJvb2wgdmlzaWJsZVRv
SGlzdG9yeUNsaWVudCkKK1JlZjxXZWJQYWdlR3JvdXA+IFdlYlBhZ2VHcm91cDo6Y3JlYXRlTm9u
TnVsbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5k
bGUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJQYWdlR3JvdXAoaWRlbnRpZmllciwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIHZp
c2libGVUb0hpc3RvcnlDbGllbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlR3JvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
R3JvdXAuaAppbmRleCAwYjUyNDdiLi4xMDhhYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VHcm91cC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdlYlBhZ2VHcm91cCA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2VHcm91cD4gewogcHVi
bGljOgogICAgIFdlYlBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIgPSBTdHJpbmco
KSwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSA9IHRydWUsIGJvb2wgdmlzaWJsZVRvSGlz
dG9yeUNsaWVudCA9IHRydWUpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA9IFN0cmluZygpLCBib29sIHZpc2libGVU
b0luamVjdGVkQnVuZGxlID0gdHJ1ZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50ID0gdHJ1
ZSk7Ci0gICAgc3RhdGljIFBhc3NSZWY8V2ViUGFnZUdyb3VwPiBjcmVhdGVOb25OdWxsKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciA9IFN0cmluZygpLCBib29sIHZpc2libGVUb0luamVjdGVkQnVu
ZGxlID0gdHJ1ZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50ID0gdHJ1ZSk7CisgICAgc3Rh
dGljIFJlZjxXZWJQYWdlR3JvdXA+IGNyZWF0ZU5vbk51bGwoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyID0gU3RyaW5nKCksIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUgPSB0cnVlLCBib29s
IHZpc2libGVUb0hpc3RvcnlDbGllbnQgPSB0cnVlKTsKICAgICBzdGF0aWMgV2ViUGFnZUdyb3Vw
KiBnZXQodWludDY0X3QgcGFnZUdyb3VwSUQpOwogCiAgICAgdmlydHVhbCB+V2ViUGFnZUdyb3Vw
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAppbmRl
eCBlODg0MjBhLi4wYzNiNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmgKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvVXNl
ck1lZGlhUmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAxNWZk
ZDZmLi41MjZhYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xNDksNyArMTQ5LDcg
QEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2Uq
IGZyb21SYW5nZSwgUmFuZ2UqIHRvUmFuZ2UKICAgICAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojpz
aG91bGRBcHBseVN0eWxlKFN0eWxlUHJvcGVydGllcyogc3R5bGUsIFJhbmdlKiByYW5nZSkKIHsK
LSAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gbXV0YWJsZVN0eWxlKHN0eWxlLT5pc011
dGFibGUoKSA/IHN0YXRpY19jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXMmPigqc3R5bGUpIDog
c3R5bGUtPm11dGFibGVDb3B5KCkpOworICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBt
dXRhYmxlU3R5bGUoc3R5bGUtPmlzTXV0YWJsZSgpID8gUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+KHN0YXRpY19jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXMmPigqc3R5bGUpKSA6IHN0eWxl
LT5tdXRhYmxlQ29weSgpKTsKICAgICBib29sIHJlc3VsdCA9IG1fcGFnZS0+aW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQoKS5zaG91bGRBcHBseVN0eWxlKG1fcGFnZSwgbXV0YWJsZVN0eWxlLT5l
bnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCksIHJhbmdlKTsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAKaW5kZXgg
ODBkZDI2My4uYjIyNDE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcApAQCAtNDAs
NyArNDAsNyBAQCB2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cGFnZURlc3Ryb3llZCgpCiAgICAg
ZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0UGVybWlz
c2lvbihQYXNzUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IHByUmVxdWVzdCkKK3ZvaWQgV2ViVXNlck1l
ZGlhQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihSZWY8VXNlck1lZGlhUmVxdWVzdD4mJiBwclJl
cXVlc3QpCiB7CiAgICAgVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCA9IHByUmVxdWVzdC5sZWFr
UmVmKCk7CiAgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLnN0
YXJ0UmVxdWVzdChyZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCmluZGV4IGY1NzE2
NjQuLmVkNmRjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMzQsNyArMzQsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZjxXZWJDb3JlOjpVc2Vy
TWVkaWFSZXF1ZXN0Pikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNz
aW9uKFJlZjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PiYmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgY2FuY2VsUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jikgb3ZlcnJp
ZGU7CiAKICAgICBXZWJQYWdlJiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAppbmRleCAxZDVi
ZTA0Li4wNzYzMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWY8Vmlld1VwZGF0ZURpc3BhdGNoZXI+IFZpZXdV
cGRhdGVEaXNwYXRjaGVyOjpjcmVhdGUoKQorUmVmPFZpZXdVcGRhdGVEaXNwYXRjaGVyPiBWaWV3
VXBkYXRlRGlzcGF0Y2hlcjo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBW
aWV3VXBkYXRlRGlzcGF0Y2hlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oCmluZGV4IGI1MzhiYmIuLjk3
MGRmOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d1VwZGF0ZURpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuaApAQCAtMzAsMTQgKzMwLDE0IEBACiAKICNpbmNsdWRl
ICJWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvVENTcGluTG9jay5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgVmll
d1VwZGF0ZURpc3BhdGNoZXIgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFZpZXdVcGRhdGVEaXNw
YXRjaGVyPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFZpZXdVcGRhdGVEaXNwYXRjaGVyPiBj
cmVhdGUoKTsKICAgICB+Vmlld1VwZGF0ZURpc3BhdGNoZXIoKTsKIAogICAgIHZvaWQgaW5pdGlh
bGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWYuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUmVmLmNwcAppbmRleCBjMzAwOWE0Li4wMjI3YjViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWYuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1JlZi5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAog
I2luY2x1ZGUgIlJlZkxvZ2dlci5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtOTgsOSArOTcsOSBA
QCBURVNUKFdURl9SZWYsIEFzc2lnbm1lbnQpCiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgfCBk
ZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KIAotc3RhdGlj
IFBhc3NSZWY8UmVmTG9nZ2VyPiBwYXNzV2l0aFBhc3NSZWYoUGFzc1JlZjxSZWZMb2dnZXI+IHJl
ZmVyZW5jZSkKK3N0YXRpYyBSZWY8UmVmTG9nZ2VyPiBwYXNzV2l0aFJlZihSZWY8UmVmTG9nZ2Vy
PiYmIHJlZmVyZW5jZSkKIHsKLSAgICByZXR1cm4gcmVmZXJlbmNlOworICAgIHJldHVybiBXVEY6
Om1vdmUocmVmZXJlbmNlKTsKIH0KIAogc3RhdGljIFJlZlB0cjxSZWZMb2dnZXI+IHBhc3NXaXRo
UGFzc1JlZlB0cihQYXNzUmVmUHRyPFJlZkxvZ2dlcj4gcmVmZXJlbmNlKQpAQCAtMTE1LDcgKzEx
NCw3IEBAIFRFU1QoV1RGX1JlZiwgUmV0dXJuVmFsdWUpCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBj
KCJjIik7CiAKICAgICB7Ci0gICAgICAgIFJlZjxSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFBhc3NS
ZWYoYSkpOworICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoUmVmPFJlZkxv
Z2dlcj4oYSkpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIucHRyKCkpOwogICAgIH0KICAg
ICBBU1NFUlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CkBAIC0xMjQsMjAgKzEyMywyMCBAQCBURVNUKFdURl9SZWYsIFJldHVyblZhbHVlKQogICAgICAg
ICBSZWY8UmVmTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnB0cigp
KTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKLSAgICAgICAgcHRyID0gcGFzc1dpdGhQYXNzUmVm
KGIpOworICAgICAgICBwdHIgPSBwYXNzV2l0aFJlZihiKTsKICAgICAgICAgQVNTRVJUX0VRKCZi
LCBwdHIucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgIH0KICAgICBBU1NFUlRf
U1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKHBhc3NX
aXRoUGFzc1JlZihhKSk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFJl
ZihhKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgQVNT
RVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAg
ICAgewotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhQYXNzUmVmUHRyKHBh
c3NXaXRoUGFzc1JlZihhKSkpOworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIocGFzc1dp
dGhQYXNzUmVmUHRyKHBhc3NXaXRoUmVmKGEpKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRy
LmdldCgpKTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMTUyLDcgKzE1MSw3IEBAIFRFU1QoV1RGX1JlZiwgUmV0
dXJuVmFsdWUpCiAKICAgICB7CiAgICAgICAgIFJlZjxEZXJpdmVkUmVmTG9nZ2VyPiBkZXJpdmVk
UmVmZXJlbmNlKGEpOwotICAgICAgICBSZWY8UmVmTG9nZ2VyPiBiYXNlUmVmZXJlbmNlKHBhc3NX
aXRoUGFzc1JlZihkZXJpdmVkUmVmZXJlbmNlKSk7CisgICAgICAgIFJlZjxSZWZMb2dnZXI+IGJh
c2VSZWZlcmVuY2UocGFzc1dpdGhSZWYoUmVmPFJlZkxvZ2dlcj4oZGVyaXZlZFJlZmVyZW5jZSkp
KTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBkZXJpdmVkUmVmZXJlbmNlLnB0cigpKTsKICAgICAg
ICAgQVNTRVJUX0VRKCZhLCBiYXNlUmVmZXJlbmNlLnB0cigpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCmluZGV4IGUwZTFhMjUuLjAxOGQ3
YjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCkBA
IC00MCw3ICs0MCw3IEBAIFRFU1QoV1RGLCBSZWZDb3VudGVyKQogICAgIC8vCiAgICAgLy8gMSkg
UmVmQ291bnRlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOwogICAgIC8vIDIpIH5SZWZDb3VudGVy
KCk7Ci0gICAgLy8gMykgUGFzc1JlZjxDb3VudD4gY291bnQoKSBjb25zdDsKKyAgICAvLyAzKSBS
ZWY8Q291bnQ+IGNvdW50KCkgY29uc3Q7CiAgICAgLy8gNCkgdW5zaWduZWQgdmFsdWUoKSBjb25z
dDsKICAgICAvLwogICAgIC8vIFdlJ2xsIHRlc3Q6CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUmVmUHRyLmNwcAppbmRleCAyNGFlOTRkLi5mYzkyMjQ2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBURVNUKFdURl9SZWZQ
dHIsIEFzc2lnblBhc3NSZWZUb1JlZlB0cikKIHsKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEi
KTsKICAgICB7Ci0gICAgICAgIFBhc3NSZWY8UmVmTG9nZ2VyPiBwYXNzUmVmKGEpOworICAgICAg
ICBSZWY8UmVmTG9nZ2VyPiBwYXNzUmVmKGEpOwogICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBw
dHIgPSBXVEY6Om1vdmUocGFzc1JlZik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdldCgp
KTsKICAgICAgICAgcHRyLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCAwYWU4NWQ3Li43NjAz
ODQ0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3Vs
YXRpb25WYWx1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Nh
bGN1bGF0aW9uVmFsdWUuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ2FsY0V4cHJlc3Npb25Ob2RlJikgY29uc3QgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCi1zdGF0aWMgUGFzc1JlZjxXZWJDb3JlOjpD
YWxjdWxhdGlvblZhbHVlPiBjcmVhdGVUZXN0VmFsdWUoKQorc3RhdGljIFJlZjxXZWJDb3JlOjpD
YWxjdWxhdGlvblZhbHVlPiBjcmVhdGVUZXN0VmFsdWUoKQogewogICAgIGF1dG8gbm9kZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlPigpOwogICAgIHJldHVy
biBXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGOjptb3ZlKG5vZGUpLCBXZWJD
b3JlOjpDYWxjdWxhdGlvblJhbmdlQWxsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243207</attachid>
            <date>2014-12-12 11:11:33 -0800</date>
            <delta_ts>2014-12-12 14:57:34 -0800</delta_ts>
            <desc>Potentially a patch</desc>
            <filename>bug-139587.diff</filename>
            <type>text/plain</type>
            <size>610477</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGYwYWRlYjEuLjY1MWRlY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTEyLTEyICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFBhc3NSZWYgd2l0aCBSZWYv
UmVmJiYgYWNyb3NzIHRoZSBib2FyZC4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEz
OTU4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHJ1bnRpbWUvSWRlbnRpZmllci5jcHA6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmFkZCk6
CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmFkZDgpOgorICAgICAgICAqIHJ1bnRpbWUvSWRl
bnRpZmllci5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAqIHJ1
bnRpbWUvSWRlbnRpZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRk
KToKKwogMjAxNC0xMi0xMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIEZpbmFsIGNsZWFuIHVwIE93blB0ciBpbiBKU0MgLSBydW50aW1lLCBmdGws
IGFuZCB0b29sIGRpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXIuY3BwCmluZGV4IDY3NzdmMTYuLmUwODE2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIFdU
Rjo6VGhyZWFkU3BlY2lmaWM7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1QYXNzUmVmPFN0cmluZ0lt
cGw+IElkZW50aWZpZXI6OmFkZChWTSogdm0sIGNvbnN0IGNoYXIqIGMpCitSZWY8U3RyaW5nSW1w
bD4gSWRlbnRpZmllcjo6YWRkKFZNKiB2bSwgY29uc3QgY2hhciogYykKIHsKICAgICBBU1NFUlQo
Yyk7CiAgICAgQVNTRVJUKGNbMF0pOwpAQCAtNDgsMTIgKzQ4LDEyIEBAIFBhc3NSZWY8U3RyaW5n
SW1wbD4gSWRlbnRpZmllcjo6YWRkKFZNKiB2bSwgY29uc3QgY2hhciogYykKICAgICByZXR1cm4g
KkF0b21pY1N0cmluZzo6YWRkKGMpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IElkZW50aWZp
ZXI6OmFkZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGMpCitSZWY8U3RyaW5nSW1wbD4g
SWRlbnRpZmllcjo6YWRkKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogYykKIHsKICAgICBy
ZXR1cm4gYWRkKCZleGVjLT52bSgpLCBjKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBJZGVu
dGlmaWVyOjphZGQ4KFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpCitSZWY8U3Ry
aW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkOChWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVu
Z3RoKQogewogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICBVQ2hhciBjID0gc1swXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBkOWZlMjBk
Li4wMTMyZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5o
CkBAIC05Nyw4ICs5Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBT
dHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiA6OmVxdWFsKGEsIGIp
OyB9CiAKICAgICAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkKFZNKiwgY29u
c3QgY2hhciopOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0lt
cGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGQoVk0qLCBjb25zdCBjaGFyKik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwgY29uc3Qg
Y2hhciopOwogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKQEAgLTExMSwx
MiArMTExLDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSWRlbnRp
ZmllciYgYSwgY29uc3QgSWRlbnRpZmllciYgYikgeyByZXR1cm4gYS5tX3N0cmluZy5pbXBsKCkg
PT0gYi5tX3N0cmluZy5pbXBsKCk7IH0KICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBJZGVu
dGlmaWVyJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gZXF1YWwoYS5tX3N0cmluZy5pbXBs
KCksIGIpOyB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIFBhc3NSZWY8U3Ry
aW5nSW1wbD4gYWRkKFZNKiwgY29uc3QgVCosIGludCBsZW5ndGgpOwotICAgIHN0YXRpYyBQYXNz
UmVmPFN0cmluZ0ltcGw+IGFkZDgoVk0qLCBjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChWTSosIGNv
bnN0IFQqLCBpbnQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZDgoVk0q
LCBjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGNhblVzZVNpbmdsZUNoYXJhY3RlclN0cmluZyhUKTsK
IAotICAgIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBTdHJpbmdJ
bXBsKik7Ci0gICAgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkKFZNKiwgU3RyaW5nSW1w
bCopOworICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIFN0cmluZ0lt
cGwqKTsKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChWTSosIFN0cmluZ0ltcGwqKTsK
IAogI2lmbmRlZiBOREVCVUcKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjaGVj
a0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShFeGVjU3RhdGUqKTsKQEAgLTEzOSw3ICsxMzksNyBA
QCB0ZW1wbGF0ZSA8PiBBTFdBWVNfSU5MSU5FIGJvb2wgSWRlbnRpZmllcjo6Y2FuVXNlU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKFVDaGFyIGMpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotUGFz
c1JlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQoVk0qIHZtLCBjb25zdCBUKiBzLCBpbnQg
bGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZChWTSogdm0sIGNvbnN0IFQq
IHMsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKGxlbmd0aCA9PSAxKSB7CiAgICAgICAgIFQgYyA9
IHNbMF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklu
bGluZXMuaAppbmRleCBlZmMzZDNjLi43NDcyZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBp
bmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc3RyaW5nKQogI2VuZGlmCiB9CiAKLWlubGluZSBQYXNzUmVmPFN0cmluZ0ltcGw+
IElkZW50aWZpZXI6OmFkZChFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHIpCitpbmxpbmUg
UmVmPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZChFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0lt
cGwqIHIpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKGV4ZWMpOwogI2VuZGlmCiAgICAgcmV0dXJuICpBdG9taWNTdHJpbmc6OmFkZFdpdGhTdHJp
bmdUYWJsZVByb3ZpZGVyKCpleGVjLCByKTsKIH0KLWlubGluZSBQYXNzUmVmPFN0cmluZ0ltcGw+
IElkZW50aWZpZXI6OmFkZChWTSogdm0sIFN0cmluZ0ltcGwqIHIpCitpbmxpbmUgUmVmPFN0cmlu
Z0ltcGw+IElkZW50aWZpZXI6OmFkZChWTSogdm0sIFN0cmluZ0ltcGwqIHIpCiB7CiAjaWZuZGVm
IE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKHZtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYzdi
MmY2ZS4uYzJmZGUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTcgQEAKKzIwMTQtMTItMTIgIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgUGFzc1JlZiB3aXRo
IFJlZi9SZWYmJiBhY3Jvc3MgdGhlIGJvYXJkLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTM5NTg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEtpbGwgdGhlIFBhc3NSZWYgY2xhc3MgYW5kIHJlcGxhY2UgaXQgYnkgUmVmL1JlZiYmLgor
ICAgICAgICBVc2FnZSBpcyBzaW1wbGU6CisKKyAgICAgICAgICAgIC0gRm9yIGxvY2FscyBhbmQg
bWVtYmVycywga2VlcCB1c2luZyBSZWY8VD4uCisgICAgICAgICAgICAtIEZvciByZXR1cm4gdHlw
ZXMsIHVzZSBSZWY8VD4uCisgICAgICAgICAgICAtIEZvciBhcmd1bWVudHMsIHVzZSBSZWY8VD4m
Ji4KKworICAgICAgICBXaGVuIHBhc3NpbmcgdG8gYSBSZWYmJiwgdXNlIFdURjo6bW92ZSgpIHRv
IG1vYmlsaXplIHRoZSB2YWx1ZQorICAgICAgICBhdCB0aGUgY2FsbCBzaXRlLCBlLmc6CisKKyAg
ICAgICAgICAgIHZvaWQgbXlGdW5jdGlvbihSZWY8Rm9vPiYmKTsKKworICAgICAgICAgICAgUmVm
PEZvbz4gbXlGb28oRm9vOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBteUZ1bmN0aW9uKFdURjo6
bW92ZShteUZvbykpOworICAgICAgICAgICAgLy8gJ215Rm9vJyBpcyBpbnZhbGlkIGZyb20gdGhp
cyBwb2ludCBmb3J3YXJkLgorCisgICAgICAgIEFzIHlvdSBjYW4gc2VlLCBpdCB3b3JrcyBhIGxv
dCBsaWtlIFBhc3NSZWZQdHIsIGJ1dCB1bmxpa2UgUGFzc1JlZlB0cgorICAgICAgICBpdCB3b24n
dCBzdXJwcmlzZSB5b3UgYnkgYmVjb21pbmcgbnVsbCAqdW5sZXNzKiB5b3UgV1RGOjptb3ZlIGl0
LgorCisgICAgICAgIEkndmUgYWxzbyBhZGRlZCBhIFJlZjo6Y29weVJlZigpIGZvciBpbnN0YW5j
ZXMgd2hlcmUgeW91IHdhbnQgdG8KKyAgICAgICAgcmV0dXJuIGEgUmVmICp3aXRob3V0KiB0cmFu
c2ZlcnJpbmcgb3duZXJzaGlwLCBlLmcgY29kZSBsaWtlOgorCisgICAgICAgICAgICBSZWY8Rm9v
PiBmb28oKSB7IHJldHVybiBtX2ZvbzsgfQorCisgICAgICAgIC4uLiBub3cgYmVjb21lcyAuLi4K
KworICAgICAgICAgICAgUmVmPEZvbz4gZm9vKCkgeyByZXR1cm4gbV9mb28uY29weVJlZigpOyB9
CisKKyAgICAgICAgVGhpcyBtYWtlcyBpdCBleHBsaWNpdCB0aGF0IGEgcmVmY291bnQgYnVtcCB3
aWxsIG9jY3VyLgorCisgICAgICAgIEZpbmFsbHksIGRvIG5vdGUgdGhhdCB1bmxpa2UgbGFzdCB5
ZWFyJ3MgUGFzc1JlZiwgUmVmJiYgZG9lcyBub3QKKyAgICAgICAgcmVxdWlyZSB5b3UgdG8gbW92
ZSBpdCB0byBhdm9pZCBsZWFraW5nOyBpdCB3aWxsIGNsZWFuIGl0c2VsZiB1cC4KKworICAgICAg
ICAqIHd0Zi9QYXNzUmVmLmg6CisgICAgICAgIChXVEY6OmFkb3B0ZWQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpQYXNzUmVmPFQ+OjpQYXNzUmVmKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
UGFzc1JlZjxUPjo6flBhc3NSZWYpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQYXNzUmVmPFQ+
OjpnZXQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQYXNzUmVmPFQ+OjpwdHIpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpQYXNzUmVmPFQ+OjpsZWFrUmVmKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6YWRvcHRSZWYpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpjcmVhdGVSZWZDb3VudGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvUGFzc1JlZlB0ci5oOgorICAgICAgICAoV1RGOjpQ
YXNzUmVmUHRyOjpQYXNzUmVmUHRyKToKKyAgICAgICAgKiB3dGYvUmVmLmg6CisgICAgICAgIChX
VEY6OmFkb3B0ZWQpOgorICAgICAgICAoV1RGOjpSZWY6On5SZWYpOgorICAgICAgICAoV1RGOjpS
ZWY6OlJlZik6CisgICAgICAgIChXVEY6OlJlZjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6
UmVmOjpvcGVyYXRvci0+KToKKyAgICAgICAgKFdURjo6UmVmOjpwdHIpOgorICAgICAgICAoV1RG
OjpSZWY6OmdldCk6CisgICAgICAgIChXVEY6OlJlZjo6b3BlcmF0b3IgVCYpOgorICAgICAgICAo
V1RGOjpSZWY6Om9wZXJhdG9yIGNvbnN0IFQmKToKKyAgICAgICAgKFdURjo6UmVmPFQ+OjpyZXBs
YWNlKToKKyAgICAgICAgKFdURjo6YWRvcHRSZWYpOgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVy
Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI6OmNvdW50KToKKyAgICAgICAgKiB3dGYvUmVm
UHRyLmg6CisgICAgICAgIChXVEY6OlJlZlB0cjo6cmVsZWFzZU5vbk51bGwpOgorICAgICAgICAo
V1RGOjpSZWZQdHI8VD46OlJlZlB0cik6CisgICAgICAgIChXVEY6Oj0pOgorICAgICAgICAqIHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OmFkZFRvU3RyaW5nVGFibGUp
OgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZCk6CisgICAgICAgIChXVEY6OkF0b21p
Y1N0cmluZzo6YWRkRnJvbUxpdGVyYWxEYXRhKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5n
OjphZGRTbG93Q2FzZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6
OmNyZWF0ZUZyb21MaXRlcmFsKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlV2l0
aG91dENvcHlpbmcpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxp
emVkSW50ZXJuYWwpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxp
emVkSW50ZXJuYWxOb25FbXB0eSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZWFsbG9jYXRlSW50ZXJu
YWwpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZWFsbG9jYXRlKToKKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6Y3JlYXRlSW50ZXJuYWwpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
OjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJs
ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN1YnN0cmluZyk6CisgICAgICAgIChXVEY6
OlN0cmluZ0ltcGw6Omxvd2VyKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dXBwZXIpOgor
ICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmaWxsKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1w
bDo6Zm9sZENhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjb252ZXJ0VG9BU0NJSUxv
d2VyY2FzZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0cmlwTWF0Y2hlZENoYXJhY3Rl
cnMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpzdHJpcFdoaXRlU3BhY2UpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UpOgorICAgICAgICAoV1RG
OjpTdHJpbmdJbXBsOjpzaW1wbGlmeVdoaXRlU3BhY2UpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpyZXBsYWNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6YWRvcHQpOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3Jl
YXRlOEJpdElmUG9zc2libGUpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbDgpOgor
ICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbCk6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKToKKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6Y3JlYXRlRW1wdHlVbmlxdWUpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjphZG9wdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnJlcGxhY2UpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxMQ2hhcj4pOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxVQ2hhcj4pOgorICAgICAgICAoV1RG
OjpTdHJpbmdJbXBsOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OlN0cmluZyk6CisKIDIwMTQtMTItMTAgIEdlb2Zm
cmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBQbGVhc2UgZGlzYWJsZSB0
aGUgd2Via2l0Rmlyc3RWZXJzaW9uV2l0aEluaXRDb25zdHJ1Y3RvclN1cHBvcnQgY2hlY2sgb24g
QXBwbGUgVFYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWYuaCBiL1NvdXJjZS9X
VEYvd3RmL1Bhc3NSZWYuaAppbmRleCAyNmQxNGQ0Li4zMWM0ODdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QYXNzUmVmLmgKKysrIGIvU291cmNlL1dURi93dGYvUGFzc1JlZi5oCkBAIC0x
LDE1NCArMSBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFdURl9QYXNzUmVmX2gK
LSNkZWZpbmUgV1RGX1Bhc3NSZWZfaAotCi0jaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgotI2luY2x1
ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWY7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBQYXNzUmVmUHRyOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmOwotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmUHRyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNz
UmVmPFQ+IGFkb3B0UmVmKFQmKTsKLQotaW5saW5lIHZvaWQgYWRvcHRlZChjb25zdCB2b2lkKikg
eyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWYgewotcHVibGljOgotICAg
IFBhc3NSZWYoVCYpOwotICAgIFBhc3NSZWYoUGFzc1JlZiYmKTsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBQYXNzUmVmKGNvbnN0IFJlZjxVPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IFBhc3NSZWYoUGFzc1JlZjxVPik7Ci0KLSAgICBjb25zdCBUJiBnZXQoKSBjb25zdDsKLSAgICBU
JiBnZXQoKTsKLQotICAgIGNvbnN0IFQqIHB0cigpIGNvbnN0OwotICAgIFQqIHB0cigpOwotCi0g
ICAgVCYgbGVha1JlZigpIFdBUk5fVU5VU0VEX1JFVFVSTjsKLQotICAgIH5QYXNzUmVmKCk7Ci0K
LXByaXZhdGU6Ci0gICAgZnJpZW5kIFBhc3NSZWYgYWRvcHRSZWY8VD4oVCYpOwotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIGNsYXNzIFBhc3NSZWY7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gZnJpZW5kIGNsYXNzIFBhc3NSZWZQdHI7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gZnJpZW5kIGNsYXNzIFJlZjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgY2xh
c3MgUmVmUHRyOwotCi0gICAgZW51bSBBZG9wdFRhZyB7IEFkb3B0IH07Ci0gICAgUGFzc1JlZihU
JiwgQWRvcHRUYWcpOwotCi0gICAgVCogbV9wdHI7Ci0gICAgYm9vbCBtX2dhdmVVcFJlZmVyZW5j
ZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzUmVmPFQ+OjpQYXNzUmVm
KFQmIHJlZmVyZW5jZSkKLSAgICA6IG1fcHRyKCZyZWZlcmVuY2UpCi17Ci0gICAgbV9wdHItPnJl
ZigpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1JlZjxUPjo6UGFzc1Jl
ZihQYXNzUmVmJiYgb3RoZXIpCi0gICAgOiBtX3B0cigmb3RoZXIubGVha1JlZigpKQotewotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1Jl
ZjxUPjo6UGFzc1JlZihQYXNzUmVmPFU+IG90aGVyKQotICAgIDogbV9wdHIoJm90aGVyLmxlYWtS
ZWYoKSkKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4g
aW5saW5lIFBhc3NSZWY8VD46OlBhc3NSZWYoY29uc3QgUmVmPFU+JiBvdGhlcikKLSAgICA6IG1f
cHRyKHN0YXRpY19jYXN0PFQqPihjb25zdF9jYXN0PFUqPihvdGhlci5wdHIoKSkpKQotewotICAg
IEFTU0VSVChtX3B0cik7Ci0gICAgbV9wdHItPnJlZigpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBQYXNzUmVmPFQ+Ojp+UGFzc1JlZigpCi17Ci0gICAgaWYgKG1fcHRyKQotICAgICAgICBt
X3B0ci0+ZGVyZWYoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0IFQm
IFBhc3NSZWY8VD46OmdldCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fcHRyKTsKLSAgICByZXR1
cm4gKm1fcHRyOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCYgUGFzc1JlZjxU
Pjo6Z2V0KCkKLXsKLSAgICBBU1NFUlQobV9wdHIpOwotICAgIHJldHVybiAqbV9wdHI7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIFBhc3NSZWY8VD46OnB0cigpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKG1fcHRyKTsKLSAgICByZXR1cm4gbV9wdHI7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IFQqIFBhc3NSZWY8VD46OnB0cigpCi17Ci0gICAgQVNTRVJUKG1fcHRyKTsKLSAg
ICByZXR1cm4gbV9wdHI7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUJiBQYXNz
UmVmPFQ+OjpsZWFrUmVmKCkKLXsKLSAgICBBU1NFUlQobV9wdHIpOwotICAgIFQqIGxlYWtlZFB0
ciA9IG1fcHRyOwotICAgIG1fcHRyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gKmxlYWtlZFB0cjsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWY8VD46OlBhc3NSZWYoVCYg
cmVmZXJlbmNlLCBBZG9wdFRhZykKLSAgICA6IG1fcHRyKCZyZWZlcmVuY2UpCi17Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzUmVmPFQ+IGFkb3B0UmVmKFQmIHJlZmVyZW5j
ZSkKLXsKLSAgICBhZG9wdGVkKCZyZWZlcmVuY2UpOwotICAgIHJldHVybiBQYXNzUmVmPFQ+KHJl
ZmVyZW5jZSwgUGFzc1JlZjxUPjo6QWRvcHQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZS4uLiBBcmdzPiBpbmxpbmUgUGFzc1JlZjxUPiBjcmVhdGVSZWZDb3VudGVkKEFyZ3Mm
Ji4uLiBhcmdzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFQoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OlBh
c3NSZWY7Ci11c2luZyBXVEY6OmFkb3B0UmVmOwotdXNpbmcgV1RGOjpjcmVhdGVSZWZDb3VudGVk
OwotCi0jZW5kaWYgLy8gV1RGX1Bhc3NSZWZfaAorLy8gRGVsZXRlIG1lLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGFzc1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUGFzc1JlZlB0ci5o
CmluZGV4IDZmODA0YTAuLmRkMzc4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bhc3NS
ZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXNzUmVmUHRyLmgKQEAgLTIyLDEwICsyMiwx
MiBAQAogI2RlZmluZSBXVEZfUGFzc1JlZlB0cl9oCiAKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVz
cGFjZSBXVEYgewogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmUHRyOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gUGFzc1JlZlB0cjxUPiBhZG9wdFJlZihUKik7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBBTFdBWVNfSU5MSU5FIHZvaWQgcmVmSWZOb3ROdWxsKFQqIHB0cikKQEAgLTU2LDcg
KzU4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgflBhc3NSZWZQ
dHIoKSB7IGRlcmVmSWZOb3ROdWxsKG1fcHRyKTsgfQogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IFBhc3NSZWZQdHIoY29uc3QgUmVmUHRyPFU+Jik7Ci0gICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IFBhc3NSZWZQdHIoUGFzc1JlZjxVPiByZWZlcmVuY2UpIDogbV9wdHIoJnJlZmVy
ZW5jZS5sZWFrUmVmKCkpIHsgfQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNzUmVm
UHRyKFJlZjxVPiYmIHJlZmVyZW5jZSkgOiBtX3B0cigmcmVmZXJlbmNlLmxlYWtSZWYoKSkgeyB9
CiAKICAgICAgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWYuaAppbmRleCA2NTQ4
NWIxLi42N2U2NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9SZWYuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMSw0OSArMzEsMTAxIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmOworaW5saW5lIHZvaWQgYWRvcHRlZChj
b25zdCB2b2lkKikgeyB9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZjsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IFJlZjxUPiBhZG9wdFJlZihUJik7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGNsYXNzIFJlZiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVmKQogcHVibGljOgot
ICAgIFJlZihUJiBvYmplY3QpIDogbV9wdHIoJm9iamVjdCkgeyBtX3B0ci0+cmVmKCk7IH0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWYoUGFzc1JlZjxVPiByZWZlcmVuY2UpIDogbV9wdHIo
JnJlZmVyZW5jZS5sZWFrUmVmKCkpIHsgfQorICAgIH5SZWYoKQorICAgIHsKKyAgICAgICAgaWYg
KG1fcHRyKQorICAgICAgICAgICAgbV9wdHItPmRlcmVmKCk7CisgICAgfQorCisgICAgUmVmKFQm
IG9iamVjdCkKKyAgICAgICAgOiBtX3B0cigmb2JqZWN0KQorICAgIHsKKyAgICAgICAgbV9wdHIt
PnJlZigpOworICAgIH0KKworICAgIFJlZihSZWYmJiBvdGhlcikKKyAgICAgICAgOiBtX3B0cigm
b3RoZXIubGVha1JlZigpKQorICAgIHsKKyAgICB9CiAKLSAgICB+UmVmKCkgeyBtX3B0ci0+ZGVy
ZWYoKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgUmVmKFJlZjxVPiYmIG90aGVy
KQorICAgICAgICA6IG1fcHRyKCZvdGhlci5sZWFrUmVmKCkpCisgICAgeworICAgIH0KIAogICAg
IFJlZiYgb3BlcmF0b3I9KFQmIG9iamVjdCkKICAgICB7CisgICAgICAgIEFTU0VSVChtX3B0cik7
CiAgICAgICAgIG9iamVjdC5yZWYoKTsKICAgICAgICAgbV9wdHItPmRlcmVmKCk7CiAgICAgICAg
IG1fcHRyID0gJm9iamVjdDsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBSZWYmIG9wZXJhdG9yPShQYXNzUmVmPFU+IHJlZmVyZW5jZSkKKwor
ICAgIFJlZiYgb3BlcmF0b3I9KFJlZiYmIHJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3B0cik7CisgICAgICAgIG1fcHRyLT5kZXJlZigpOworICAgICAgICBtX3B0ciA9ICZyZWZl
cmVuY2UubGVha1JlZigpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gUmVmJiBvcGVyYXRvcj0oUmVmPFU+JiYgcmVmZXJlbmNlKQogICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsKICAgICAgICAgbV9wdHItPmRlcmVmKCk7CiAgICAg
ICAgIG1fcHRyID0gJnJlZmVyZW5jZS5sZWFrUmVmKCk7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9CiAKLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7
IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gbV9wdHI7IH0KKyAgICBjb25zdCBUKiBv
cGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KKyAgICBU
KiBvcGVyYXRvci0+KCkgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KKworICAgIGNv
bnN0IFQqIHB0cigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9CisgICAg
VCogcHRyKCkgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KKworICAgIGNvbnN0IFQm
IGdldCgpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQorICAgIFQmIGdl
dCgpIHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQogCi0gICAgY29uc3QgVCogcHRy
KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KLSAgICBUKiBwdHIoKSB7IHJldHVybiBtX3B0cjsg
fQorICAgIG9wZXJhdG9yIFQmKCkgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gKm1fcHRyOyB9Cisg
ICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7IEFTU0VSVChtX3B0cik7IHJldHVybiAqbV9w
dHI7IH0KIAotICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICptX3B0cjsgfQotICAg
IFQmIGdldCgpIHsgcmV0dXJuICptX3B0cjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJl
ZjxUPiByZXBsYWNlKFJlZjxVPiYmKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKLSAgICBvcGVyYXRv
ciBUJigpIHsgcmV0dXJuICptX3B0cjsgfQotICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3Qg
eyByZXR1cm4gKm1fcHRyOyB9CisgICAgUmVmIGNvcHlSZWYoKSBXQVJOX1VOVVNFRF9SRVRVUk4K
KyAgICB7CisgICAgICAgIHJldHVybiBSZWYoKm1fcHRyKTsKKyAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBQYXNzUmVmPFQ+IHJlcGxhY2UoUGFzc1JlZjxVPikgV0FSTl9VTlVTRURf
UkVUVVJOOworICAgIFQmIGxlYWtSZWYoKSBXQVJOX1VOVVNFRF9SRVRVUk4KKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3B0cik7CisgICAgICAgIFQqIG1vdmVkUHRyID0gbV9wdHI7CisgICAgICAg
IG1fcHRyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICptb3ZlZFB0cjsKKyAgICB9CiAKIHBy
aXZhdGU6CisgICAgZnJpZW5kIFJlZiBhZG9wdFJlZjxUPihUJik7CisKKyAgICBlbnVtIEFkb3B0
VGFnIHsgQWRvcHQgfTsKKyAgICBSZWYoVCYgb2JqZWN0LCBBZG9wdFRhZykKKyAgICAgICAgOiBt
X3B0cigmb2JqZWN0KQorICAgIHsKKyAgICB9CisKICAgICBUKiBtX3B0cjsKIH07CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmPFQ+IFJl
ZjxUPjo6cmVwbGFjZShQYXNzUmVmPFU+IHJlZmVyZW5jZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZWY8VD4gUmVmPFQ+OjpyZXBsYWNlKFJlZjxV
PiYmIHJlZmVyZW5jZSkKIHsKICAgICBhdXRvIG9sZFJlZmVyZW5jZSA9IGFkb3B0UmVmKCptX3B0
cik7CiAgICAgbV9wdHIgPSAmcmVmZXJlbmNlLmxlYWtSZWYoKTsKQEAgLTg2LDYgKzEzOCwxNCBA
QCBzdHJ1Y3QgR2V0UHRySGVscGVyPFJlZjxUPj4gewogICAgIHN0YXRpYyBUKiBnZXRQdHIoY29u
c3QgUmVmPFQ+JiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQqPihwLnB0cigpKTsgfQogfTsKIAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBSZWY8VD4gYWRvcHRSZWYoVCYgcmVmZXJlbmNl
KQoreworICAgIGFkb3B0ZWQoJnJlZmVyZW5jZSk7CisgICAgcmV0dXJuIFJlZjxUPihyZWZlcmVu
Y2UsIFJlZjxUPjo6QWRvcHQpOworCit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBX
VEY6OlJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuaCBiL1NvdXJj
ZS9XVEYvd3RmL1JlZkNvdW50ZXIuaAppbmRleCBmYmZkZmZlLi5hMTA2OTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmQ291
bnRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
UmVmQ291bnRlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gPSBbXSgpIHsgfSk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIH5SZWZDb3VudGVyKCk7CiAKLSAgICBQYXNzUmVmPENvdW50PiBjb3VudCgp
IGNvbnN0CisgICAgUmVmPENvdW50PiBjb3VudCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gKm1fY291bnQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCA1ZGU1YzczLi43NmQ2MWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gU2VlIGNvbW1l
bnRzIGluIFBhc3NSZWZQdHIuaCBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgdGFrZXMg
YSBjb25zdCByZWZlcmVuY2UuCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0cihj
b25zdCBQYXNzUmVmUHRyPFU+Jik7CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVm
UHRyKFBhc3NSZWY8VT4mJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0cihS
ZWY8VT4mJik7CiAKICAgICAgICAgLy8gSGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hpY2gg
YXJlIG9ubHkgY29uc3RydWN0ZWQgYW5kIG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCiAgICAg
ICAgIFJlZlB0cihIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fcHRyKGhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpKSB7IH0KQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
ICAgIAogICAgICAgICB2b2lkIGNsZWFyKCk7CiAgICAgICAgIFBhc3NSZWZQdHI8VD4gcmVsZWFz
ZSgpIHsgUGFzc1JlZlB0cjxUPiB0bXAgPSBhZG9wdFJlZihtX3B0cik7IG1fcHRyID0gbnVsbHB0
cjsgcmV0dXJuIHRtcDsgfQotICAgICAgICBQYXNzUmVmPFQ+IHJlbGVhc2VOb25OdWxsKCkgeyBB
U1NFUlQobV9wdHIpOyBQYXNzUmVmPFQ+IHRtcCA9IGFkb3B0UmVmKCptX3B0cik7IG1fcHRyID0g
bnVsbHB0cjsgcmV0dXJuIHRtcDsgfQorICAgICAgICBSZWY8VD4gcmVsZWFzZU5vbk51bGwoKSB7
IEFTU0VSVChtX3B0cik7IFJlZjxUPiB0bXAoYWRvcHRSZWYoKm1fcHRyKSk7IG1fcHRyID0gbnVs
bHB0cjsgcmV0dXJuIHRtcDsgfQogCiAgICAgICAgIFQqIGxlYWtSZWYoKSBXQVJOX1VOVVNFRF9S
RVRVUk47CiAKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8VT4mKTsK
ICAgICAgICAgUmVmUHRyJiBvcGVyYXRvcj0oUmVmUHRyJiYpOwogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShSZWZQdHI8VT4mJik7Ci0gICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KFBhc3NSZWY8VT4pOworICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShSZWY8VT4mJik7CiAKICAgICAg
ICAgdm9pZCBzd2FwKFJlZlB0ciYpOwogCkBAIC05Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgIHsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+OjpSZWZQdHIoUGFzc1JlZjxVPiYmIHJlZmVyZW5jZSkK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVm
UHRyPFQ+OjpSZWZQdHIoUmVmPFU+JiYgcmVmZXJlbmNlKQogICAgICAgICA6IG1fcHRyKCZyZWZl
cmVuY2UubGVha1JlZigpKQogICAgIHsKICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8
VD46Om9wZXJhdG9yPShQYXNzUmVmPFU+IHJlZmVyZW5jZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9w
ZXJhdG9yPShSZWY8VT4mJiByZWZlcmVuY2UpCiAgICAgewogICAgICAgICBSZWZQdHIgcHRyID0g
V1RGOjptb3ZlKHJlZmVyZW5jZSk7CiAgICAgICAgIHN3YXAocHRyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmNwcAppbmRleCA2YjI3NjBkLi4wNjI5MGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBzdHJpbmdUYWJsZSgpCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yPgotc3RhdGljIGlubGluZSBQYXNzUmVmPFN0
cmluZ0ltcGw+IGFkZFRvU3RyaW5nVGFibGUoY29uc3QgVCYgdmFsdWUpCitzdGF0aWMgaW5saW5l
IFJlZjxTdHJpbmdJbXBsPiBhZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQogewogICAg
IEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKIApAQCAtODEsNyArODEsOSBAQCBzdGF0
aWMgaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkVG9TdHJpbmdUYWJsZShjb25zdCBUJiB2
YWx1ZSkKIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3
ZSBuZWVkIHRvIGFkb3B0IGl0LgogICAgIC8vIFRoZSBib29sZWFuIGluIHRoZSBwYWlyIHRlbGxz
IHVzIGlmIHRoYXQgaXMgc28uCi0gICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5ID8gYWRv
cHRSZWYoKiphZGRSZXN1bHQuaXRlcmF0b3IpIDogKiphZGRSZXN1bHQuaXRlcmF0b3I7CisgICAg
aWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKiphZGRS
ZXN1bHQuaXRlcmF0b3IpOworICAgIHJldHVybiAqKmFkZFJlc3VsdC5pdGVyYXRvcjsKIH0KIAog
c3RydWN0IENTdHJpbmdUcmFuc2xhdG9yIHsKQEAgLTI0Nyw3ICsyNDksNyBAQCBSZWZQdHI8U3Ry
aW5nSW1wbD4gQXRvbWljU3RyaW5nOjphZGQoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0
aCkKICAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxVQ2hhckJ1ZmZlciwgVUNoYXJCdWZmZXJU
cmFuc2xhdG9yPihidWZmZXIpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IEF0b21pY1N0cmlu
Zzo6YWRkKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5n
SGFzaCkKK1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZChjb25zdCBVQ2hhciogcywg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpCiB7CiAgICAgQVNTRVJUKHMp
OwogICAgIEFTU0VSVChleGlzdGluZ0hhc2gpOwpAQCAtMzg3LDcgKzM4OSw3IEBAIFJlZlB0cjxT
dHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZChjb25zdCBMQ2hhciogcywgdW5zaWduZWQgbGVu
Z3RoKQogICAgIHJldHVybiBhZGRUb1N0cmluZ1RhYmxlPExDaGFyQnVmZmVyLCBMQ2hhckJ1ZmZl
clRyYW5zbGF0b3I+KGJ1ZmZlcik7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gQXRvbWljU3Ry
aW5nOjphZGRGcm9tTGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IEF0b21pY1N0cmluZzo6YWRkRnJvbUxpdGVyYWxEYXRh
KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBBU1NFUlQo
Y2hhcmFjdGVycyk7CiAgICAgQVNTRVJUKGxlbmd0aCk7CkBAIC0zOTYsNyArMzk4LDcgQEAgUGFz
c1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZEZyb21MaXRlcmFsRGF0YShjb25zdCBj
aGFyKiBjaGFyYWN0ZXJzLCB1bnMKICAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxDaGFyQnVm
ZmVyLCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvcj4oYnVmZmVyKTsKIH0KIAot
UGFzc1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKFN0cmluZ0ltcGwm
IHN0cmluZykKK1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKFN0cmlu
Z0ltcGwmIHN0cmluZykKIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0
dXJuICpTdHJpbmdJbXBsOjplbXB0eSgpOwpAQCAtNDE0LDcgKzQxNiw3IEBAIFBhc3NSZWY8U3Ry
aW5nSW1wbD4gQXRvbWljU3RyaW5nOjphZGRTbG93Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiAg
ICAgcmV0dXJuICoqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+
IEF0b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmIHN0cmluZ1RhYmxl
LCBTdHJpbmdJbXBsJiBzdHJpbmcpCitSZWY8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nOjphZGRT
bG93Q2FzZShBdG9taWNTdHJpbmdUYWJsZSYgc3RyaW5nVGFibGUsIFN0cmluZ0ltcGwmIHN0cmlu
ZykKIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuICpTdHJpbmdJ
bXBsOjplbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXggMjE5ZjhiODll
Li5hNzkwNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTE3OCw3ICsxNzgs
NyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWZQdHI8U3Ry
aW5nSW1wbD4gYWRkKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxTdHJp
bmdJbXBsPiBhZGQoY29uc3QgY2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZGQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9OwotICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNo
YXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CisgICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOwogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciopOwog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChT
dHJpbmdJbXBsKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCogc3RyaW5n
KQpAQCAtMTg5LDcgKzE4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
YWRkU2xvd0Nhc2UoKnN0cmluZyk7CiAgICAgfQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERhdGEoY29uc3QgY2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRGcm9tTGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICNpZiBVU0UoQ0YpCiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKENGU3RyaW5nUmVmKTsKICNl
bmRpZgpAQCAtMjE0LDggKzIxNCw4IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7
CiAgICAgCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0lt
cGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwmKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUm
LCBTdHJpbmdJbXBsJik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOworICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1RhYmxl
JiwgU3RyaW5nSW1wbCYpOwogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9t
aWNTdHJpbmdJbXBsKiBmaW5kU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOwogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hh
ciosIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDFmODQy
OTIuLmQwNGM0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTM0LDE5ICsx
MzQsMTkgQEAgdm9pZCBTdHJpbmdJbXBsOjpkZXN0cm95KFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwp
CiAgICAgZmFzdEZyZWUoc3RyaW5nSW1wbCk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFs
KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKGxlbmd0aCwgIlVzZSBTdHJpbmdJbXBsOjplbXB0eSgpIHRvIGNyZWF0ZSBh
biBlbXB0eSBzdHJpbmciKTsKICAgICBBU1NFUlQoY2hhcmFjdGVyc0FyZUFsbEFTQ0lJPExDaGFy
PihyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCkpOwog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nKSk7
CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwo
Y29uc3QgY2hhciogY2hhcmFjdGVycykKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVh
dGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQogewogICAgIHJldHVybiBjcmVh
dGVGcm9tTGl0ZXJhbChjaGFyYWN0ZXJzLCBzdHJsZW4oY2hhcmFjdGVycykpOwogfQogCi1QYXNz
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuICplbXB0eSgp
OwpAQCAtMTU0LDcgKzE1NCw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3Jl
YXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIENvbnN0cnVjdFdp
dGhvdXRDb3B5aW5nKSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3Jl
YXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3Ro
KQogICAgICAgICByZXR1cm4gKmVtcHR5KCk7CkBAIC0xNjMsNyArMTYzLDcgQEAgUGFzc1JlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW4KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5l
IFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVy
bmFsKHVuc2lnbmVkIGxlbmd0aCwgQ2hhclR5cGUqJiBkYXRhKQoraW5saW5lIFJlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQgbGVu
Z3RoLCBDaGFyVHlwZSomIGRhdGEpCiB7CiAgICAgaWYgKCFsZW5ndGgpIHsKICAgICAgICAgZGF0
YSA9IDA7CkBAIC0xNzMsNyArMTczLDcgQEAgaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsKHVuc2lnbmVkIGxlbmcKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkodW5zaWduZWQg
bGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCitpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkIGxlbmd0aCwg
Q2hhclR5cGUqJiBkYXRhKQogewogICAgIEFTU0VSVChsZW5ndGgpOwogCkBAIC0xODgsMTggKzE4
OCwxOCBAQCBpbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eSh1bnNpZwogICAgIHJldHVybiBjb25zdHJ1Y3RJbnRl
cm5hbDxDaGFyVHlwZT4oc3RyaW5nLCBsZW5ndGgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciom
IGRhdGEpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlVW5pbml0
aWFsaXplZEludGVybmFsKGxlbmd0aCwgZGF0YSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYg
ZGF0YSkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGVVbmluaXRp
YWxpemVkSW50ZXJuYWwobGVuZ3RoLCBkYXRhKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPgotaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0
ZUludGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVk
IGxlbmd0aCwgQ2hhclR5cGUqJiBkYXRhKQoraW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpyZWFsbG9jYXRlSW50ZXJuYWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5hbFN0
cmluZywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCiB7ICAgCiAgICAgQVNTRVJU
KG9yaWdpbmFsU3RyaW5nLT5oYXNPbmVSZWYoKSk7CiAgICAgQVNTRVJUKG9yaWdpbmFsU3RyaW5n
LT5idWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJJbnRlcm5hbCk7CkBAIC0yMjAsMjAgKzIyMCwy
MCBAQCBpbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlSW50
ZXJuYWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPgogICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5h
bDxDaGFyVHlwZT4oc3RyaW5nLCBsZW5ndGgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OnJlYWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5hbFN0cmlu
ZywgdW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6cmVhbGxvY2F0ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1
bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKIHsKICAgICBBU1NFUlQob3JpZ2luYWxTdHJp
bmctPmlzOEJpdCgpKTsKICAgICByZXR1cm4gcmVhbGxvY2F0ZUludGVybmFsKG9yaWdpbmFsU3Ry
aW5nLCBsZW5ndGgsIGRhdGEpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnJlYWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5hbFN0cmluZywgdW5zaWdu
ZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVh
bGxvY2F0ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBs
ZW5ndGgsIFVDaGFyKiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIW9yaWdpbmFsU3RyaW5nLT5pczhC
aXQoKSk7CiAgICAgcmV0dXJuIHJlYWxsb2NhdGVJbnRlcm5hbChvcmlnaW5hbFN0cmluZywgbGVu
Z3RoLCBkYXRhKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIFBh
c3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5
cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6Y3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWNoYXJhY3RlcnMgfHwgIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuICplbXB0eSgpOwpAQCAtMjQ0LDE3ICsyNDQsMTcgQEAgaW5saW5lIFBhc3NSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqIGNo
YXJhY3RlcnMKICAgICByZXR1cm4gc3RyaW5nOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNy
ZWF0ZShjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQogewogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChjaGFyYWN0ZXJzLCBsZW5n
dGgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBv
c3NpYmxlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWNoYXJhY3RlcnMgfHwgIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuICplbXB0eSgpOwpAQCAtMjcxLDEyICsyNzEsMTIgQEAgUGFz
c1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgdW4KICAgICByZXR1cm4gc3RyaW5nLnJlbGVhc2VOb25OdWxsKCk7
CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2li
bGUoY29uc3QgVUNoYXIqIHN0cmluZykKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVh
dGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciogc3RyaW5nKQogewogICAgIHJldHVybiBTdHJp
bmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShzdHJpbmcsIGxlbmd0aE9mTnVsbFRlcm1pbmF0
ZWRTdHJpbmcoc3RyaW5nKSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
Y3JlYXRlKGNvbnN0IExDaGFyKiBzdHJpbmcpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
Y3JlYXRlKGNvbnN0IExDaGFyKiBzdHJpbmcpCiB7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAg
IHJldHVybiAqZW1wdHkoKTsKQEAgLTMwOSw3ICszMDksNyBAQCBib29sIFN0cmluZ0ltcGw6OmNv
bnRhaW5zT25seVdoaXRlc3BhY2UoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN1YnN0cmluZyh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQg
bGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN1YnN0cmluZyh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmIChzdGFydCA+PSBtX2xlbmd0aCkKICAg
ICAgICAgcmV0dXJuICplbXB0eSgpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIFVDaGFyMzIgU3RyaW5n
SW1wbDo6Y2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCBpKQogICAgIHJldHVybiAwOwogfQog
Ci1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omxvd2VyKCkKK1JlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpsb3dlcigpCiB7CiAgICAgLy8gTm90ZTogVGhpcyBpcyBhIGhvdCBmdW5j
dGlvbiBpbiB0aGUgRHJvbWFlbyBiZW5jaG1hcmssIHNwZWNpZmljYWxseSB0aGUKICAgICAvLyBu
by1vcCBjb2RlIHBhdGggdXAgdGhyb3VnaCB0aGUgZmlyc3QgJ3JldHVybicgc3RhdGVtZW50LgpA
QCAtNDE3LDcgKzQxNyw3IEBAIFNsb3dQYXRoOgogICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2VO
b25OdWxsKCk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoKQor
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnVwcGVyKCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0
aW9uIGNvdWxkIGJlIG9wdGltaXplZCBmb3Igbm8tb3AgY2FzZXMgdGhlIHdheSBsb3dlcigpIGlz
LAogICAgIC8vIGJ1dCBpbiBlbXBpcmljYWwgdGVzdGluZywgZmV3IGFjdHVhbCBjYWxscyB0byB1
cHBlcigpIGFyZSBuby1vcHMsIHNvCkBAIC01MjksNyArNTI5LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIG5lZWRzVHVya2lzaENhc2luZ1J1bGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRl
bnRpZmllcikKICAgICAgICAgJiYgKGxvY2FsZUlkZW50aWZpZXIubGVuZ3RoKCkgPT0gMiB8fCBs
b2NhbGVJZGVudGlmaWVyWzJdID09ICctJyk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6bG93ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQorUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omxvd2VyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
SWRlbnRpZmllcikKIHsKICAgICAvLyBVc2UgdGhlIG1vcmUtb3B0aW1pemVkIGNvZGUgcGF0aCBt
b3N0IG9mIHRoZSB0aW1lLgogICAgIC8vIEFzc3VtaW5nIGhlcmUgdGhhdCB0aGUgb25seSBsb2Nh
bGUtc3BlY2lmaWMgbG93ZXJjYXNpbmcgaXMgdGhlIFR1cmtpc2ggY2FzaW5nIHJ1bGVzLgpAQCAt
NTY1LDcgKzU2NSw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6bG93ZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQogICAgIHJldHVybiBuZXdTdHJpbmcu
cmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1
cHBlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCitSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6dXBwZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVy
KQogewogICAgIC8vIFVzZSB0aGUgbW9yZS1vcHRpbWl6ZWQgY29kZSBwYXRoIG1vc3Qgb2YgdGhl
IHRpbWUuCiAgICAgLy8gQXNzdW1pbmcgaGVyZSB0aGF0IHRoZSBvbmx5IGxvY2FsZS1zcGVjaWZp
YyBsb3dlcmNhc2luZyBpcyB0aGUgVHVya2lzaCBjYXNpbmcgcnVsZXMsCkBAIC01OTYsNyArNTk2
LDcgQEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBlcihjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiAgICAgcmV0dXJuIG5ld1N0cmluZy5yZWxlYXNlTm9u
TnVsbCgpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZpbGwoVUNoYXIg
Y2hhcmFjdGVyKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZpbGwoVUNoYXIgY2hhcmFj
dGVyKQogewogICAgIGlmICghKGNoYXJhY3RlciAmIH4weDdGKSkgewogICAgICAgICBMQ2hhciog
ZGF0YTsKQEAgLTYxMiw3ICs2MTIsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmZpbGwoVUNoYXIgY2hhcmFjdGVyKQogICAgIHJldHVybiBuZXdJbXBsOwogfQogCi1QYXNzUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZvbGRDYXNlKCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpmb2xkQ2FzZSgpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IHRoaXMgZnVu
Y3Rpb24gaGF2ZSBhIHByZWZsaWdodCBsaWtlIHRoZSBvbmUgaW4gU3RyaW5nSW1wbDo6bG93ZXI/
CiAKQEAgLTY3MCw3ICs2NzAsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZv
bGRDYXNlKCkKICAgICByZXR1cm4gbmV3SW1wbC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1QYXNz
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkKK1Jl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpCiB7CiAg
ICAgaWYgKGlzOEJpdCgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGZhaWxpbmdJbmRleDsKQEAgLTY4
NSw3ICs2ODUsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCkKIAogU2xvd1BhdGg6CiAgICAgICAgIExDaGFyKiBkYXRhODsKLSAgICAg
ICAgUGFzc1JlZjxTdHJpbmdJbXBsPiBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVy
bmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGE4KTsKKyAgICAgICAgUmVmPFN0cmluZ0ltcGw+IG5l
d0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0
YTgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmFpbGluZ0luZGV4OyArK2kp
CiAgICAgICAgICAgICBkYXRhOFtpXSA9IG1fZGF0YThbaV07CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGZhaWxpbmdJbmRleDsgaSA8IG1fbGVuZ3RoOyArK2kpCkBAIC03MDIsMTQgKzcwMiwx
NCBAQCBTbG93UGF0aDoKICAgICAgICAgcmV0dXJuICp0aGlzOwogCiAgICAgVUNoYXIqIGRhdGEx
NjsKLSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVk
SW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwgZGF0YTE2KTsKKyAgICBSZWY8U3RyaW5nSW1wbD4g
bmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBk
YXRhMTYpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKQogICAg
ICAgICBkYXRhMTZbaV0gPSB0b0FTQ0lJTG93ZXIobV9kYXRhMTZbaV0pOwogICAgIHJldHVybiBu
ZXdJbXBsOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+Ci1pbmxpbmUgUGFz
c1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFy
UHJlZGljYXRlIHByZWRpY2F0ZSkKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
c3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZSBwcmVkaWNhdGUpCiB7CiAgICAg
aWYgKCFtX2xlbmd0aCkKICAgICAgICAgcmV0dXJuICp0aGlzOwpAQCAtNzU3LDE4ICs3NTcsMTgg
QEAgcHVibGljOgogICAgIH0KIH07CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
c3RyaXBXaGl0ZVNwYWNlKCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcFdoaXRl
U3BhY2UoKQogewogICAgIHJldHVybiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFNwYWNlT3JOZXds
aW5lUHJlZGljYXRlKCkpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN0
cmlwV2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0ciBpc1doaXRlU3BhY2UpCitSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0
aW9uUHRyIGlzV2hpdGVTcGFjZSkKIHsKICAgICByZXR1cm4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVy
cyhVQ2hhclByZWRpY2F0ZShpc1doaXRlU3BhY2UpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJUeXBlPgotQUxXQVlTX0lOTElORSBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnJlbW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1h
dGNoRnVuY3Rpb25QdHIgZmluZE1hdGNoKQorQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywg
Q2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBmaW5kTWF0Y2gpCiB7CiAgICAgY29uc3QgQ2hhclR5
cGUqIGZyb20gPSBjaGFyYWN0ZXJzOwogICAgIGNvbnN0IENoYXJUeXBlKiBmcm9tZW5kID0gZnJv
bSArIG1fbGVuZ3RoOwpAQCAtODAwLDcgKzgwMCw3IEBAIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBj
CiAgICAgcmV0dXJuIGFkb3B0KGRhdGEpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBmaW5kTWF0
Y2gpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0
ZXJNYXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaCkKIHsKICAgICBpZiAoaXM4Qml0KCkpCiAgICAg
ICAgIHJldHVybiByZW1vdmVDaGFyYWN0ZXJzKGNoYXJhY3RlcnM4KCksIGZpbmRNYXRjaCk7CkBA
IC04MDgsNyArODA4LDcgQEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVD
aGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmluZE0KIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlLCBjbGFzcyBVQ2hhclByZWRpY2F0ZT4KLWlubGluZSBQYXNzUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNl
KFVDaGFyUHJlZGljYXRlIHByZWRpY2F0ZSkKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUgcHJl
ZGljYXRlKQogewogICAgIFN0cmluZ0J1ZmZlcjxDaGFyVHlwZT4gZGF0YShtX2xlbmd0aCk7CiAK
QEAgLTg0NCwxNCArODQ0LDE0IEBAIGlubGluZSBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFyUHJlCiAgICAgcmV0dXJu
IGFkb3B0KGRhdGEpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBs
aWZ5V2hpdGVTcGFjZSgpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlXaGl0
ZVNwYWNlKCkKIHsKICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmdJbXBs
OjpzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZTxMQ2hhcj4oU3BhY2VPck5ld2xpbmVQ
cmVkaWNhdGUoKSk7CiAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJh
Y3RlcnNUb1NwYWNlPFVDaGFyPihTcGFjZU9yTmV3bGluZVByZWRpY2F0ZSgpKTsKIH0KIAotUGFz
c1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNw
YWNlRnVuY3Rpb25QdHIgaXNXaGl0ZVNwYWNlKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnNpbXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0ciBpc1doaXRlU3BhY2Up
CiB7CiAgICAgaWYgKGlzOEJpdCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6c2ltcGxp
ZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2U8TENoYXI+KFVDaGFyUHJlZGljYXRlKGlzV2hpdGVT
cGFjZSkpOwpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAgYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChT
dHJpbmdJbXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQgZW5kT2Zmc2V0LCBib29sIGNhc2UKICAg
ICByZXR1cm4gZXF1YWxJbm5lcihjb25zdF9jYXN0PFN0cmluZ0ltcGwmPigqdGhpcyksIGVuZE9m
ZnNldCAtIG1hdGNoU3RyaW5nLmxlbmd0aCgpLCBtYXRjaFN0cmluZywgY2FzZVNlbnNpdGl2ZSk7
CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBvbGRD
LCBVQ2hhciBuZXdDKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIg
b2xkQywgVUNoYXIgbmV3QykKIHsKICAgICBpZiAob2xkQyA9PSBuZXdDKQogICAgICAgICByZXR1
cm4gKnRoaXM7CkBAIC0xNTEwLDcgKzE1MTAsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnJlcGxhY2UoVUNoYXIgb2xkQywgVUNoYXIgbmV3QykKICAgICByZXR1cm4gbmV3SW1w
bDsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVk
IHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1JlcGxhY2UsIFN0cmluZ0ltcGwqIHN0cikKK1Jl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNp
Z25lZCBsZW5ndGhUb1JlcGxhY2UsIFN0cmluZ0ltcGwqIHN0cikKIHsKICAgICBwb3NpdGlvbiA9
IHN0ZDo6bWluKHBvc2l0aW9uLCBsZW5ndGgoKSk7CiAgICAgbGVuZ3RoVG9SZXBsYWNlID0gc3Rk
OjptaW4obGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uKTsKQEAgLTE1NTUsNyAr
MTU1NSw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZSh1bnNpZ25l
ZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsCiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9
CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJu
LCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpy
ZXBsYWNlKFVDaGFyIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQogewogICAgIGlm
ICghcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsKQEAgLTE1NjYsNyArMTU2Niw3
IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJu
LCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudCkKICAgICByZXR1cm4gcmVwbGFjZShwYXR0ZXJuLCBy
ZXBsYWNlbWVudC0+bV9kYXRhMTYsIHJlcGxhY2VtZW50LT5sZW5ndGgoKSk7CiB9CiAKLVBhc3NS
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBM
Q2hhciogcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHJlcFN0ckxlbmd0aCkKK1JlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIGNvbnN0IExDaGFyKiByZXBsYWNl
bWVudCwgdW5zaWduZWQgcmVwU3RyTGVuZ3RoKQogewogICAgIEFTU0VSVChyZXBsYWNlbWVudCk7
CiAKQEAgLTE2NDMsNyArMTY0Myw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBMQ2hhciogcmVwbGFjZW1lbnQsCiAgICAgcmV0
dXJuIG5ld0ltcGw7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFj
ZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBVQ2hhciogcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHJlcFN0
ckxlbmd0aCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRl
cm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwU3RyTGVuZ3RoKQogewog
ICAgIEFTU0VSVChyZXBsYWNlbWVudCk7CiAKQEAgLTE3MjMsNyArMTcyMyw3IEBAIFBhc3NSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBVQ2hh
ciogcmVwbGFjZW1lbnQsCiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CiAKLVBhc3NSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShTdHJpbmdJbXBsKiBwYXR0ZXJuLCBTdHJpbmdJbXBs
KiByZXBsYWNlbWVudCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmlu
Z0ltcGwqIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQogewogICAgIGlmICghcGF0
dGVybiB8fCAhcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsKQEAgLTIwNDQsNyAr
MjA0NCw3IEBAIFVDaGFyRGlyZWN0aW9uIFN0cmluZ0ltcGw6OmRlZmF1bHRXcml0aW5nRGlyZWN0
aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5CiAgICAgcmV0dXJuIFVfTEVGVF9UT19S
SUdIVDsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjphZG9wdChTdHJpbmdC
dWZmZXI8TENoYXI+JiBidWZmZXIpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQo
U3RyaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1
ZmZlci5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkKQEAgLTIwNTIsNyArMjA1Miw3IEBAIFBh
c3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQoU3RyaW5nQnVmZmVyPExDaGFyPiYg
YnVmZmVyKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoYnVmZmVyLnJlbGVh
c2UoKSwgbGVuZ3RoKSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRv
cHQoU3RyaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmFkb3B0KFN0cmluZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBidWZmZXIubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCmluZGV4IDdlMWRlMGUuLmYyNmVkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCkBAIC0yOTIsMjEgKzI5MiwyMSBAQCBwcml2YXRlOgogcHVibGljOgogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgdm9pZCBkZXN0cm95KFN0cmluZ0ltcGwqKTsKIAotICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJ
bXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRl
KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAg
ICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+Ci0gICAgc3RhdGljIFBhc3NSZWY8U3Ry
aW5nSW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVD
YXBhY2l0eT4mIHZlY3RvcikKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJ
ZlBvc3NpYmxlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCiAg
ICAgewogICAgICAgICByZXR1cm4gY3JlYXRlOEJpdElmUG9zc2libGUodmVjdG9yLmRhdGEoKSwg
dmVjdG9yLnNpemUoKSk7CiAgICAgfQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
UGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciopOwor
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThC
aXRJZlBvc3NpYmxlKGNvbnN0IFVDaGFyKik7CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQ
YXNzUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgp
IHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0
aCk7IH0KLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlKGNvbnN0IExDaGFyKik7Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcykgeyByZXR1cm4gY3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkg
eyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3Ro
KTsgfQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZShjb25zdCBMQ2hhciopOworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJ
bXBsPiBjcmVhdGUoY29uc3QgY2hhciogcykgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihzKSk7IH0KIAotICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGw4KFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0lt
cGw4KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZXApOwogICAgICAgICBBU1NFUlQobGVu
Z3RoIDw9IHJlcC0+bGVuZ3RoKCkpOwpAQCAtMzIyLDcgKzMyMiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZ0ltcGwpIFN0cmluZ0ltcGwo
cmVwLT5tX2RhdGE4ICsgb2Zmc2V0LCBsZW5ndGgsIG93bmVyUmVwKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdWJzdHJpbmdT
aGFyaW5nSW1wbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcCwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChy
ZXApOwogICAgICAgICBBU1NFUlQobGVuZ3RoIDw9IHJlcC0+bGVuZ3RoKCkpOwpAQCAtMzQwLDcg
KzM0MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0
ZXJzQ291bnQ+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBj
cmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50
XSkKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxp
dGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCiAgICAgewog
ICAgICAgICBDT01QSUxFX0FTU0VSVChjaGFyYWN0ZXJzQ291bnQgPiAxLCBTdHJpbmdJbXBsRnJv
bUxpdGVyYWxOb3RFbXB0eSk7CiAgICAgICAgIENPTVBJTEVfQVNTRVJUKChjaGFyYWN0ZXJzQ291
bnQgLSAxIDw9ICgodW5zaWduZWQofjApIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAvIHNpemVvZihM
Q2hhcikpKSwgU3RyaW5nSW1wbEZyb21MaXRlcmFsQ2Fubm90T3ZlcmZsb3cpOwpAQCAtMzQ5LDE0
ICszNDksMTQgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUcmFuc2l0aW9uIG9m
ZiBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gY3JlYXRlV2l0aG91dENvcHlpbmcgaW5zdGVhZC4KLSAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gY3JlYXRl
RnJvbUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gY3JlYXRl
RnJvbUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CisgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKiBj
aGFyYWN0ZXJzKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxT
dHJpbmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFBhc3NSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgs
IExDaGFyKiYgZGF0YSk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciom
IGRhdGEpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpOworICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOwogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBUKiYgb3V0cHV0KQogICAgIHsK
ICAgICAgICAgaWYgKCFsZW5ndGgpIHsKQEAgLTM3OCw3ICszNzgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxUPihyZXN1bHRJbXBsLCBsZW5ndGgpOwogICAg
IH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUVtcHR5VW5pcXVlKCkK
KyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUVtcHR5VW5pcXVlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwoQ3JlYXRlRW1wdHlVbmlxdWUp
KTsKICAgICB9CkBAIC0zODYsOCArMzg2LDggQEAgcHVibGljOgogICAgIC8vIFJlYWxsb2NhdGUg
dGhlIFN0cmluZ0ltcGwuIFRoZSBvcmlnaW5hbFN0cmluZyBtdXN0IGJlIG9ubHkgb3duZWQgYnkg
dGhlIFBhc3NSZWZQdHIsCiAgICAgLy8gYW5kIHRoZSBidWZmZXIgb3duZXJzaGlwIG11c3QgYmUg
QnVmZmVySW50ZXJuYWwuIEp1c3QgbGlrZSB0aGUgaW5wdXQgcG9pbnRlciBvZiByZWFsbG9jKCks
CiAgICAgLy8gdGhlIG9yaWdpbmFsU3RyaW5nIGNhbid0IGJlIHVzZWQgYWZ0ZXIgdGhpcyBmdW5j
dGlvbi4KLSAgICBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiByZWFsbG9jYXRlKFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBk
YXRhKTsKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiByZWFsbG9jYXRlKFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBk
YXRhKTsKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGUoUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEp
OworICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZShQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CiAK
ICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGZs
YWdJczhCaXQoKSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQpAQCAtMzk1LDcgKzM5
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgZGF0YU9mZnNldCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2RhdGE4KTsgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZs
b3dIYW5kbGVyPgotICAgIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFZlY3RvcjxD
aGFyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIHZlY3RvcikKKyAgICBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFZlY3RvcjxDaGFyVHlwZSwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlcj4mIHZlY3RvcikKICAgICB7CiAgICAgICAgIGlmIChzaXplX3Qg
c2l6ZSA9IHZlY3Rvci5zaXplKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3IuZGF0YSgp
KTsKQEAgLTQwNiw4ICs0MDYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqZW1wdHkoKTsK
ICAgICB9CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5n
SW1wbD4gYWRvcHQoU3RyaW5nQnVmZmVyPFVDaGFyPiYpOwotICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+
Jik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRv
cHQoU3RyaW5nQnVmZmVyPFVDaGFyPiYpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0
aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxMQ2hhcj4mKTsKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgc3RhdGljIHB0
cmRpZmZfdCBsZW5ndGhNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3Ry
aW5nSW1wbCwgbV9sZW5ndGgpOyB9CkBAIC01OTksOSArNTk5LDkgQEAgcHVibGljOgogICAgIC8v
IFNvbWUgc3RyaW5nIGZlYXR1cmVzLCBsaWtlIHJlZmNvdW50aW5nIGFuZCB0aGUgYXRvbWljaXR5
IGZsYWcsIGFyZSBub3QKICAgICAvLyB0aHJlYWQtc2FmZS4gV2UgYWNoaWV2ZSB0aHJlYWQgc2Fm
ZXR5IGJ5IGlzb2xhdGlvbiwgZ2l2aW5nIGVhY2ggdGhyZWFkCiAgICAgLy8gaXRzIG93biBjb3B5
IG9mIHRoZSBzdHJpbmcuCi0gICAgUGFzc1JlZjxTdHJpbmdJbXBsPiBpc29sYXRlZENvcHkoKSBj
b25zdDsKKyAgICBSZWY8U3RyaW5nSW1wbD4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWdu
ZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIFJlZjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4g
PSBVSU5UX01BWCk7CiAKICAgICBVQ2hhciBhdCh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAg
LTYzMywyNSArNjMzLDI1IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sg
PSAwKTsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCk7CiAKLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgp
OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmPFN0cmluZ0ltcGw+IGxvd2VyKCk7
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWY8U3RyaW5nSW1wbD4gdXBwZXIoKTsK
LSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiBsb3dlcihjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOwotICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBQYXNzUmVmPFN0cmluZ0ltcGw+IHVwcGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
SWRlbnRpZmllcik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBj
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8
U3RyaW5nSW1wbD4gbG93ZXIoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmlu
Z0ltcGw+IHVwcGVyKCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBs
PiBsb3dlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOworICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gdXBwZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGVJZGVudGlmaWVyKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVm
PFN0cmluZ0ltcGw+IGZpbGwoVUNoYXIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8
U3RyaW5nSW1wbD4gZmlsbChVQ2hhcik7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgZmlsbChj
aGFyKSBvciBjYW4gd2UganVzdCBkbyB0aGUgcmlnaHQgdGhpbmcgaWYgVUNoYXIgaXMgQVNDSUk/
CiAKLSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IGZvbGRDYXNlKCk7CisgICAgUmVmPFN0cmluZ0lt
cGw+IGZvbGRDYXNlKCk7CiAKLSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFj
ZSgpOwotICAgIFBhc3NSZWY8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVTcGFj
ZUZ1bmN0aW9uUHRyKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJ
bXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKLSAgICBQYXNzUmVmPFN0cmluZ0ltcGw+IHNpbXBs
aWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cik7CisgICAgUmVmPFN0cmluZ0lt
cGw+IHN0cmlwV2hpdGVTcGFjZSgpOworICAgIFJlZjxTdHJpbmdJbXBsPiBzdHJpcFdoaXRlU3Bh
Y2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBS
ZWY8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgUmVmPFN0cmluZ0ltcGw+
IHNpbXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cik7CiAKLSAgICBQYXNz
UmVmPFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0
cik7CisgICAgUmVmPFN0cmluZ0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hG
dW5jdGlvblB0cik7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIEFMV0FZ
U19JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJU
eXBlKiBjaGFyYWN0ZXJzLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKKyAgICBBTFdBWVNf
SU5MSU5FIFJlZjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBj
aGFyYWN0ZXJzLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKIAogICAgIHNpemVfdCBmaW5k
KExDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAgICBzaXplX3QgZmluZChj
aGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKQEAgLTY4NiwxMyArNjg2LDEzIEBA
IHB1YmxpYzoKICAgICBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVu
Z3RoXSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgY29uc3QgeyByZXR1cm4gZW5kc1dpdGgo
cHJlZml4LCBtYXRjaExlbmd0aCAtIDEsIGNhc2VTZW5zaXRpdmUpOyB9CiAgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCYsIHVuc2lnbmVkIGVuZE9mZnNl
dCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBQYXNzUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKLSAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBTdHJpbmdJ
bXBsKik7Ci0gICAgQUxXQVlTX0lOTElORSBQYXNzUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNo
YXIgcGF0dGVybiwgY29uc3QgY2hhciogcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHJlcGxhY2VtZW50
TGVuZ3RoKSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihyZXBsYWNlbWVudCksIHJlcGxhY2VtZW50TGVuZ3RoKTsgfQotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBQYXNzUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IExD
aGFyKiwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpOwotICAgIFBhc3NSZWY8U3RyaW5nSW1w
bD4gcmVwbGFjZShVQ2hhciwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0
aCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWY8U3RyaW5nSW1wbD4gcmVwbGFj
ZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQ
YXNzUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwg
U3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4g
cmVwbGFjZShVQ2hhciwgVUNoYXIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3Ry
aW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIEFMV0FZU19JTkxJTkUg
UmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgY2hhciogcmVwbGFj
ZW1lbnQsIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKSB7IHJldHVybiByZXBsYWNlKHBhdHRl
cm4sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihyZXBsYWNlbWVudCksIHJlcGxhY2Vt
ZW50TGVuZ3RoKTsgfQorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4g
cmVwbGFjZShVQ2hhciwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7
CisgICAgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQgcmVwbGFjZW1lbnRMZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3Ry
aW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5z
aWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgVUNo
YXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0
aW9uYWxpdHkgPSBudWxscHRyKTsKIApAQCAtNzY3LDEzICs3NjcsMTMgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19jb3B5Q2hhcnNJbmxpbmVDdXRPZmYgPSAyMDsKIAog
ICAgIEJ1ZmZlck93bmVyc2hpcCBidWZmZXJPd25lcnNoaXAoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxCdWZmZXJPd25lcnNoaXA+KG1faGFzaEFuZEZsYWdzICYgc19oYXNoTWFza0J1ZmZl
ck93bmVyc2hpcCk7IH0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFBhc3NS
ZWY8U3RyaW5nSW1wbD4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZSk7Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlLCBjbGFzcyBVQ2hhclByZWRpY2F0ZT4gUGFz
c1JlZjxTdHJpbmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShVQ2hhclBy
ZWRpY2F0ZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBjb25zdHJ1Y3RJbnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQpOwot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsKHVuc2lnbmVkLCBDaGFyVHlwZSomKTsKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkLCBDaGFyVHlwZSom
KTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBQYXNzUmVmPFN0cmlu
Z0ltcGw+IHJlYWxsb2NhdGVJbnRlcm5hbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+LCB1bnNpZ25l
ZCwgQ2hhclR5cGUqJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMg
UGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSosIHVuc2ln
bmVkKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBs
PiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJlZGljYXRlKTsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhclR5cGUsIGNsYXNzIFVDaGFyUHJlZGljYXRlPiBSZWY8U3RyaW5nSW1wbD4g
c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUpOworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjb25zdHJ1
Y3RJbnRlcm5hbChTdHJpbmdJbXBsKiwgdW5zaWduZWQpOworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50
ZXJuYWwodW5zaWduZWQsIENoYXJUeXBlKiYpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
VHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxO
b25FbXB0eSh1bnNpZ25lZCwgQ2hhclR5cGUqJik7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGVJbnRlcm5hbChQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+LCB1bnNpZ25lZCwgQ2hhclR5cGUqJik7CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUludGVybmFsKGNv
bnN0IENoYXJUeXBlKiwgdW5zaWduZWQpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBORVZFUl9J
TkxJTkUgdW5zaWduZWQgaGFzaFNsb3dDYXNlKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHVuc2lnbmVkIGhhc2hBbmRGbGFnc0ZvckVtcHR5VW5pcXVlKCk7CiAKQEAgLTg0Myw5ICs4
NDMsOSBAQCBWYWx1ZUNoZWNrPFN0cmluZ0ltcGwqPiB7CiAjZW5kaWYKIAogdGVtcGxhdGUgPD4K
LUFMV0FZU19JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJ
bnRlcm5hbDxMQ2hhcj4oU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4
Qml0Q29uc3RydWN0b3IpKTsgfQorQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8TENoYXI+KFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVk
IGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgaW1wbCkgU3RyaW5nSW1w
bChsZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVjdG9yKSk7IH0KIHRlbXBsYXRlIDw+Ci1BTFdBWVNf
SU5MSU5FIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8
VUNoYXI+KFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyAoTm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChsZW5ndGgpKTsgfQorQUxXQVlTX0lO
TElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8VUNoYXI+
KFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyAoTm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChsZW5ndGgpKTsgfQogCiB0ZW1wbGF0ZSA8Pgog
QUxXQVlTX0lOTElORSBjb25zdCBMQ2hhciogU3RyaW5nSW1wbDo6Y2hhcmFjdGVyczxMQ2hhcj4o
KSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzOCgpOyB9CkBAIC0xMzMxLDcgKzEzMzEsNyBAQCBp
bmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0
ZXJUeXBlKiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgp
OwogfQogCi1pbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjppc29sYXRlZENv
cHkoKSBjb25zdAoraW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjppc29sYXRlZENv
cHkoKSBjb25zdAogewogICAgIGlmICghcmVxdWlyZXNDb3B5KCkpIHsKICAgICAgICAgaWYgKGlz
OEJpdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggMzE3YWZiYy4uNTA4Yzg2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgIFN0
cmluZyhTdHJpbmdJbXBsJiBpbXBsKSA6IG1faW1wbCgmaW1wbCkgeyB9CiAgICAgU3RyaW5nKFN0
cmluZ0ltcGwqIGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQogICAgIFN0cmluZyhQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQotICAgIFN0cmluZyhQYXNzUmVm
PFN0cmluZ0ltcGw+JiYgaW1wbCkgOiBtX2ltcGwoc3RkOjpmb3J3YXJkPFBhc3NSZWY8U3RyaW5n
SW1wbD4+KGltcGwpKSB7IH0KKyAgICBTdHJpbmcoUmVmPFN0cmluZ0ltcGw+JiYgaW1wbCkgOiBt
X2ltcGwoc3RkOjpmb3J3YXJkPFJlZjxTdHJpbmdJbXBsPj4oaW1wbCkpIHsgfQogICAgIFN0cmlu
ZyhSZWZQdHI8U3RyaW5nSW1wbD4mJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KIAogICAgIC8v
IENvbnN0cnVjdCBhIHN0cmluZyBmcm9tIGEgY29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCkBAIC01
MTIsNyArNTEyLDcgQEAgaW5saW5lIHZvaWQgc3dhcChTdHJpbmcmIGEsIFN0cmluZyYgYikgeyBh
LnN3YXAoYik7IH0KIAogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXI+CiBTdHJpbmc6OlN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiB2ZWN0b3IpCi0gICAgOiBtX2ltcGwodmVjdG9y
LnNpemUoKSA/IFN0cmluZ0ltcGw6OmNyZWF0ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgp
KSA6ICpTdHJpbmdJbXBsOjplbXB0eSgpKQorICAgIDogbV9pbXBsKHZlY3Rvci5zaXplKCkgPyBT
dHJpbmdJbXBsOjpjcmVhdGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSkgOiBSZWY8U3Ry
aW5nSW1wbD4oKlN0cmluZ0ltcGw6OmVtcHR5KCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc4
ZGVkOS4uNTFjNGU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwODMgQEAKKzIwMTQtMTItMTIg
IEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgUGFz
c1JlZiB3aXRoIFJlZi9SZWYmJiBhY3Jvc3MgdGhlIGJvYXJkLgorICAgICAgICA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMTM5NTg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJhdHRlcnlNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMv
YmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvYmF0dGVyeS9CYXR0
ZXJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhdHRlcnlTdGF0dXM6OmNyZWF0ZSk6
CisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2dhbWVwYWQvR2FtZXBhZEJ1dHRvbi5oOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBh
ZEJ1dHRvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2Ft
ZXBhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpnYW1lcGFkRnJv
bVBsYXRmb3JtR2FtZXBhZCk6CisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdh
bWVwYWQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvZGVwcmVjYXRlZC9HYW1lcGFkTGlz
dC5oOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6OmNyZWF0ZSk6CisgICAgICAgICog
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0ZUFuZE9wZW4pOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1
ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6VXNlck1lZGlhQ29udHJvbGxlcjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAq
IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNlbnRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2Vu
dGVyLmg6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2VtZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1
YmVQbHVnaW5SZXBsYWNlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvcHJveGltaXR5L0Rldmlj
ZVByb3hpbWl0eUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VQcm94aW1pdHlFdmVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBjc3MvQmFz
aWNTaGFwZUZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckJhc2ljU2hh
cGUpOgorICAgICAgICAoV2ViQ29yZTo6YmFzaWNTaGFwZUZvclZhbHVlKToKKyAgICAgICAgKiBj
c3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5oOgorICAgICAgICAqIGNzcy9DU1NBc3BlY3RSYXRpb1Zh
bHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NBc3BlY3RSYXRpb1ZhbHVlOjpjcmVhdGUpOgor
ICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVCb3JkZXJJbWFnZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2UuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU0Nh
bGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lQ2F0ZWdvcnkp
OgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDYWxjVmFsdWU6OkNTU0NhbGNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxj
VmFsdWU6OmNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDYW52YXNW
YWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FudmFzVmFsdWU6OmNyZWF0ZSk6CisgICAg
ICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp2YWx1ZUZvckltYWdlU2xpY2VTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9y
TmluZVBpZWNlSW1hZ2VTbGljZSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvck5pbmVQaWVj
ZUltYWdlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvck5pbmVQaWVjZUltYWdlUmVw
ZWF0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTmluZVBpZWNlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6em9vbUFkanVzdGVkUGl4ZWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjp6
b29tQWRqdXN0ZWROdW1iZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjp6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yUmVmbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpwZXJjZW50YWdlT3Jab29tQWRqdXN0ZWRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjphdXRvT3Jab29tQWRqdXN0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRC
b3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9yZGVyUmFk
aXVzQ29ybmVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9yZGVyUmFkaXVzU2hvcnRo
YW5kVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6bWF0cml4VHJhbnNmb3JtVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcHV0ZWRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6YWRq
dXN0TGVuZ3RoRm9yWm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjp2YWx1ZUZvclNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjp2YWx1ZUZvckZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzcGVjaWZpZWRWYWx1
ZUZvckdyaWRUcmFja0JyZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6c3BlY2lmaWVkVmFsdWVG
b3JHcmlkVHJhY2tTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxT
bmFwRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2Nyb2xsU25hcFBvaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpzY3JvbGxTbmFwQ29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RGVsYXlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXREdXJhdGlvblZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0VGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVMaW5lQm94Q29udGFpblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yRmFtaWx5
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlclRleHREZWNvcmF0aW9uRmxhZ3NUb0NTU1ZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NT
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyVGV4dERlY29yYXRpb25Ta2lwRmxhZ3NU
b0NTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlckVtcGhhc2lzUG9zaXRpb25GbGFn
c1RvQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFJlcGVhdFRvQ1NTVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsbFNvdXJjZVR5cGVUb0NTU1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OmZpbGxTaXplVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjphbHRUZXh0VG9D
U1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50VG9DU1NWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpmb250RmFtaWx5RnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVI
ZWlnaHRGcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udFNpemVGcm9tU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Zm9udFN0eWxlRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OmZvbnRWYXJpYW50RnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRXZWlnaHRGcm9t
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpj
b3B5UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpzaGFwZVByb3BlcnR5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRp
ZXNJblNldCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgor
ICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q3Jvc3NmYWRlVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29y
SW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdl
VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGVMb2NhbCk6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGZWF0dXJlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGZWF0dXJl
VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRWYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NGdW5jdGlv
blZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUpOgor
ICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NM
aW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFy
R3JhZGllbnRWYWx1ZTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGll
bnRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdyYWRpZW50VmFs
dWU6OmNsb25lKToKKyAgICAgICAgKiBjc3MvQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1h
Z2VTZXRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NT
SW5oZXJpdGVkVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0luaGVyaXRlZFZhbHVlOjpj
cmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NJbml0aWFsVmFsdWUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlRXhwbGljaXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVJbXBsaWNpdCk6CisgICAgICAgICogY3NzL0NTU0tleWZy
YW1lUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUtleWZyYW1lOjpTdHlsZUtleWZy
YW1lKToKKyAgICAgICAgKiBjc3MvQ1NTS2V5ZnJhbWVSdWxlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUtleWZyYW1lOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVLZXlmcmFtZXM6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVLZXlmcmFtZXM6OmNvcHkpOgorICAgICAgICAqIGNzcy9D
U1NMaW5lQm94Q29udGFpblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lQm94Q29u
dGFpblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VJbmxpbmVTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OmNyZWF0ZVN0eWxlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OmNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OmNyZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6YWRkRmlsbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRk
QW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OmZvcm1hdE51bWJlclZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVQYXJzZXJP
cGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQWxsb3dpbmdNYXJnaW5RdWly
ayk6CisgICAgICAgICogY3NzL0NTU1JlZmxlY3RWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUmVmbGVjdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NTaGFkb3dWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhZG93VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICog
Y3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNo
ZWV0Lmg6CisgICAgICAgICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1VuaWNvZGVSYW5nZVZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2xvbmVDU1NWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBjc3MvQ1NTVmFsdWVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZUNvbW1hU2VwYXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0OjpjcmVh
dGVTbGFzaFNlcGFyYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUZyb21QYXJzZXJWYWx1ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0Ojph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0OjpwcmVwZW5kKToKKyAgICAg
ICAgKiBjc3MvQ1NTVmFsdWVQb29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9v
bDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9v
bDo6Y3JlYXRlQ29sb3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBvb2w6OmNy
ZWF0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZh
bWlseVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29sLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NWYWx1ZVBvb2w6OmNyZWF0ZUluaGVyaXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVFeHBsaWNpdEluaXRpYWxWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKToKKyAgICAgICAgKiBjc3Mv
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBy
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRpZXMpOgorICAgICAgICAq
IGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvU3R5
bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltbXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6aW1tdXRh
YmxlQ29weUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Y29w
eUJsb2NrUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6Om11
dGFibGVDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Y29weVByb3Bl
cnRpZXNJblNldCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpj
cmVhdGUpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0
ZTo6c2V0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVsZW1lbnQpOgor
ICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpTdGF0ZTo6dGFrZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZSk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpjb3B5KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUnVsZTo6U3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVBhZ2U6OlN0eWxlUnVsZVBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlRm9udEZhY2U6OlN0eWxlUnVsZUZvbnRGYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUdyb3VwOjp3cmFwcGVySW5zZXJ0UnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVWaWV3cG9ydDo6U3R5bGVSdWxlVmlld3BvcnQp
OgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZTo6Y29weSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUnVsZUZvbnRGYWNlOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVBh
Z2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVQYWdlOjpjb3B5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZU1lZGlhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSdWxlTWVkaWE6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlU3Vw
cG9ydHM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVTdXBwb3J0czo6Y29w
eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVSZWdpb246OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVSZWdpb246OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSdWxlVmlld3BvcnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVWaWV3
cG9ydDo6Y29weSk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZUltcG9ydC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVJbXBvcnQ6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL1N0eWxl
UnVsZUltcG9ydC5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlU2hlZXRDb250ZW50czo6Y29weSk6CisgICAgICAgICogY3NzL1dlYktpdENTU0Zp
bHRlclZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3Mv
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9DaGlsZE5vZGVMaXN0Lmg6Cisg
ICAgICAgICogZG9tL0NsYXNzTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NO
b2RlTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20vQ2xhc3NOb2RlTGlzdC5oOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVG
b3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sOjpjYWNoZWRTaGFyZWFibGVF
bGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTaGFyZWRP
YmplY3RQb29sLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRk
QXV0aG9yU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbjo6YWRkVXNlclNoZWV0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbi5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogZG9tL0VsZW1lbnQu
aDoKKyAgICAgICAgKiBkb20vRWxlbWVudERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVhYmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlVuaXF1ZUVsZW1lbnREYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dERhdGE6Om1ha2VVbmlxdWVDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlVuaXF1ZUVsZW1lbnRE
YXRhOjptYWtlU2hhcmVhYmxlQ29weSk6CisgICAgICAgICogZG9tL0VsZW1lbnREYXRhLmg6Cisg
ICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJhcmVEYXRhOjpzZXRDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKiBkb20vTmFtZU5vZGVMaXN0
Lmg6CisgICAgICAgICogZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmFtZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxvd1dpdGhOYW1lKToKKyAgICAgICAg
KiBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjplbnN1cmVDaGlsZE5vZGVM
aXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjplbnN1cmVFbXB0eUNo
aWxkTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OmFkZENh
Y2hlV2l0aEF0b21pY05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6
OmFkZENhY2hlV2l0aFF1YWxpZmllZE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3Rz
Tm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24pOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OmRpZFJlY2FsY1N0eWxl
KToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UXVh
bGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGw6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1Rh
Z05vZGVMaXN0Lmg6CisgICAgICAgICogaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2VCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIp
OgorICAgICAgICAqIGh0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
RmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpjcmVh
dGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxB
bGxDb2xsZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24u
aDoKKyAgICAgICAgKiBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBcHBsZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAq
IGh0bWwvSFRNTEFwcGxldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxCUkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJSRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxCUkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQpOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTmFtZUNv
bGxlY3Rpb24uaDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNyZWF0ZSk6CisgICAgICAg
ICogaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaDoKKyAgICAgICAgKiBodG1sL0hUTUxQbHVn
SW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb2dyZXNzRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgor
ICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxT
dW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3VtbWFyeUVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxXQlJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxXQlJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFdCUkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hpZGRlbklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaWRkZW5JbnB1dFR5cGU6
OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9JbWFn
ZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9J
bnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0xhYmVsc05vZGVMaXN0Lmg6CisgICAgICAgICog
aHRtbC9SYWRpb05vZGVMaXN0Lmg6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6
CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvU2VhcmNo
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6Y3JlYXRl
SW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuaDoKKyAgICAg
ICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RmllbGRJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNsaWRlclRodW1iOjpSZW5kZXJTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTbGlk
ZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyQ29udGFpbmVyOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgor
ICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjpSZW5kZXJJ
bWFnZUNvbnRyb2xzQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ29udHJvbHNCdXR0
b25FbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oOgorICAgICAgICAqIGh0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2VDb250cm9sczo6UmVuZGVySW1hZ2VDb250cm9scyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVu
dE1hYy5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZUVEN1ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1ZUVEN1ZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNhdmVQYXJzZWRT
dHlsZVNoZWV0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogbWF0
aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBtYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oOgorICAgICAgICAq
IG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxN
YXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MTWF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1lbmNsb3NlRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50Lmg6
CisgICAgICAgICogbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWF0aE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRo
TUxUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVGV4dEVsZW1l
bnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2V0U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNl
dFZpc2l0ZWRMaW5rU3RvcmUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBh
Z2UvVXNlck1lc3NhZ2VIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhh
bmRsZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlOjpj
cmVhdGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmFkZEVsZW1l
bnRDaGFuZ2VUb0Rpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xs
ZXI6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OmFuaW1hdGUpOgor
ICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3Vs
YXRpb25WYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bGN1bGF0aW9uVmFsdWVNYXA6Omluc2VydCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Okxl
bmd0aCk6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250R2x5cGhzQ2FjaGVFbnRy
eTo6Rm9udEdseXBoc0NhY2hlRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVPckFk
ZENhY2hlZEZvbnRHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlw
aHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250R2x5cGhzOjpjcmVhdGVGb3JQbGF0Zm9ybUZvbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1VzZXJNZWRpYUNsaWVudE1vY2suaDoK
KyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudFJlcXVlc3ROb3RpZmllcjo6VXNlck1l
ZGlhQ2xpZW50UmVxdWVzdE5vdGlmaWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ2xpcFBhdGhP
cGVyYXRpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OlJlbmRlckJv
eCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQnV0dG9uOjpSZW5kZXJCdXR0b24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveDo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRGV0YWlsc01hcmtlcjo6UmVuZGVyRGV0YWlsc01hcmtlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZXRTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNldFN0
eWxlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2V0QW5pbWF0
YWJsZVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OlJlbmRlckVtYmVkZGVk
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpjcmVhdGVG
b3JBcHBsZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGaWVsZHNldDo6UmVuZGVyRmllbGRzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6UmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3gp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
b3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxv
d1RocmVhZDo6Y3JlYXRlRmxvd1RocmVhZFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZTo6UmVuZGVyRnJhbWUpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJGcmFtZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZUJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVCYXNlOjpSZW5kZXJGcmFtZUJh
c2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJh
bWVTZXQ6OlJlbmRlckZyYW1lU2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVT
ZXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZ1bGxTY3JlZW5TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGdWxsU2NyZWVuOjpjcmVhdGVQbGFjZWhvbGRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpSZW5kZXJHcmlkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckhUTUxDYW52YXM6OlJlbmRlckhUTUxDYW52
YXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJRnJh
bWU6OlJlbmRlcklGcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW5saW5lOjpSZW5kZXJJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9i
amVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyTW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6UmVuZGVyTGluZUJyZWFr
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJv
eDo6UmVuZGVyTGlzdEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGlzdEl0ZW06OlJlbmRlckxpc3RJdGVtKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpSZW5kZXJMaXN0TWFya2Vy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJNZWRpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6
UmVuZGVyTWVkaWEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVkaWFWb2x1
bWVTbGlkZXJDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXI6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OlJlbmRl
clRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
ZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6UmVuZGVyTWVudUxpc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJNZXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZXRlcjo6UmVu
ZGVyTWV0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZXRlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3dU
aHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OlJlbmRlck11bHRpQ29sdW1uU2V0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI6OlJlbmRlck11
bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQ6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpjcmVhdGVTdHlsZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OlJlbmRlck5hbWVkRmxvd1RocmVhZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQcm9ncmVzczo6UmVuZGVyUHJvZ3Jlc3MpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJRdW90ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJRdW90ZTo6UmVuZGVy
UXVvdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJRdW90ZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9u
OjpSZW5kZXJSZWdpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclJlZ2lvblNldDo6UmVuZGVyUmVnaW9uU2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyUmVnaW9uU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJlcGxpY2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGljYTo6UmVu
ZGVyUmVwbGljYSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJS
dWJ5QXNJbmxpbmU6OlJlbmRlclJ1YnlBc0lubGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSdWJ5QXNCbG9jazo6UmVuZGVyUnVieUFzQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJSdWJ5Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlCYXNlOjpSZW5kZXJSdWJ5QmFzZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6UmVuZGVyUnVi
eVJ1bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVi
eVRleHQ6OlJlbmRlclJ1YnlUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVRl
eHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0OjpSZW5kZXJTY3JvbGxiYXJQYXJ0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
ZWFyY2hGaWVsZDo6UmVuZGVyU2VhcmNoRmllbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTZWFyY2hGaWVsZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVyOjpSZW5kZXJTbGlkZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGFibGVDYXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2FwdGlvbjo6
UmVuZGVyVGFibGVDYXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0
aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
YWJsZUNvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6UmVuZGVyVGFi
bGVDb2wpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZVJvdzo6UmVuZGVyVGFibGVSb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVJvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNlY3Rpb24pOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6
OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVy
VGV4dFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6Y3JlYXRlSW5uZXJCbG9ja1N0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6OlJlbmRlclZUVEN1ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWRlbzo6UmVuZGVyVmlkZW8p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZp
ZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OlJl
bmRlcldpZGdldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxGZW5jZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxG
cmFjdGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE1hdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MTWF0aDo6
UmVuZGVyTWF0aE1MTWF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNYXRoLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNZW5jbG9zZTo6UmVuZGVyTWF0
aE1MTWVuY2xvc2UpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVu
Y2xvc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRo
TUxPcGVyYXRvcik6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9w
ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRv
cjo6UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxSb290OjpSZW5kZXJNYXRoTUxSb290KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvb3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhN
TFJvdyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVuZGVyTWF0aE1MU2NyaXB0cyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6UmVuZGVyTWF0aE1MU3BhY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MU3F1YXJlUm9vdDo6UmVuZGVyTWF0aE1MU3F1YXJlUm9vdCk6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0aE1MVG9rZW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxVbmRlck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcik6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUNpcmNsZTo6
YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUVsbGlwc2U6OmJsZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVQb2x5Z29uOjpibGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlSW5zZXQ6OmJsZW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVJlZjo6RGF0YVJlZik6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL05pbmVQaWVjZUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5pbmVQaWVjZUltYWdl
RGF0YTo6Y29weSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmg6
CisgICAgICAgIChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZURhdGE6OmNyZWF0ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0
ZURlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJp
dGluZ0Zyb21Qc2V1ZG9TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmNvcHkpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5
bGU6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVm
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUZpbGxEYXRhOjpjb3B5KToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlU3Ryb2tlRGF0YTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVN0b3BEYXRhOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlVGV4dERhdGE6OmNvcHkp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVNaXNjRGF0YTo6Y29weSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVNoYWRvd1NWR0RhdGE6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvdXJjZURhdGE6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0ZWRSZXNv
dXJjZURhdGE6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVMYXlvdXREYXRhOjpjb3B5
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUZpbGxEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTdHJva2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTdG9wRGF0
YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlVGV4dERhdGE6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZU1pc2NEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVTaGFkb3dTVkdEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvdXJjZURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUluaGVyaXRlZFJl
c291cmNlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTGF5b3V0RGF0YTo6
Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJhY2tncm91bmREYXRhOjpjb3B5KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCYWNrZ3JvdW5kRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVCb3hEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQm94RGF0YTo6
Y29weSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCb3hEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOjpjb3B5KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OmNyZWF0ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUZpbHRlckRhdGE6OmNvcHkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZUZpbHRlckRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlRmlsdGVyRGF0YTo6Y3JlYXRl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVGbGV4aWJsZUJveERhdGE6OmNvcHkpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVGbGV4aWJsZUJveERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5l
cmF0ZWRJbWFnZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVHcmlkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdyaWREYXRhOjpjb3B5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVHcmlkRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVHcmlkSXRlbURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHcmlkSXRlbURh
dGE6OmNvcHkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHcmlkSXRlbURhdGE6OmNyZWF0ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUluaGVyaXRlZERhdGE6OmNvcHkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TdHlsZUluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVk
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU1hcnF1ZWVEYXRhOjpjb3B5KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVNYXJxdWVlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVNdWx0aUNvbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVNdWx0aUNvbERh
dGE6OmNvcHkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVNdWx0aUNvbERhdGE6OmNyZWF0ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6Y29weSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmFyZUluaGVyaXRlZERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YTo6Y29weSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
U2Nyb2xsU25hcFBvaW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNjcm9sbFNuYXBQ
b2ludHM6OmNvcHkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQ
b2ludHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2Nyb2xsU25hcFBvaW50czo6Y3JlYXRl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVTdXJyb3VuZERhdGE6OmNvcHkpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVT
dXJyb3VuZERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJh
bnNmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVRyYW5zZm9ybURhdGE6OmNv
cHkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlVHJhbnNmb3JtRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlVmlzdWFsRGF0YTo6Y29weSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlz
dWFsRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVWaXN1YWxEYXRhOjpjcmVhdGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHQmxvY2s6OlJlbmRlclNWR0Jsb2NrKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpS
ZW5kZXJTVkdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0VsbGlwc2U6OlJlbmRlclNWR0VsbGlwc2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdHcmFkaWVudFN0b3A6OlJlbmRlclNWR0dyYWRpZW50U3RvcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5s
aW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OlJlbmRlclNWR01vZGVsT2JqZWN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1BhdGg6OlJlbmRlclNWR1BhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UGF0aC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZWN0OjpSZW5kZXJTVkdSZWN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXI6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcik6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcik6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OlJlbmRlclNWR1Jlc291cmNl
RmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ6
OlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OlJlbmRlclNWR1Jlc291cmNlTWFya2VyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OlJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6
UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6
OlJlbmRlclNWR1Jvb3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OlJlbmRlclNWR1NoYXBlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUU3Bhbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpSZW5kZXJTVkdUZXh0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Rl
eHRQYXRoOjpSZW5kZXJTVkdUZXh0UGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0UGF0aC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNm
b3JtYWJsZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9y
dENvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmlu
Z0NvbnRleHQuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAg
KiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oOgorICAgICAgICAqIHN0eWxlL1N0eWxl
UmVzb2x2ZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnN0eWxlRm9yRWxlbWVu
dCk6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdBRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQWx0R2x5cGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdD
bGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NW
R0NsaXBQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDb2xvci5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQ29sb3I6OmNyZWF0ZUZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ29sb3I6OmNyZWF0ZUZyb21Db2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6
Y3JlYXRlQ3VycmVudENvbG9yKToKKyAgICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRGVmc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6
CisgICAgICAgICogc3ZnL1NWR0RlZnNFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NW
R0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogc3ZnL1NW
R0ZvbnRGYWNlTmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VO
YW1lRWxlbWVudDo6c3JjVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZU5hbWVFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGb250RmFjZVVyaUVsZW1lbnQ6OnNyY1ZhbHVlKToKKyAgICAgICAgKiBz
dmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdHRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcv
U1ZHR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdMZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3Ro
Ojp0b0NTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6CisgICAg
ICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdN
YXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWFza0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR01h
c2tFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhaW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYWludDo6Y3JlYXRlVW5rbm93bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6
Y3JlYXRlTm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6Y3JlYXRlQ3VycmVudENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpjcmVhdGVDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYWludDo6Y3JlYXRlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
aW50OjpjcmVhdGVVUklBbmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6Y3Jl
YXRlVVJJQW5kTm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6Cisg
ICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
d2l0Y2hFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdT
d2l0Y2hFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToK
KyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUUmVm
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5l
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFNwYW5FbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3Zn
L1NWR1RleHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcik6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwog
MjAxNC0xMi0xMiAgUmFkdSBTdGF2aWxhICA8c3RhdmlsYUBhZG9iZS5jb20+CiAKICAgICAgICAg
W1NWRyBNYXNraW5nXSBFbmFibGUgdGhlIHVzZSBvZiA8bWFzaz4gZWxlbWVudHMgZm9yIC13ZWJr
aXQtbWFzay1pbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5
L0JhdHRlcnlNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0
ZXJ5TWFuYWdlci5jcHAKaW5kZXggNDMxZDhmZC4uMjBjNDEzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuY3BwCkBAIC0zMiw3ICszMiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxCYXR0ZXJ5TWFuYWdlcj4gQmF0
dGVyeU1hbmFnZXI6OmNyZWF0ZShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKK1JlZjxCYXR0ZXJ5TWFu
YWdlcj4gQmF0dGVyeU1hbmFnZXI6OmNyZWF0ZShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAg
ICBhdXRvIGJhdHRlcnlNYW5hZ2VyID0gYWRvcHRSZWYoKm5ldyBCYXR0ZXJ5TWFuYWdlcihuYXZp
Z2F0b3IpKTsKICAgICBiYXR0ZXJ5TWFuYWdlci5nZXQoKS5zdXNwZW5kSWZOZWVkZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmgKaW5kZXgg
NmVjOGYxZi4uYmEwMmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0
ZXJ5L0JhdHRlcnlNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5
L0JhdHRlcnlNYW5hZ2VyLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIEJhdHRlcnlNYW5hZ2VyIDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwg
cHVibGljIFJlZkNvdW50ZWQ8QmF0dGVyeU1hbmFnZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXQgewog
cHVibGljOgogICAgIHZpcnR1YWwgfkJhdHRlcnlNYW5hZ2VyKCk7Ci0gICAgc3RhdGljIFBhc3NS
ZWY8QmF0dGVyeU1hbmFnZXI+IGNyZWF0ZShOYXZpZ2F0b3IqKTsKKyAgICBzdGF0aWMgUmVmPEJh
dHRlcnlNYW5hZ2VyPiBjcmVhdGUoTmF2aWdhdG9yKik7CiAKICAgICAvLyBFdmVudFRhcmdldCBp
bXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFy
Z2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmF0dGVyeU1hbmFnZXJFdmVu
dFRhcmdldEludGVyZmFjZVR5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0
dGVyeS9CYXR0ZXJ5U3RhdHVzLmNwcAppbmRleCAzZDI4MjJiLi45NTFmZDQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeVN0YXR1cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMuY3BwCkBAIC0yNiwx
MiArMjYsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmPEJhdHRlcnlTdGF0
dXM+IEJhdHRlcnlTdGF0dXM6OmNyZWF0ZSgpCitSZWY8QmF0dGVyeVN0YXR1cz4gQmF0dGVyeVN0
YXR1czo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXR0ZXJ5U3RhdHVz
KTsKIH0KIAotUGFzc1JlZjxCYXR0ZXJ5U3RhdHVzPiBCYXR0ZXJ5U3RhdHVzOjpjcmVhdGUoYm9v
bCBjaGFyZ2luZywgZG91YmxlIGNoYXJnaW5nVGltZSwgZG91YmxlIGRpc2NoYXJnaW5nVGltZSwg
ZG91YmxlIGxldmVsKQorUmVmPEJhdHRlcnlTdGF0dXM+IEJhdHRlcnlTdGF0dXM6OmNyZWF0ZShi
b29sIGNoYXJnaW5nLCBkb3VibGUgY2hhcmdpbmdUaW1lLCBkb3VibGUgZGlzY2hhcmdpbmdUaW1l
LCBkb3VibGUgbGV2ZWwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmF0dGVyeVN0YXR1
cyhjaGFyZ2luZywgY2hhcmdpbmdUaW1lLCBkaXNjaGFyZ2luZ1RpbWUsIGxldmVsKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeVN0YXR1cy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMuaAppbmRleCAw
YTlkMGExLi41MTRhOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRl
cnkvQmF0dGVyeVN0YXR1cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9C
YXR0ZXJ5U3RhdHVzLmgKQEAgLTI5LDggKzI5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBCYXR0ZXJ5U3RhdHVzIDogcHVibGljIFJlZkNvdW50ZWQ8QmF0dGVyeVN0YXR1cz4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPEJhdHRlcnlTdGF0dXM+IGNyZWF0ZSgpOwotICAg
IHN0YXRpYyBQYXNzUmVmPEJhdHRlcnlTdGF0dXM+IGNyZWF0ZShib29sIGNoYXJnaW5nLCBkb3Vi
bGUgY2hhcmdpbmdUaW1lLCBkb3VibGUgZGlzY2hhcmdpbmdUaW1lLCBkb3VibGUgbGV2ZWwpOwor
ICAgIHN0YXRpYyBSZWY8QmF0dGVyeVN0YXR1cz4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxC
YXR0ZXJ5U3RhdHVzPiBjcmVhdGUoYm9vbCBjaGFyZ2luZywgZG91YmxlIGNoYXJnaW5nVGltZSwg
ZG91YmxlIGRpc2NoYXJnaW5nVGltZSwgZG91YmxlIGxldmVsKTsKIAogICAgIGJvb2wgY2hhcmdp
bmcoKSBjb25zdCB7IHJldHVybiBtX2NoYXJnaW5nOyB9CiAgICAgZG91YmxlIGNoYXJnaW5nVGlt
ZSgpIGNvbnN0ICB7IHJldHVybiBtX2NoYXJnaW5nVGltZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRCdXR0b24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkQnV0dG9uLmgKaW5kZXggMTBjZjBmNy4uYmFlZmNmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRCdXR0b24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZEJ1dHRvbi5oCkBA
IC0yOCwxNCArMjgsMTQgQEAKIAogI2lmIEVOQUJMRShHQU1FUEFEKQogCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHYW1lcGFkQnV0dG9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8R2FtZXBhZEJ1dHRvbj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmPEdhbWVwYWRCdXR0b24+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxHYW1lcGFkQnV0dG9u
PiBjcmVhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2FtZXBhZEJ1
dHRvbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFk
L05hdmlnYXRvckdhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05h
dmlnYXRvckdhbWVwYWQuY3BwCmluZGV4IGE3MWZmYTIuLjNjNTZlMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKQEAgLTcy
LDcgKzcyLDcgQEAgTmF2aWdhdG9yR2FtZXBhZCogTmF2aWdhdG9yR2FtZXBhZDo6ZnJvbShOYXZp
Z2F0b3IqIG5hdmlnYXRvcikKICAgICByZXR1cm4gc3VwcGxlbWVudDsKIH0KIAotUGFzc1JlZjxH
YW1lcGFkPiBOYXZpZ2F0b3JHYW1lcGFkOjpnYW1lcGFkRnJvbVBsYXRmb3JtR2FtZXBhZChQbGF0
Zm9ybUdhbWVwYWQmIHBsYXRmb3JtR2FtZXBhZCkKK1JlZjxHYW1lcGFkPiBOYXZpZ2F0b3JHYW1l
cGFkOjpnYW1lcGFkRnJvbVBsYXRmb3JtR2FtZXBhZChQbGF0Zm9ybUdhbWVwYWQmIHBsYXRmb3Jt
R2FtZXBhZCkKIHsKICAgICB1bnNpZ25lZCBpbmRleCA9IHBsYXRmb3JtR2FtZXBhZC5pbmRleCgp
OwogICAgIGlmIChpbmRleCA+PSBtX2dhbWVwYWRzLnNpemUoKSB8fCAhbV9nYW1lcGFkc1tpbmRl
eF0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9y
R2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVw
YWQuaAppbmRleCBlMzY5MGNlLi5iY2NjODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmKTsKICAgICB2b2lk
IGdhbWVwYWREaXNjb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJik7CiAKLSAgICBQYXNzUmVmPEdh
bWVwYWQ+IGdhbWVwYWRGcm9tUGxhdGZvcm1HYW1lcGFkKFBsYXRmb3JtR2FtZXBhZCYpOworICAg
IFJlZjxHYW1lcGFkPiBnYW1lcGFkRnJvbVBsYXRmb3JtR2FtZXBhZChQbGF0Zm9ybUdhbWVwYWQm
KTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL0dh
bWVwYWRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvZGVwcmVjYXRlZC9H
YW1lcGFkTGlzdC5oCmluZGV4IGI3Y2U5YmUuLmM0MGNiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL0dhbWVwYWRMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL2RlcHJlY2F0ZWQvR2FtZXBhZExpc3QuaApAQCAt
MzksNyArMzksNyBAQCB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8R2FtZXBhZD4gPiBHYW1lcGFkVmVj
dG9yOwogCiBjbGFzcyBHYW1lcGFkTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEdhbWVwYWRMaXN0
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8R2FtZXBhZExpc3Q+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgR2FtZXBhZExpc3QpOyB9CisgICAgc3RhdGljIFJlZjxHYW1l
cGFkTGlzdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBHYW1lcGFkTGlzdCk7IH0K
ICAgICB+R2FtZXBhZExpc3QoKTsKIAogICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBQYXNz
UmVmUHRyPEdhbWVwYWQ+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggMTdkZjI2OC4uZDBmOGE5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTIy
NSw3ICsyMjUsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpXYXRjaGVyczo6Z2V0Tm90aWZpZXJzVmVj
dG9yKEdlb05vdGlmaWVyVmVjdG9yJiBjb3B5KSBjb25zdAogICAgIGNvcHlWYWx1ZXNUb1ZlY3Rv
cihtX2lkVG9Ob3RpZmllck1hcCwgY29weSk7CiB9CiAKLVBhc3NSZWY8R2VvbG9jYXRpb24+IEdl
b2xvY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK1JlZjxH
ZW9sb2NhdGlvbj4gR2VvbG9jYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQogewogICAgIGF1dG8gZ2VvbG9jYXRpb24gPSBhZG9wdFJlZigqbmV3IEdlb2xvY2F0
aW9uKGNvbnRleHQpKTsKICAgICBnZW9sb2NhdGlvbi5nZXQoKS5zdXNwZW5kSWZOZWVkZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaApp
bmRleCA1MjZkZGMwLi45M2UxNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBHZW9sb2NhdGlvbiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUsIHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVj
dAogewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPEdlb2xvY2F0aW9uPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyBSZWY8R2VvbG9jYXRpb24+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkdlb2xvY2F0
aW9uKCk7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAK
ICAgICBjbGFzcyBHZW9Ob3RpZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb05vdGlmaWVyPiB7
CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZjxHZW9Ob3RpZmllcj4gY3JlYXRl
KEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbiwgUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBw
b3NpdGlvbkNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRp
b25FcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gb3B0aW9ucykgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBHZW9Ob3RpZmllcihnZW9sb2NhdGlvbiwgcG9zaXRpb25DYWxs
YmFjaywgcG9zaXRpb25FcnJvckNhbGxiYWNrLCBvcHRpb25zKSk7IH0KKyAgICAgICAgc3RhdGlj
IFJlZjxHZW9Ob3RpZmllcj4gY3JlYXRlKEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbiwgUGFzc1Jl
ZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0
aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0
aW9uT3B0aW9ucz4gb3B0aW9ucykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBHZW9Ob3RpZmllcihn
ZW9sb2NhdGlvbiwgcG9zaXRpb25DYWxsYmFjaywgcG9zaXRpb25FcnJvckNhbGxiYWNrLCBvcHRp
b25zKSk7IH0KIAogICAgICAgICBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX29wdGlvbnMuZ2V0KCk7IH07CiAgICAgICAgIHZvaWQgc2V0RmF0YWxFcnJvcihQYXNz
UmVmUHRyPFBvc2l0aW9uRXJyb3I+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZjE2ZWIzZi4uMGM5OTljZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAK
QEAgLTExMCw3ICsxMTAsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlOjplbmRl
ZEtleXdvcmQoKQogICAgIHJldHVybiBlbmRlZDsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZTo6c2V0
UHJpdmF0ZUFuZE9wZW4oUGFzc1JlZjxNZWRpYVNvdXJjZVByaXZhdGU+IG1lZGlhU291cmNlUHJp
dmF0ZSkKK3ZvaWQgTWVkaWFTb3VyY2U6OnNldFByaXZhdGVBbmRPcGVuKFJlZjxNZWRpYVNvdXJj
ZVByaXZhdGU+JiYgbWVkaWFTb3VyY2VQcml2YXRlKQogewogICAgIEFTU0VSVCghbV9wcml2YXRl
KTsKICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IGZhZDRkYzEuLjRiNDM3OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgK
QEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RyZWFtRW5kZWRXaXRoRXJyb3Io
Y29uc3QgQXRvbWljU3RyaW5nJiBlcnJvciwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gTWVk
aWFTb3VyY2VQcml2YXRlQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVBbmRPcGVu
KFBhc3NSZWY8TWVkaWFTb3VyY2VQcml2YXRlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHNldFByaXZhdGVBbmRPcGVuKFJlZjxNZWRpYVNvdXJjZVByaXZhdGU+JiYpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuY3BwCmluZGV4IGZjNjFjZDkuLjQxNDFmYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTk3LDE0
ICs5NywxNCBAQCBzdHJ1Y3QgU291cmNlQnVmZmVyOjpUcmFja0J1ZmZlciB7CiAgICAgfQogfTsK
IAotUGFzc1JlZjxTb3VyY2VCdWZmZXI+IFNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKFBhc3NSZWY8U291
cmNlQnVmZmVyUHJpdmF0ZT4gc291cmNlQnVmZmVyUHJpdmF0ZSwgTWVkaWFTb3VyY2UqIHNvdXJj
ZSkKK1JlZjxTb3VyY2VCdWZmZXI+IFNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKFJlZjxTb3VyY2VCdWZm
ZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhU291cmNlKiBzb3VyY2UpCiB7
CiAgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlcj4gc291cmNlQnVmZmVyKGFkb3B0UmVmKG5ldyBTb3Vy
Y2VCdWZmZXIoV1RGOjptb3ZlKHNvdXJjZUJ1ZmZlclByaXZhdGUpLCBzb3VyY2UpKSk7CiAgICAg
c291cmNlQnVmZmVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gc291cmNlQnVmZmVy
LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLVNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFBhc3NS
ZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4gc291cmNlQnVmZmVyUHJpdmF0ZSwgTWVkaWFTb3VyY2Uq
IHNvdXJjZSkKK1NvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2
YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhU291cmNlKiBzb3VyY2UpCiAgICAgOiBB
Y3RpdmVET01PYmplY3Qoc291cmNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBt
X3ByaXZhdGUoV1RGOjptb3ZlKHNvdXJjZUJ1ZmZlclByaXZhdGUpKQogICAgICwgbV9zb3VyY2Uo
c291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmgKaW5kZXggNTFhMDIwYy4uODk2ZWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC02MSw3ICs2MSw3IEBAIGNs
YXNzIFZpZGVvVHJhY2tMaXN0OwogCiBjbGFzcyBTb3VyY2VCdWZmZXIgZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxTb3VyY2VCdWZmZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGlj
IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQsIHB1YmxpYyBBdWRpb1RyYWNrQ2xpZW50LCBwdWJs
aWMgVmlkZW9UcmFja0NsaWVudCwgcHVibGljIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUGFzc1JlZjxTb3VyY2VCdWZm
ZXJQcml2YXRlPiwgTWVkaWFTb3VyY2UqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlcj4g
Y3JlYXRlKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmLCBNZWRpYVNvdXJjZSopOwogCiAgICAg
dmlydHVhbCB+U291cmNlQnVmZmVyKCk7CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7
IH0KIAogcHJpdmF0ZToKLSAgICBTb3VyY2VCdWZmZXIoUGFzc1JlZjxTb3VyY2VCdWZmZXJQcml2
YXRlPiwgTWVkaWFTb3VyY2UqKTsKKyAgICBTb3VyY2VCdWZmZXIoUmVmPFNvdXJjZUJ1ZmZlclBy
aXZhdGU+JiYsIE1lZGlhU291cmNlKik7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRFbmRTdHJlYW0oU291
cmNlQnVmZmVyUHJpdmF0ZSosIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGll
bnQuaAppbmRleCA1MWQ2MGNlLi5iNGQ5MzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ2xpZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgVXNlck1lZGlhQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURl
c3Ryb3llZCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihQYXNz
UmVmPFVzZXJNZWRpYVJlcXVlc3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJt
aXNzaW9uKFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNh
bmNlbFJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYpID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRy
b2xsZXIuaAppbmRleCBhNjJhZDFmLi43NTc2ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaApAQCAtMzks
NyArMzksNyBAQCBwdWJsaWM6CiAgICAgflVzZXJNZWRpYUNvbnRyb2xsZXIoKTsKIAogICAgIFVz
ZXJNZWRpYUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KLSAgICB2
b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWY8VXNlck1lZGlhUmVxdWVzdD4pOworICAgIHZv
aWQgcmVxdWVzdFBlcm1pc3Npb24oUmVmPFVzZXJNZWRpYVJlcXVlc3Q+JiYpOwogICAgIHZvaWQg
Y2FuY2VsUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0Jik7CiAKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogc3VwcGxlbWVudE5hbWUoKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICBVc2Vy
TWVkaWFDbGllbnQqIG1fY2xpZW50OwogfTsKIAotaW5saW5lIHZvaWQgVXNlck1lZGlhQ29udHJv
bGxlcjo6cmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0
KQoraW5saW5lIHZvaWQgVXNlck1lZGlhQ29udHJvbGxlcjo6cmVxdWVzdFBlcm1pc3Npb24oUmVm
PFVzZXJNZWRpYVJlcXVlc3Q+JiYgcmVxdWVzdCkKIHsKICAgICBtX2NsaWVudC0+cmVxdWVzdFBl
cm1pc3Npb24oV1RGOjptb3ZlKHJlcXVlc3QpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggZDA4NmU5Ny4u
Yjk1NzZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgTm90aWZpY2F0aW9uOjp+Tm90
aWZpY2F0aW9uKCkKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLVBhc3NS
ZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZp
Y2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCitSZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246
OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0
cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCiB7IAog
ICAgIGF1dG8gbm90aWZpY2F0aW9uID0gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb24odGl0bGUs
IGJvZHksIGljb25VUkksIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOwogICAgIG5vdGlmaWNhdGlv
bi5nZXQoKS5zdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBQYXNzUmVmPE5v
dGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiBibwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLVBhc3NS
ZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRp
b25zKQorUmVmPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGljdGlvbmFy
eSYgb3B0aW9ucykKIHsKICAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IGFkb3B0UmVmKCpuZXcgTm90
aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxlKSk7CiAgICAgU3RyaW5nIGFyZ3VtZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmlu
ZGV4IDUwNzk3YWUuLjZiNjk0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTY2LDEwICs2NiwxMCBAQCBjbGFzcyBO
b3RpZmljYXRpb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+LCBwdWJs
aWMgQWN0aXZlRE9NT2JqZQogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE5vdGlmaWNhdGlv
bigpOwogI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSAgICBzdGF0aWMgUGFzc1Jl
ZjxOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4
Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpOwor
ICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+
IHByb3ZpZGVyKTsKICNlbmRpZgogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIHN0YXRp
YyBQYXNzUmVmPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKTsKKyAgICBzdGF0
aWMgUmVmPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKTsKICNlbmRpZgogICAg
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfk5vdGlmaWNhdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmNwcAppbmRleCAzYTVhMDA3Li4wOTU4MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNw
cApAQCAtNDIsNyArNDIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWY8Tm90
aWZpY2F0aW9uQ2VudGVyPiBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKK1JlZjxOb3Rp
ZmljYXRpb25DZW50ZXI+IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQogewogICAgIGF1
dG8gbm90aWZpY2F0aW9uQ2VudGVyID0gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb25DZW50ZXIo
Y29udGV4dCwgY2xpZW50KSk7CiAgICAgbm90aWZpY2F0aW9uQ2VudGVyLmdldCgpLnN1c3BlbmRJ
Zk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCmluZGV4IGQzY2RhM2IuLjIwMGQ4YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2VudGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgVm9pZENhbGxiYWNrOwogCiBj
bGFzcyBOb3RpZmljYXRpb25DZW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb25D
ZW50ZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZjxOb3RpZmljYXRpb25DZW50ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Tm90aWZpY2F0aW9uQ2xpZW50Kik7CisgICAgc3RhdGljIFJlZjxOb3RpZmljYXRpb25DZW50ZXI+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTm90aWZpY2F0aW9uQ2xpZW50Kik7CiAK
ICNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgUGFzc1JlZlB0cjxOb3RpZmlj
YXRpb24+IGNyZWF0ZU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIGljb25VUkksIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCmlu
ZGV4IDYwZjkxOGQuLjAxYzkwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9QbHVnaW5SZXBsYWNlbWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIHNjcmlwdE9iamVjdCgpIHsgcmV0dXJuIDA7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCB3aWxsQ3JlYXRlUmVuZGVyZXIoKSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihIVE1MUGx1Z0luRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KSA9IDA7CisgICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQ
bHVnSW5FbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAg
ICBQbHVnaW5SZXBsYWNlbWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAppbmRleCAzYzhh
YTk5Li5iMGM1ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoKSBvdmVycmlk
ZSB7IHJldHVybiBtX3NjcmlwdE9iamVjdDsgfQogCiAgICAgdmlydHVhbCBib29sIHdpbGxDcmVh
dGVSZW5kZXJlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9Ci0gICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQ
bHVnSW5FbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1
Z0luRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICBIVE1MVmlk
ZW9FbGVtZW50KiBwYXJlbnRFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCmluZGV4IGVhZDZkYzYuLjRkMmNjNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQubW0KQEAgLTEzMyw3ICsxMzMsNyBAQCBRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudDo6flF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50KCkKICAgICBtX21lZGlhRWxl
bWVudCA9IG51bGxwdHI7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50
JiBwbHVnaW4sIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
SFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewog
ICAgIEFTU0VSVF9VTlVTRUQocGx1Z2luLCBtX3BhcmVudEVsZW1lbnQgPT0gJnBsdWdpbik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggNTViYTZlZC4uYmRlYWI2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgWW91VHViZVBsdWdpblJlcGxhY2VtZW50OjpZ
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgY28KICAg
ICAgICAgbV9hdHRyaWJ1dGVzLmFkZChwYXJhbU5hbWVzW2ldLCBwYXJhbVZhbHVlc1tpXSk7CiB9
CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luLCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBZb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYgcGx1
Z2luLCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwbHVn
aW4sIG1fcGFyZW50RWxlbWVudCA9PSAmcGx1Z2luKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oCmluZGV4
IDA5NTNjOTkuLmVmMDhmM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oCkBAIC02MCw3ICs2MCw3IEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIHlvdVR1YmVVUkwoY29uc3QgU3RyaW5nJiByYXdVUkwpOwog
ICAgIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsQ3JlYXRlUmVuZGVyZXIoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2VtYmVkU2hhZG93RWxlbWVudDsgfQotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxlbWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIAogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBtX3Bh
cmVudEVsZW1lbnQ7CiAgICAgUmVmUHRyPFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ+IG1fZW1i
ZWRTaGFkb3dFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wcm94
aW1pdHkvRGV2aWNlUHJveGltaXR5RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHJv
eGltaXR5L0RldmljZVByb3hpbWl0eUV2ZW50LmgKaW5kZXggOTNmYmJmYS4uZTI5N2M2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wcm94aW1pdHkvRGV2aWNlUHJveGltaXR5
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Byb3hpbWl0eS9EZXZpY2VQcm94
aW1pdHlFdmVudC5oCkBAIC00NiwxNyArNDYsMTcgQEAgY2xhc3MgRGV2aWNlUHJveGltaXR5RXZl
bnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgogICAgIH5EZXZpY2VQcm94aW1pdHlFdmVudCgp
IHsgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8RGV2aWNlUHJveGltaXR5RXZlbnQ+IGNyZWF0ZSgp
CisgICAgc3RhdGljIFJlZjxEZXZpY2VQcm94aW1pdHlFdmVudD4gY3JlYXRlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmljZVByb3hpbWl0eUV2ZW50KCkpOwogICAg
IH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPERldmljZVByb3hpbWl0eUV2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IGRvdWJsZSB2YWx1ZSwgY29uc3QgZG91
YmxlIG1pbiwgY29uc3QgZG91YmxlIG1heCkKKyAgICBzdGF0aWMgUmVmPERldmljZVByb3hpbWl0
eUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IGRvdWJs
ZSB2YWx1ZSwgY29uc3QgZG91YmxlIG1pbiwgY29uc3QgZG91YmxlIG1heCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmljZVByb3hpbWl0eUV2ZW50KGV2ZW50VHlwZSwg
dmFsdWUsIG1pbiwgbWF4KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8RGV2aWNlUHJv
eGltaXR5RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IERldmlj
ZVByb3hpbWl0eUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisgICAgc3RhdGljIFJlZjxEZXZpY2VQ
cm94aW1pdHlFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgRGV2
aWNlUHJveGltaXR5RXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERldmljZVByb3hpbWl0eUV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA3Njg5ZDNjLi4xY2IxOTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgpAQCAtNTMwLDcgKzUzMCw3IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3ND
b250ZXh0MTJzZXRGaWxsQ29sb3JFUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxNHNldFN0cm9rZUNvbG9yRVJLTlNfNUNvbG9yRU5TXzEw
Q29sb3JTcGFjZUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVkcmF3SW1hZ2VCdWZm
ZXJFUE5TXzExSW1hZ2VCdWZmZXJFTlNfMTBDb2xvclNwYWNlRVJLTlNfMTBGbG9hdFBvaW50RVJL
TlNfMjBJbWFnZVBhaW50aW5nT3B0aW9uc0UKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0
MTVkcmF3TmF0aXZlSW1hZ2VFUDdDR0ltYWdlUktOU185RmxvYXRTaXplRU5TXzEwQ29sb3JTcGFj
ZUVSS05TXzlGbG9hdFJlY3RFUzlfTlNfMTdDb21wb3NpdGVPcGVyYXRvckVOU185QmxlbmRNb2Rl
RU5TXzE2SW1hZ2VPcmllbnRhdGlvbkUKLV9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVz
ZXRGaWxsR3JhZGllbnRFTjNXVEY3UGFzc1JlZklOU184R3JhZGllbnRFRUUKK19fWk43V2ViQ29y
ZTE1R3JhcGhpY3NDb250ZXh0MTVzZXRGaWxsR3JhZGllbnRFT04zV1RGM1JlZklOU184R3JhZGll
bnRFRUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MThzZXRTaG91bGRBbnRpYWxpYXNF
YgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxOXNldElzQ0FMYXllckNvbnRleHRFYgog
X19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQyMGVuZFRyYW5zcGFyZW5jeUxheWVyRXYKQEAg
LTEwODQsOCArMTA4NCw4IEBAIF9fWk43V2ViQ29yZTI3cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsRVJLTlNfM1VSTEVTMl8KIF9fWk43V2ViQ29yZTI3cmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yRVJOM0pTQzlFeGVjU3RhdGVFUEtjUzRfCiBfX1pON1dlYkNvcmUyN3JlcG9ydERlcHJlY2F0
ZWRTZXR0ZXJFcnJvckVSTjNKU0M5RXhlY1N0YXRlRVBLY1M0XwogX19aTjdXZWJDb3JlMjdzdGFy
dE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFUEZ2dkUKLV9fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbjEyYWRkVXNlclNoZWV0RU4zV1RGN1Bhc3NSZWZJTlNfMThTdHlsZVNo
ZWV0Q29udGVudHNFRUUKLV9fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjE0YWRkQXV0aG9yU2hlZXRFTjNXVEY3UGFzc1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VF
RQorX19aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hl
ZXRFT04zV1RGM1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQorX19aTjdXZWJDb3JlMjhE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTRhZGRBdXRob3JTaGVldEVPTjNXVEYzUmVmSU5T
XzE4U3R5bGVTaGVldENvbnRlbnRzRUVFCiBfX1pON1dlYkNvcmUyOFVzZXJNZXNzYWdlSGFuZGxl
ckRlc2NyaXB0b3JDMUVSS04zV1RGMTJBdG9taWNTdHJpbmdFUk5TXzE1RE9NV3JhcHBlcldvcmxk
RVJOUzBfNkNsaWVudEUKIF9fWk43V2ViQ29yZTI4VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
ckQxRXYKIF9fWk43V2ViQ29yZTI4ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlc0VSS04zV1RG
NlN0cmluZ0UKQEAgLTExNjAsNyArMTE2MCw3IEBAIF9fWk43V2ViQ29yZTRQYWdlMThzZXRQYWdl
U2NhbGVGYWN0b3JFZlJLTlNfOEludFBvaW50RWIKIF9fWk43V2ViQ29yZTRQYWdlMThzZXRUb3BD
b250ZW50SW5zZXRFZgogX19aTjdXZWJDb3JlNFBhZ2UxOWFkZExheW91dE1pbGVzdG9uZXNFagog
X19aTjdXZWJDb3JlNFBhZ2UxOWVuYWJsZVBhZ2VUaHJvdHRsZXJFdgotX19aTjdXZWJDb3JlNFBh
Z2UxOXNldFZpc2l0ZWRMaW5rU3RvcmVFTjNXVEY3UGFzc1JlZklOU18xNlZpc2l0ZWRMaW5rU3Rv
cmVFRUUKK19fWk43V2ViQ29yZTRQYWdlMTlzZXRWaXNpdGVkTGlua1N0b3JlRU9OM1dURjNSZWZJ
TlNfMTZWaXNpdGVkTGlua1N0b3JlRUVFCiBfX1pON1dlYkNvcmU0UGFnZTIwc2Nyb2xsaW5nQ29v
cmRpbmF0b3JFdgogX19aTjdXZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYKIF9f
Wk43V2ViQ29yZTRQYWdlMjB1bm1hcmtBbGxUZXh0TWF0Y2hlc0V2CkBAIC0xMjkxLDcgKzEyOTEs
NyBAQCBfX1pON1dlYkNvcmU2RWRpdG9yN2NvcHlVUkxFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlNkVkaXRvcjdvdXRkZW50RXYKIF9fWk43V2ViQ29yZTZKU05vZGU2c19p
bmZvRQogX19aTjdXZWJDb3JlNkpTTm9kZTl0b1dyYXBwZWRFTjNKU0M3SlNWYWx1ZUUKLV9fWk43
V2ViQ29yZTZMZW5ndGhDMUVOM1dURjdQYXNzUmVmSU5TXzE2Q2FsY3VsYXRpb25WYWx1ZUVFRQor
X19aTjdXZWJDb3JlNkxlbmd0aEMxRU9OM1dURjNSZWZJTlNfMTZDYWxjdWxhdGlvblZhbHVlRUVF
CiBfX1pON1dlYkNvcmU2UmVnaW9uMjF1cGRhdGVCb3VuZHNGcm9tU2hhcGVFdgogX19aTjdXZWJD
b3JlNlJlZ2lvbjV1bml0ZUVSS1MwXwogX19aTjdXZWJDb3JlNlJlZ2lvbjhzdWJ0cmFjdEVSS1Mw
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDk2ZTE0
ZGEuLmRjYjFmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVu
Y3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGJhc2ljU2hhcGVSYWRpdXNUb0NTU1ZhbHVlKGNvbnN0IFJlbmRlclN0eWwKICAgICByZXR1cm4g
MDsKIH0KIAotUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JCYXNpY1NoYXBlKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgQmFzaWNTaGFwZSYgYmFzaWNTaGFwZSkKK1JlZjxDU1NWYWx1
ZT4gdmFsdWVGb3JCYXNpY1NoYXBlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgQmFz
aWNTaGFwZSYgYmFzaWNTaGFwZSkKIHsKICAgICBDU1NWYWx1ZVBvb2wmIHBvb2wgPSBjc3NWYWx1
ZVBvb2woKTsKIApAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyBCYXNpY1NoYXBlUmFkaXVzIGNz
c1ZhbHVlVG9CYXNpY1NoYXBlUmFkaXVzKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhCiAg
ICAgcmV0dXJuIEJhc2ljU2hhcGVSYWRpdXMoY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRh
LCByYWRpdXMuZ2V0KCkpKTsKIH0KIAotUGFzc1JlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9y
VmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNv
bnN0IENTU0Jhc2ljU2hhcGUqIGJhc2ljU2hhcGVWYWx1ZSkKK1JlZjxCYXNpY1NoYXBlPiBiYXNp
Y1NoYXBlRm9yVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lv
bkRhdGEsIGNvbnN0IENTU0Jhc2ljU2hhcGUqIGJhc2ljU2hhcGVWYWx1ZSkKIHsKICAgICBSZWZQ
dHI8QmFzaWNTaGFwZT4gYmFzaWNTaGFwZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBl
RnVuY3Rpb25zLmgKaW5kZXggNjhjYzdhNi4uZjFjZmFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
QmFzaWNTaGFwZUZ1bmN0aW9ucy5oCkBAIC00Miw4ICs0Miw4IEBAIGNsYXNzIENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGE7CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIFJlbmRlclN0eWxlOwogCi1Q
YXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUqLCBj
b25zdCBCYXNpY1NoYXBlJik7Ci1QYXNzUmVmPEJhc2ljU2hhcGU+IGJhc2ljU2hhcGVGb3JWYWx1
ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgY29uc3QgQ1NTQmFzaWNTaGFwZSop
OworUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUqLCBj
b25zdCBCYXNpY1NoYXBlJik7CitSZWY8QmFzaWNTaGFwZT4gYmFzaWNTaGFwZUZvclZhbHVlKGNv
bnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBjb25zdCBDU1NCYXNpY1NoYXBlKik7CiAK
IGZsb2F0IGZsb2F0VmFsdWVGb3JDZW50ZXJDb29yZGluYXRlKGNvbnN0IEJhc2ljU2hhcGVDZW50
ZXJDb29yZGluYXRlJiwgZmxvYXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0FzcGVjdFJhdGlvVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRp
b1ZhbHVlLmgKaW5kZXggODdkNTQ2Yi4uY2FiOGE4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0FzcGVjdFJhdGlvVmFsdWUuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENTU0FzcGVjdFJhdGlvVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmPENTU0FzcGVjdFJhdGlvVmFsdWU+IGNyZWF0ZShmbG9hdCBu
dW1lcmF0b3JWYWx1ZSwgZmxvYXQgZGVub21pbmF0b3JWYWx1ZSkKKyAgICBzdGF0aWMgUmVmPENT
U0FzcGVjdFJhdGlvVmFsdWU+IGNyZWF0ZShmbG9hdCBudW1lcmF0b3JWYWx1ZSwgZmxvYXQgZGVu
b21pbmF0b3JWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Fz
cGVjdFJhdGlvVmFsdWUobnVtZXJhdG9yVmFsdWUsIGRlbm9taW5hdG9yVmFsdWUpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlLmNwcAppbmRleCBmOTQ2YmNhLi5iZTc0MzJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5jcHAKQEAgLTIyLDcgKzIyLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlQm9y
ZGVySW1hZ2VWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZSwgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gaW1hZ2VTbGljZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gYm9yZGVyU2xpY2UsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IG91dHNldCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KQorUmVm
PENTU1ZhbHVlTGlzdD4gY3JlYXRlQm9yZGVySW1hZ2VWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVl
PiBpbWFnZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2VTbGljZSwgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gYm9yZGVyU2xpY2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IG91dHNldCwgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcmVwZWF0KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAoaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3Jk
ZXJJbWFnZS5oCmluZGV4IDA2ZmE1NDMuLmMyYzI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3Jk
ZXJJbWFnZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c1JlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUJvcmRlckltYWdlVmFsdWUoUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gaW1hZ2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGltYWdlU2xpY2UsIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IGJvcmRlclNsaWNlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHJlcGVhdCk7CitSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJ
bWFnZVZhbHVlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGltYWdlLCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBpbWFnZVNsaWNlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBib3JkZXJTbGljZSwgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gb3V0c2V0LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NC
b3JkZXJJbWFnZVNsaWNlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUuaAppbmRleCA4YjlmZTRhLi5iOGI3NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNz
IFJlY3Q7CiAKIGNsYXNzIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVl
PiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2xpY2VzLCBib29sIGZpbGwp
CisgICAgc3RhdGljIFJlZjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+IGNyZWF0ZShQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzbGljZXMsIGJvb2wgZmlsbCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZShzbGljZXMsIGZp
bGwpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRp
b25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
aW5kZXggZmE5OTVmNi4uNGM3MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxh
dGlvblZhbHVlLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIGRvdWJsZSBDU1NDYWxjVmFsdWU6OmNv
bXB1dGVMZW5ndGhQeChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9u
CiBjbGFzcyBDU1NDYWxjUHJpbWl0aXZlVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTQ2FsY0V4cHJl
c3Npb25Ob2RlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZjxDU1NDYWxjUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZSwgYm9vbCBpc0ludGVnZXIpCisgICAgc3RhdGljIFJlZjxD
U1NDYWxjUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YWx1ZSwgYm9vbCBpc0ludGVnZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NDYWxjUHJpbWl0aXZlVmFsdWUodmFsdWUsIGlzSW50ZWdlcikpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4IGZjMDQ0M2YuLjJkMGMw
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaApAQCAtOTUsMTMg
Kzk1LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzTmVnYXRpdmUoKSBjb25zdCB7IHJldHVybiBt
X2V4cHJlc3Npb24tPmRvdWJsZVZhbHVlKCkgPCAwOyB9CiAgICAgZG91YmxlIGNvbXB1dGVMZW5n
dGhQeChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAKLSAgICBQYXNz
UmVmPENhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29uc3QgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0OworICAgIFJlZjxDYWxjdWxhdGlvblZhbHVlPiBj
cmVhdGVDYWxjdWxhdGlvblZhbHVlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmKSBj
b25zdDsKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTQ2FsY1ZhbHVlJikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQ2FsY1Zh
bHVlKFBhc3NSZWY8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiwgYm9vbCBzaG91bGRDbGFtcFRvTm9u
TmVnYXRpdmUpOworICAgIENTU0NhbGNWYWx1ZShSZWY8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiYm
LCBib29sIHNob3VsZENsYW1wVG9Ob25OZWdhdGl2ZSk7CiAKICAgICBkb3VibGUgY2xhbXBUb1Bl
cm1pdHRlZFJhbmdlKGRvdWJsZSkgY29uc3Q7CiAKQEAgLTEwOSwxNCArMTA5LDE0IEBAIHByaXZh
dGU6CiAgICAgY29uc3QgYm9vbCBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZTsKIH07CiAKLWlu
bGluZSBDU1NDYWxjVmFsdWU6OkNTU0NhbGNWYWx1ZShQYXNzUmVmPENTU0NhbGNFeHByZXNzaW9u
Tm9kZT4gZXhwcmVzc2lvbiwgYm9vbCBzaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUpCitpbmxpbmUg
Q1NTQ2FsY1ZhbHVlOjpDU1NDYWxjVmFsdWUoUmVmPENTU0NhbGNFeHByZXNzaW9uTm9kZT4mJiBl
eHByZXNzaW9uLCBib29sIHNob3VsZENsYW1wVG9Ob25OZWdhdGl2ZSkKICAgICA6IENTU1ZhbHVl
KENhbGN1bGF0aW9uQ2xhc3MpCiAgICAgLCBtX2V4cHJlc3Npb24oV1RGOjptb3ZlKGV4cHJlc3Np
b24pKQogICAgICwgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUoc2hvdWxkQ2xhbXBUb05vbk5l
Z2F0aXZlKQogewogfQogCi1pbmxpbmUgUGFzc1JlZjxDYWxjdWxhdGlvblZhbHVlPiBDU1NDYWxj
VmFsdWU6OmNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYgY29udmVyc2lvbkRhdGEpIGNvbnN0CitpbmxpbmUgUmVmPENhbGN1bGF0aW9uVmFsdWU+
IENTU0NhbGNWYWx1ZTo6Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb25zdCBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkgY29uc3QKIHsKICAgICByZXR1cm4gQ2FsY3Vs
YXRpb25WYWx1ZTo6Y3JlYXRlKG1fZXhwcmVzc2lvbi0+Y3JlYXRlQ2FsY0V4cHJlc3Npb24oY29u
dmVyc2lvbkRhdGEpLAogICAgICAgICBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZSA/IENhbGN1
bGF0aW9uUmFuZ2VOb25OZWdhdGl2ZSA6IENhbGN1bGF0aW9uUmFuZ2VBbGwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FudmFzVmFsdWUuaAppbmRleCAzMmVlYzZkLi41MzM3ODBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FudmFzVmFsdWUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEb2N1bWVudDsKIAog
Y2xhc3MgQ1NTQ2FudmFzVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTQ2FudmFzVmFsdWU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIG5hbWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ2FudmFzVmFsdWUobmFtZSkp
OyB9CisgICAgc3RhdGljIFJlZjxDU1NDYW52YXNWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDYW52YXNWYWx1ZShuYW1lKSk7IH0KICAg
ICB+Q1NTQ2FudmFzVmFsdWUoKTsKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCmluZGV4IGZlYWMxNzkuLmU3OWQ3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgc3Rh
dGljIENTU1ZhbHVlSUQgdmFsdWVGb3JSZXBlYXRSdWxlKGludCBydWxlKQogICAgIH0KIH0KIAot
c3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9ySW1hZ2VTbGljZVNpZGUo
Y29uc3QgTGVuZ3RoJiBsZW5ndGgpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZUZvckltYWdlU2xpY2VTaWRlKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogewogICAgIC8vIFRoZXNl
IHZhbHVlcyBjYW4gYmUgcGVyY2VudGFnZXMsIG51bWJlcnMsIG9yIHdoaWxlIGFuIGFuaW1hdGlv
biBvZiBtaXhlZCB0eXBlcyBpcyBpbiBwcm9ncmVzcywKICAgICAvLyBhIGNhbGN1bGF0aW9uIHRo
YXQgY29tYmluZXMgYSBwZXJjZW50YWdlIGFuZCBhIG51bWJlci4KQEAgLTQ4NCw3ICs0ODQsNyBA
QCBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JJbWFnZVNsaWNlU2lk
ZShjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUoMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogfQogCi1zdGF0aWMgUGFz
c1JlZjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VTbGlj
ZShjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCitzdGF0aWMgUmVmPENTU0JvcmRlckltYWdl
U2xpY2VWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVNsaWNlKGNvbnN0IE5pbmVQaWVjZUlt
YWdlJiBpbWFnZSkKIHsKICAgICBhdXRvJiBzbGljZXMgPSBpbWFnZS5pbWFnZVNsaWNlcygpOwog
CkBAIC01MjMsNyArNTIzLDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTQm9yZGVySW1hZ2VTbGljZVZh
bHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlU2xpY2UoY29uc3QgTmluZVAKICAgICByZXR1cm4g
Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjcmVhdGUoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFs
dWUocXVhZC5yZWxlYXNlKCkpLCBpbWFnZS5maWxsKCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVF1YWQoY29uc3QgTGVuZ3Ro
Qm94JiBib3gpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVj
ZUltYWdlUXVhZChjb25zdCBMZW5ndGhCb3gmIGJveCkKIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHRvcDsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJpZ2h0OwpAQCAt
NTc0LDcgKzU3NCw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZv
ck5pbmVQaWVjZUltYWdlUXVhZChjb25zdCBMZW5ndGhCb3gmIGJvCiAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHF1YWQucmVsZWFzZSgpKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VSZXBlYXQoY29uc3QgTmluZVBpZWNl
SW1hZ2UmIGltYWdlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFn
ZVJlcGVhdChjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBob3Jpem9udGFsUmVwZWF0OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gdmVydGljYWxSZXBlYXQ7CkBAIC01ODcsNyArNTg3LDcgQEAgc3RhdGljIFBhc3NSZWY8
Q1NTVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VSZXBlYXQoY29uc3QgTmluZVBpZWNlSW1h
Z2UmIGltYWcKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoUGFpcjo6Y3Jl
YXRlKGhvcml6b250YWxSZXBlYXQucmVsZWFzZSgpLCB2ZXJ0aWNhbFJlcGVhdC5yZWxlYXNlKCkp
KTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2Uo
Y29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVG
b3JOaW5lUGllY2VJbWFnZShjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgaWYg
KCFpbWFnZS5oYXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CkBAIC02MTIsMjQgKzYxMiwyNCBAQCBzdGF0
aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZShjb25zdCBOaW5lUGll
Y2VJbWFnZSYgaW1hZ2UpCiAgICAgcmV0dXJuIGNyZWF0ZUJvcmRlckltYWdlVmFsdWUoaW1hZ2VW
YWx1ZS5yZWxlYXNlKCksIGltYWdlU2xpY2VzLnJlbGVhc2UoKSwgYm9yZGVyU2xpY2VzLnJlbGVh
c2UoKSwgb3V0c2V0LnJlbGVhc2UoKSwgcmVwZWF0LnJlbGVhc2UoKSk7CiB9CiAKLWlubGluZSBz
dGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShk
b3VibGUgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK2lubGluZSBzdGF0aWMgUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGRvdWJsZSB2YWx1ZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVWYWx1ZShhZGp1c3RGbG9hdEZvckFic29sdXRlWm9vbSh2YWx1ZSwgc3R5bGUpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIH0KIAotaW5saW5lIHN0YXRpYyBQYXNzUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiB6b29tQWRqdXN0ZWROdW1iZXJWYWx1ZShkb3VibGUgdmFsdWUsIGNvbnN0
IFJlbmRlclN0eWxlKiBzdHlsZSkKK2lubGluZSBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiB6b29tQWRqdXN0ZWROdW1iZXJWYWx1ZShkb3VibGUgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUodmFsdWUg
LyBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7
CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitz
dGF0aWMgUmVmPENTU1ZhbHVlPiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKGNvbnN0
IExlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKGxl
bmd0aC5pc0ZpeGVkKCkpCiAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGxl
bmd0aC52YWx1ZSgpLCBzdHlsZSk7CiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZh
bHVlKGxlbmd0aCwgc3R5bGUpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVG
b3JSZWZsZWN0aW9uKGNvbnN0IFN0eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JSZWZsZWN0aW9u
KGNvbnN0IFN0eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlKQogewogICAgIGlmICghcmVmbGVjdGlvbikKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwpAQCAtNjU5LDcgKzY1OSw3
IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZvclJlZmxlY3Rpb24oY29uc3QgU3R5
bGVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBjCiAgICAgcmV0dXJuIENTU1JlZmxlY3RWYWx1ZTo6
Y3JlYXRlKGRpcmVjdGlvbi5yZWxlYXNlKCksIG9mZnNldC5yZWxlYXNlKCksIHZhbHVlRm9yTmlu
ZVBpZWNlSW1hZ2UocmVmbGVjdGlvbi0+bWFzaygpKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENT
U1ZhbHVlTGlzdD4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELCBjb25zdCBGaWxsTGF5ZXIqIGxheWVyLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUp
CitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBGaWxsTGF5ZXIqIGxheWVyLCBjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgYXV0byBwb3NpdGlvbkxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGxheWVyLT5pc0JhY2tncm91bmRPcmln
aW5TZXQoKSkgewpAQCAtNzIzLDcgKzcyMyw3IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihSCiAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUNvbG9yVmFsdWUoY29sb3IucmdiKCkpOwog
fQogCi1zdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gcGVyY2VudGFnZU9yWm9vbUFk
anVzdGVkVmFsdWUoTGVuZ3RoIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3Rh
dGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gcGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUo
TGVuZ3RoIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChsZW5n
dGguaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
KCkuY3JlYXRlVmFsdWUobGVuZ3RoLnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
RVJDRU5UQUdFKTsKQEAgLTczMSw3ICs3MzEsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gcGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUoTGVuZ3RoIGxlbmd0aCwgYwog
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwg
MCksIHN0eWxlKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGF1dG9P
clpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVl
KExlbmd0aCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAobGVu
Z3RoLmlzQXV0bygpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CkBAIC03MzksNyArNzM5LDcgQEAgc3RhdGljIFBhc3NS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGF1dG9Pclpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5n
dGgsIGNvbnN0IFIKICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2YWx1ZUZvckxl
bmd0aChsZW5ndGgsIDApLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlz
dD4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywg
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldEJv
cmRlclJhZGl1c0Nvcm5lclZhbHVlcyhjb25zdCBMZW5ndGhTaXplJiByYWRpdXMsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgbGlzdC5nZXQoKS5hcHBlbmQocGVyY2VudGFnZU9yWm9v
bUFkanVzdGVkVmFsdWUocmFkaXVzLndpZHRoKCksIHN0eWxlKSk7CkBAIC03NDcsNyArNzQ3LDcg
QEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZXMoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXUKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGlj
IFBhc3NSZWY8Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0
aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NW
YWx1ZT4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVz
LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKHJhZGl1cy53aWR0aCgpID09
IHJhZGl1cy5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VPclpvb21BZGp1c3Rl
ZFZhbHVlKHJhZGl1cy53aWR0aCgpLCBzdHlsZSk7CkBAIC03NTUsNyArNzU1LDcgQEAgc3RhdGlj
IFBhc3NSZWY8Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0
aFNpemUmIHJhZGl1cywgY28KICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVz
KHJhZGl1cywgc3R5bGUpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGdldEJv
cmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRp
YyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTbGFzaFNlcGFyYXRlZCgpOwogICAgIGJvb2wgc2hvd0hvcml6b250YWxCb3R0b21MZWZ0ID0g
c3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSAhPSBzdHlsZS0+Ym9yZGVyQm90
dG9tTGVmdFJhZGl1cygpLndpZHRoKCk7CkBAIC04MDYsNyArODA2LDcgQEAgc3RhdGljIExheW91
dFJlY3Qgc2l6aW5nQm94KFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiAgICAgcmV0dXJuIGJveC5z
dHlsZSgpLmJveFNpemluZygpID09IEJPUkRFUl9CT1ggPyBib3guYm9yZGVyQm94UmVjdCgpIDog
Ym94LmNvbXB1dGVkQ1NTQ29udGVudEJveFJlY3QoKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8V2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU+IG1hdHJpeFRyYW5zZm9ybVZhbHVlKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRp
YyBSZWY8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IG1hdHJpeFRyYW5zZm9ybVZhbHVlKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSkKIHsKICAgICBSZWZQdHI8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IHRyYW5zZm9ybVZhbHVl
OwogICAgIGlmICh0cmFuc2Zvcm0uaXNBZmZpbmUoKSkgewpAQCAtODQ1LDcgKzg0NSw3IEBAIHN0
YXRpYyBQYXNzUmVmPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBtYXRyaXhUcmFuc2Zvcm1WYWx1
ZShjb25zdCBUcmFuc2Zvcm1hdGlvCiAgICAgcmV0dXJuIHRyYW5zZm9ybVZhbHVlLnJlbGVhc2VO
b25OdWxsKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBjb21wdXRlZFRyYW5zZm9y
bShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0
aWMgUmVmPENTU1ZhbHVlPiBjb21wdXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVu
ZGVyZXItPmhhc1RyYW5zZm9ybSgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CkBAIC04NjQsMTcgKzg2NCwxNyBAQCBz
dGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gY29tcHV0ZWRUcmFuc2Zvcm0oUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgY29uc3QgUmVuZGVyUwogICAgIHJldHVybiBXVEY6Om1vdmUobGlzdCk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYWRqdXN0TGVuZ3RoRm9y
Wm9vbShkb3VibGUgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIEFkanVzdFBpeGVs
VmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSBhZGp1c3QpCitzdGF0aWMgaW5saW5lIFJlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gYWRqdXN0TGVuZ3RoRm9yWm9vbShkb3VibGUgbGVuZ3RoLCBjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSBhZGp1c3Qp
CiB7CiAgICAgcmV0dXJuIGFkanVzdCA9PSBBZGp1c3RQaXhlbFZhbHVlcyA/IHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUobGVuZ3RoLCBzdHlsZSkgOiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShs
ZW5ndGgsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogfQogCi1zdGF0aWMgaW5saW5lIFBh
c3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGFkanVzdExlbmd0aEZvclpvb20oY29uc3QgTGVuZ3Ro
JiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JD
b21wdXRlZFN0eWxlIGFkanVzdCkKK3N0YXRpYyBpbmxpbmUgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBhZGp1c3RMZW5ndGhGb3Jab29tKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSBhZGp1c3QpCiB7
CiAgICAgcmV0dXJuIGFkanVzdCA9PSBBZGp1c3RQaXhlbFZhbHVlcyA/IHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUobGVuZ3RoLnZhbHVlKCksIHN0eWxlKSA6IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZh
bHVlKGxlbmd0aCk7CiB9CiAKLVBhc3NSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIEFkanVzdFBpeGVsVmFsdWVz
Rm9yQ29tcHV0ZWRTdHlsZSBhZGp1c3QpCitSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIEFkanVzdFBpeGVsVmFs
dWVzRm9yQ29tcHV0ZWRTdHlsZSBhZGp1c3QpCiB7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25l
KTsKQEAgLTg5Miw3ICs4OTIsNyBAQCBQYXNzUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjp2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkbwogICAgIHJldHVy
biBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLVBhc3NSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVyT3BlcmF0aW9ucywgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JD
b21wdXRlZFN0eWxlIGFkanVzdCkKK1JlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVk
U3R5bGUgYWRqdXN0KQogewogICAgIGlmIChmaWx0ZXJPcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVOb25lKTsKQEAgLTk4NCw3ICs5ODQsNyBAQCBQYXNzUmVmPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5kZXJTdHls
ZSogc3R5bAogfQogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLXN0YXRpYyBQYXNzUmVm
PENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgR3JpZExl
bmd0aCYgdHJhY2tCcmVhZHRoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVm
PENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgR3JpZExl
bmd0aCYgdHJhY2tCcmVhZHRoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYg
KCF0cmFja0JyZWFkdGguaXNMZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZVZhbHVlKHRyYWNrQnJlYWR0aC5mbGV4KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RlIpOwpAQCAtOTk1LDcgKzk5NSw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBzcGVjaWZp
ZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgR3JpZExlbmd0aCYgdHJhCiAgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgodHJhY2tCcmVhZHRoTGVuZ3RoLCBz
dHlsZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdy
aWRUcmFja1NpemUoY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRU
cmFja1NpemUoY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUpCiB7CiAgICAgc3dpdGNoICh0cmFja1NpemUudHlwZSgpKSB7CiAgICAgY2FzZSBM
ZW5ndGhUcmFja1NpemluZzoKQEAgLTEwMjEsNyArMTAyMSw3IEBAIHN0YXRpYyB2b2lkIGFkZFZh
bHVlc0Zvck5hbWVkR3JpZExpbmVzQXRJbmRleChjb25zdCBPcmRlcmVkTmFtZWRHcmlkTGluZXNN
YXAmIG9yCiAgICAgbGlzdC5hcHBlbmQobGluZU5hbWVzLnJlbGVhc2VOb25OdWxsKCkpOwogfQog
Ci1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0
IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRy
YWNrTGlzdChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgY29uc3QgVmVjdG9y
PEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBz
dHlsZS0+Z3JpZENvbHVtbnMoKSA6IHN0eWxlLT5ncmlkUm93cygpOwogICAgIGNvbnN0IE9yZGVy
ZWROYW1lZEdyaWRMaW5lc01hcCYgb3JkZXJlZE5hbWVkR3JpZExpbmVzID0gZGlyZWN0aW9uID09
IEZvckNvbHVtbnMgPyBzdHlsZS0+b3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBzdHls
ZS0+b3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCk7CkBAIC0xMDY0LDcgKzEwNjQsNyBAQCBzdGF0
aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3RpbwogICAgIHJldHVybiBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRQb3NpdGlvbihjb25zdCBHcmlkUG9z
aXRpb24mIHBvc2l0aW9uKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRp
b24oY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBpZiAocG9zaXRpb24uaXNB
dXRvKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVBdXRvKTsKQEAgLTEwODUsNyArMTA4NSw3IEBAIHN0YXRpYyBQYXNzUmVmPENT
U1ZhbHVlPiB2YWx1ZUZvckdyaWRQb3NpdGlvbihjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9u
KQogfQogI2VuZGlmCiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBjcmVhdGVUcmFuc2l0aW9u
UHJvcGVydHlWYWx1ZShjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbikKK3N0YXRpYyBSZWY8Q1NT
VmFsdWU+IGNyZWF0ZVRyYW5zaXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnN0IEFuaW1hdGlvbiYgYW5p
bWF0aW9uKQogewogICAgIGlmIChhbmltYXRpb24uYW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlv
bjo6QW5pbWF0ZU5vbmUpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHN0YXRpYyBQ
YXNzUmVmPENTU1ZhbHVlPiBjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShjb25zdCBBbmlt
YXRpb24mIGFuaW1hdGlvCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGdl
dFByb3BlcnR5TmFtZVN0cmluZyhhbmltYXRpb24ucHJvcGVydHkoKSksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfU1RSSU5HKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRU
cmFuc2l0aW9uUHJvcGVydHlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKK3N0
YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShjb25zdCBB
bmltYXRpb25MaXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CkBAIC0xMTA3LDcg
KzExMDcsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGdldFRyYW5zaXRpb25Qcm9w
ZXJ0eVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaQogCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBzY3JvbGxTbmFwRGVzdGlu
YXRpb24oUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBMZW5ndGhTaXplJiBkZXN0aW5hdGlvbikK
K3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBzY3JvbGxTbmFwRGVzdGluYXRpb24oUmVuZGVyU3R5
bGUmIHN0eWxlLCBjb25zdCBMZW5ndGhTaXplJiBkZXN0aW5hdGlvbikKIHsKICAgICBhdXRvIGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgbGlzdC5nZXQo
KS5hcHBlbmQocGVyY2VudGFnZU9yWm9vbUFkanVzdGVkVmFsdWUoZGVzdGluYXRpb24ud2lkdGgo
KSwgJnN0eWxlKSk7CkBAIC0xMTE1LDcgKzExMTUsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1
ZUxpc3Q+IHNjcm9sbFNuYXBEZXN0aW5hdGlvbihSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExl
bgogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gc2Nyb2xs
U25hcFBvaW50cyhSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFNjcm9sbFNuYXBQb2ludHMmIHBv
aW50cykKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHNjcm9sbFNuYXBQb2ludHMoUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBTY3JvbGxTbmFwUG9pbnRzJiBwb2ludHMpCiB7CiAgICAgaWYgKHBvaW50
cy51c2VzRWxlbWVudHMpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVFbGVtZW50cyk7CkBAIC0xMTI3LDcgKzExMjcsNyBAQCBzdGF0
aWMgUGFzc1JlZjxDU1NWYWx1ZT4gc2Nyb2xsU25hcFBvaW50cyhSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IFNjcm9sbFNuYXBQbwogICAgIHJldHVybiBXVEY6Om1vdmUobGlzdCk7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMoUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBWZWN0b3I8TGVuZ3RoU2l6ZT4mIGNvb3JkaW5hdGVzKQorc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gc2Nyb2xsU25hcENvb3JkaW5hdGVzKFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgVmVjdG9yPExlbmd0aFNpemU+JiBjb29yZGluYXRlcykKIHsKICAgICBpZiAoY29vcmRpbmF0
ZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CkBAIC0xMTQ2LDcgKzExNDYsNyBAQCBzdGF0aWMgUGFz
c1JlZjxDU1NWYWx1ZT4gc2Nyb2xsU25hcENvb3JkaW5hdGVzKFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgVmVjdG9yPAogCiAjZW5kaWYKIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBn
ZXREZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQorc3RhdGljIFJlZjxD
U1NWYWx1ZUxpc3Q+IGdldERlbGF5VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3Qp
CiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OwogICAgIGlmIChhbmltTGlzdCkgewpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgc3RhdGljIFBhc3NS
ZWY8Q1NTVmFsdWVMaXN0PiBnZXREZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1M
aXN0KQogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+
IGdldER1cmF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gZ2V0RHVyYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBh
bmltTGlzdCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CkBAIC0xMTcyLDcgKzExNzIsNyBAQCBzdGF0
aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGdldER1cmF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9u
TGlzdCogYW5pbUxpc3QpCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENT
U1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0
aW1pbmdGdW5jdGlvbikKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZVRpbWluZ0Z1bmN0aW9u
VmFsdWUoY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKQogewogICAgIHN3aXRj
aCAodGltaW5nRnVuY3Rpb24tPnR5cGUoKSkgewogICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OkN1
YmljQmV6aWVyRnVuY3Rpb246IHsKQEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0YXRpYyBQYXNzUmVm
PENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9u
KiB0aW1pbmdGCiAgICAgfQogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGdldFRp
bWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCitzdGF0aWMg
UmVmPENTU1ZhbHVlTGlzdD4gZ2V0VGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBBbmltYXRpb25M
aXN0KiBhbmltTGlzdCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CiAgICAgaWYgKGFuaW1MaXN0KSB7CkBAIC0xMjIwLDcgKzEyMjAsNyBA
QCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpcwogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMg
UGFzc1JlZjxDU1NWYWx1ZT4gY3JlYXRlTGluZUJveENvbnRhaW5WYWx1ZSh1bnNpZ25lZCBsaW5l
Qm94Q29udGFpbikKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGNyZWF0ZUxpbmVCb3hDb250YWluVmFs
dWUodW5zaWduZWQgbGluZUJveENvbnRhaW4pCiB7CiAgICAgaWYgKCFsaW5lQm94Q29udGFpbikK
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vbmUpOwpAQCAtMTMzNiwxNCArMTMzNiwxNCBAQCBzdGF0aWMgQ1NTVmFsdWVJRCBpZGVu
dGlmaWVyRm9yRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQogICAgIHJldHVybiBD
U1NWYWx1ZUludmFsaWQ7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2
YWx1ZUZvckZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK3N0YXRpYyBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9yRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5
KQogewogICAgIGlmIChDU1NWYWx1ZUlEIGZhbWlseUlkZW50aWZpZXIgPSBpZGVudGlmaWVyRm9y
RmFtaWx5KGZhbWlseSkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoZmFtaWx5SWRlbnRpZmllcik7CiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZVZhbHVlKGZhbWlseS5zdHJpbmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJ
TkcpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25G
bGFnc1RvQ1NTVmFsdWUoaW50IHRleHREZWNvcmF0aW9uKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4g
cmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoaW50IHRleHREZWNvcmF0aW9uKQog
ewogICAgIC8vIEJsaW5rIHZhbHVlIGlzIGlnbm9yZWQuCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKQEAgLTEzNjMs
NyArMTM2Myw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlv
bkZsYWdzVG9DU1NWYWx1ZShpbnQgdGV4dERlY29yYXRpb24pCiAgICAgcmV0dXJuIGxpc3QucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHRE
ZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29yYXRpb25TdHlsZSB0ZXh0RGVj
b3JhdGlvblN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25T
dHlsZUZsYWdzVG9DU1NWYWx1ZShUZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5
bGUpCiB7CiAgICAgc3dpdGNoICh0ZXh0RGVjb3JhdGlvblN0eWxlKSB7CiAgICAgY2FzZSBUZXh0
RGVjb3JhdGlvblN0eWxlU29saWQ6CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBzdGF0aWMgUGFzc1Jl
ZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25TdHlsZUZsYWdzVG9DU1NWYWx1ZShUZXh0
RGVjb3JhdGlvbgogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVFeHBsaWNpdEluaXRp
YWxWYWx1ZSgpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29y
YXRpb25Ta2lwRmxhZ3NUb0NTU1ZhbHVlKFRleHREZWNvcmF0aW9uU2tpcCB0ZXh0RGVjb3JhdGlv
blNraXApCitzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvblNraXBGbGFn
c1RvQ1NTVmFsdWUoVGV4dERlY29yYXRpb25Ta2lwIHRleHREZWNvcmF0aW9uU2tpcCkKIHsKICAg
ICBzd2l0Y2ggKHRleHREZWNvcmF0aW9uU2tpcCkgewogICAgIGNhc2UgVGV4dERlY29yYXRpb25T
a2lwQXV0bzoKQEAgLTEzOTksNyArMTM5OSw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBy
ZW5kZXJUZXh0RGVjb3JhdGlvblNraXBGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29yYXRpb25TCiAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKCk7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiByZW5kZXJFbXBoYXNpc1Bvc2l0aW9uRmxhZ3NU
b0NTU1ZhbHVlKFRleHRFbXBoYXNpc1Bvc2l0aW9uIHRleHRFbXBoYXNpc1Bvc2l0aW9uKQorc3Rh
dGljIFJlZjxDU1NWYWx1ZT4gcmVuZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZShU
ZXh0RW1waGFzaXNQb3NpdGlvbiB0ZXh0RW1waGFzaXNQb3NpdGlvbikKIHsKICAgICBBU1NFUlQo
ISgodGV4dEVtcGhhc2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIpICYmICh0
ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRFbXBoYXNpc1Bvc2l0aW9uVW5kZXIpKSk7CiAgICAg
QVNTRVJUKCEoKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRpb25MZWZ0
KSAmJiAodGV4dEVtcGhhc2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvblJpZ2h0KSkp
OwpAQCAtMTQxOCw3ICsxNDE4LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHJlbmRlckVt
cGhhc2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUoVGV4dEVtcGhhc2lzUG9zaXQKICAgICByZXR1
cm4gbGlzdC5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4g
ZmlsbFJlcGVhdFRvQ1NTVmFsdWUoRUZpbGxSZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeVJl
cGVhdCkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZpbGxSZXBlYXRUb0NTU1ZhbHVlKEVGaWxsUmVw
ZWF0IHhSZXBlYXQsIEVGaWxsUmVwZWF0IHlSZXBlYXQpCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJk
cyBjb21wYXRpYmlsaXR5LCBpZiBib3RoIHZhbHVlcyBhcmUgZXF1YWwsIGp1c3QgcmV0dXJuIG9u
ZSBvZiB0aGVtLiBBbmQKICAgICAvLyBpZiB0aGUgdHdvIHZhbHVlcyBhcmUgZXF1aXZhbGVudCB0
byByZXBlYXQteCBvciByZXBlYXQteSwganVzdCByZXR1cm4gdGhlIHNob3J0aGFuZC4KQEAgLTE0
MzUsNyArMTQzNSw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBmaWxsUmVwZWF0VG9DU1NW
YWx1ZShFRmlsbFJlcGVhdCB4UmVwZWF0LCBFRmlsbFJlcGVhdCB5CiAgICAgcmV0dXJuIFdURjo6
bW92ZShsaXN0KTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGZpbGxTb3VyY2VUeXBl
VG9DU1NWYWx1ZShFTWFza1NvdXJjZVR5cGUgdHlwZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZp
bGxTb3VyY2VUeXBlVG9DU1NWYWx1ZShFTWFza1NvdXJjZVR5cGUgdHlwZSkKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIE1hc2tBbHBoYToKQEAgLTE0NDYsNyArMTQ0Niw3IEBAIHN0
YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUoRU1hc2tTb3Vy
Y2VUeXBlIHR5cGUpCiAgICAgfQogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gZmlsbFNp
emVUb0NTU1ZhbHVlKGNvbnN0IEZpbGxTaXplJiBmaWxsU2l6ZSwgY29uc3QgUmVuZGVyU3R5bGUq
IHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gZmlsbFNpemVUb0NTU1ZhbHVlKGNvbnN0IEZp
bGxTaXplJiBmaWxsU2l6ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChm
aWxsU2l6ZS50eXBlID09IENvbnRhaW4pCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVDb250YWluKTsKQEAgLTE0NjMsMTIgKzE0NjMs
MTIgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGZpbGxTaXplVG9DU1NWYWx1ZShjb25zdCBG
aWxsU2l6ZSYgZmlsbFNpemUsIGNvbnN0IFJlbmQKICAgICByZXR1cm4gV1RGOjptb3ZlKGxpc3Qp
OwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gYWx0VGV4dFRvQ1NTVmFsdWUoY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gYWx0VGV4dFRvQ1NTVmFs
dWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIHJldHVybiBjc3NWYWx1ZVBvb2wo
KS5jcmVhdGVWYWx1ZShzdHlsZS0+Y29udGVudEFsdFRleHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TVFJJTkcpOwogfQogICAgIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBjb250
ZW50VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1Zh
bHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewog
ICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAg
ICBmb3IgKGNvbnN0IENvbnRlbnREYXRhKiBjb250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0
YSgpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CkBA
IC0xNTA4LDcgKzE1MDgsNyBAQCBzdGF0aWMgdm9pZCBsb2dVbmltcGxlbWVudGVkUHJvcGVydHlJ
RChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAgICAgTE9HX0VSUk9SKCJXZWJLaXQgZG9lcyBu
b3QgeWV0IGltcGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAnJXMnLiIsIGdldFByb3BlcnR5
TmFtZShwcm9wZXJ0eUlEKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZm9u
dEZhbWlseUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVl
TGlzdD4gZm9udEZhbWlseUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzdHlsZS0+Zm9udCgpLmZhbWlseUNvdW50KCk7ICsraSkKQEAg
LTE1MTYsNyArMTUxNiw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZm9udEZhbWls
eUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5lSGVpZ2h0RnJvbVN0eWxlKFJlbmRl
clN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpbmVIZWlnaHRG
cm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIExlbmd0aCBsZW5ndGggPSBzdHls
ZS0+bGluZUhlaWdodCgpOwogICAgIGlmIChsZW5ndGguaXNOZWdhdGl2ZSgpKQpAQCAtMTUzMSwy
NiArMTUzMSwyNiBAQCBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZUhlaWdo
dEZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUoZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGgsIDApLCBzdHlsZSk7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U2l6ZUZyb21TdHlsZShSZW5kZXJT
dHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U2l6ZUZyb21T
dHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVs
VmFsdWUoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN0eWxl
KTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRTdHlsZUZyb21T
dHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBm
b250U3R5bGVGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChzdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wo
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVJdGFsaWMpOwogICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwogfQogCi1z
dGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFZhcmlhbnRGcm9tU3R5bGUoUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFZhcmlh
bnRGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChzdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkuc21hbGxDYXBzKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbWFsbENhcHMpOwogICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwogfQogCi1z
dGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFdlaWdodEZyb21TdHlsZShSZW5k
ZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250V2VpZ2h0
RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxlLT5mb250
RGVzY3JpcHRpb24oKS53ZWlnaHQoKSkgewogICAgIGNhc2UgRm9udFdlaWdodDEwMDoKQEAgLTE2
NjYsNyArMTY2Niw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgcmV0dXJuIENvbXB1
dGVkU3R5bGVFeHRyYWN0b3IobV9ub2RlLCBtX2FsbG93VmlzaXRlZFN0eWxlLCBtX3BzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIpLnByb3BlcnR5VmFsdWUocHJvcGVydHlJRCwgdXBkYXRlTGF5b3V0KTsK
IH0KIAotUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OmNvcHlQcm9wZXJ0aWVzKCkgY29uc3QKK1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNvcHlQcm9wZXJ0aWVzKCkgY29uc3QK
IHsKICAgICByZXR1cm4gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihtX25vZGUsIG1fYWxsb3dWaXNp
dGVkU3R5bGUsIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcikuY29weVByb3BlcnRpZXMoKTsKIH0K
QEAgLTE3MTgsNyArMTcxOCw3IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkoTm9kZSogc3R5bGVkCiB9CiAKICNpZiBF
TkFCTEUoQ1NTX1NIQVBFUykKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBzaGFwZVByb3BlcnR5
VmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBTaGFwZVZhbHVlKiBzaGFwZVZh
bHVlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gc2hhcGVQcm9wZXJ0eVZhbHVlKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSkKIHsKICAgICBpZiAo
IXNoYXBlVmFsdWUpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKQEAgLTMyNTYsNyArMzI1Niw3IEBAIGJvb2wgQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlNYXRjaGVzKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgY29uc3QgQ1NTCiAgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWUgJiYgdmFsdWUgJiYgY29tcHV0
ZWRWYWx1ZS0+ZXF1YWxzKCp2YWx1ZSk7CiB9CiAKLVBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXMoKSBjb25zdAorUmVm
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9w
ZXJ0aWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29weVByb3BlcnRpZXNJblNldChjb21wdXRl
ZFByb3BlcnRpZXMsIG51bUNvbXB1dGVkUHJvcGVydGllcyk7CiB9CkBAIC0zMzA5LDcgKzMzMDks
NyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hvcgogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
IH0KIAotUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWdu
ZWQgbGVuZ3RoKSBjb25zdAorUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0
LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+
IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggZjMz
ZjhlOS4uM2E0YzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaApAQCAtNTIsMTMgKzUyLDEzIEBAIHB1YmxpYzoKICAgICBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQg
PSBVcGRhdGVMYXlvdXQpIGNvbnN0OwogCiAgICAgLy8gSGVscGVyIG1ldGhvZHMgZm9yIEhUTUwg
ZWRpdGluZy4KLSAgICBQYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0
aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0
OwotICAgIFBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBj
b25zdDsKKyAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXNJblNl
dChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CisgICAg
UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3Q7CiAgICAg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2V0Rm9udFNpemVDU1NWYWx1ZVByZWZlcnJp
bmdLZXl3b3JkKCkgY29uc3Q7CiAgICAgYm9vbCB1c2VGaXhlZEZvbnREZWZhdWx0U2l6ZSgpIGNv
bnN0OwogICAgIGJvb2wgcHJvcGVydHlNYXRjaGVzKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1Zh
bHVlKikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JGaWx0
ZXIoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgQWRqdXN0UGl4
ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMpOworICAgIHN0YXRp
YyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSA9IEFk
anVzdFBpeGVsVmFsdWVzKTsKIAogcHJpdmF0ZToKICAgICAvLyBUaGUgc3R5bGVkIG5vZGUgaXMg
ZWl0aGVyIHRoZSBub2RlIHBhc3NlZCBpbnRvIGNvbXB1dGVkUHJvcGVydHlWYWx1ZSwgb3IgdGhl
CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gc3Zn
UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KSBjb25zdDsKICAgICBQ
YXNzUmVmUHRyPFNWR1BhaW50PiBhZGp1c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihQYXNzUmVm
UHRyPFNWR1BhaW50PiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKIAotICAgIHN0YXRpYyBQYXNzUmVm
PENTU1ZhbHVlPiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiwgQ1NTUHJvcGVydHlJ
RCwgY29uc3QgUmVuZGVyU3R5bGUqLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUg
PSBBZGp1c3RQaXhlbFZhbHVlcyk7CisgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JT
aGFkb3coY29uc3QgU2hhZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxl
KiwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMp
OwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1cnJlbnRDb2xvck9yVmFsaWRD
b2xvcihSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRy
PENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVz
KGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKQEAgLTExNSw3ICsxMTUsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlD
U1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3Ry
aW5nIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGll
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQg
PSBVcGRhdGVMYXlvdXQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5oCmluZGV4IDUwNjdlYmMuLmEyZmJjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2Zh
ZGVWYWx1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgQ1NTQ3Jv
c3NmYWRlVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiAgICAgZnJpZW5k
IGNsYXNzIENyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXJQcm94eTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZjxDU1NDcm9zc2ZhZGVWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IGZyb21WYWx1ZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdG9WYWx1ZSkKKyAgICBzdGF0aWMgUmVm
PENTU0Nyb3NzZmFkZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZnJvbVZhbHVl
LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB0b1ZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ1NTQ3Jvc3NmYWRlVmFsdWUoZnJvbVZhbHVlLCB0b1ZhbHVlKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDdhMTJm
N2EuLjI0MWY1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFn
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGlubGluZSBTVkdDdXJzb3JFbGVtZW50KiByZXNv
dXJjZVJlZmVyZW5jZWRCeUN1cnNvckVsZW1lbnQoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1DU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKFBh
c3NSZWY8Q1NTVmFsdWU+IGltYWdlVmFsdWUsIGJvb2wgaGFzSG90U3BvdCwgY29uc3QgSW50UG9p
bnQmIGhvdFNwb3QpCitDU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKFJl
ZjxDU1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0IEludFBvaW50
JiBob3RTcG90KQogICAgIDogQ1NTVmFsdWUoQ3Vyc29ySW1hZ2VDbGFzcykKICAgICAsIG1faW1h
Z2VWYWx1ZShXVEY6Om1vdmUoaW1hZ2VWYWx1ZSkpCiAgICAgLCBtX2hhc0hvdFNwb3QoaGFzSG90
U3BvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCmluZGV4IDg2ZGY3
YWQuLjYxYTI5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFn
ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaApA
QCAtMzMsNyArMzMsNyBAQCBjbGFzcyBTVkdFbGVtZW50OwogCiBjbGFzcyBDU1NDdXJzb3JJbWFn
ZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxD
U1NDdXJzb3JJbWFnZVZhbHVlPiBjcmVhdGUoUGFzc1JlZjxDU1NWYWx1ZT4gaW1hZ2VWYWx1ZSwg
Ym9vbCBoYXNIb3RTcG90LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKKyAgICBzdGF0aWMgUmVm
PENTU0N1cnNvckltYWdlVmFsdWU+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgaW1hZ2VWYWx1ZSwg
Ym9vbCBoYXNIb3RTcG90LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1cnNvckltYWdlVmFsdWUoV1RGOjptb3ZlKGltYWdl
VmFsdWUpLCBoYXNIb3RTcG90LCBob3RTcG90KSk7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIENTU0N1cnNvckltYWdlVmFsdWUoUGFzc1JlZjxDU1NWYWx1ZT4g
aW1hZ2VWYWx1ZSwgYm9vbCBoYXNIb3RTcG90LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCk7Cisg
ICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZShSZWY8Q1NTVmFsdWU+JiYgaW1hZ2VWYWx1ZSwgYm9vbCBo
YXNIb3RTcG90LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCk7CiAKICAgICB2b2lkIGRldGFjaFBl
bmRpbmdJbWFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaApp
bmRleCBiZDA1MjRhLi43ZDE5MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIENT
U0ZpbHRlckltYWdlVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CiAgICAg
ZnJpZW5kIGNsYXNzIEZpbHRlclN1YmltYWdlT2JzZXJ2ZXJQcm94eTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZjxDU1NGaWx0ZXJJbWFnZVZhbHVlPiBjcmVhdGUoUGFzc1JlZjxDU1NWYWx1
ZT4gaW1hZ2VWYWx1ZSwgUGFzc1JlZjxDU1NWYWx1ZT4gZmlsdGVyVmFsdWUpCisgICAgc3RhdGlj
IFJlZjxDU1NGaWx0ZXJJbWFnZVZhbHVlPiBjcmVhdGUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFs
dWUsIFJlZjxDU1NWYWx1ZT4mJiBmaWx0ZXJWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU0ZpbHRlckltYWdlVmFsdWUoV1RGOjptb3ZlKGltYWdlVmFsdWUpLCBX
VEY6Om1vdmUoZmlsdGVyVmFsdWUpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNyY1ZhbHVlLmgKaW5kZXggNjBhYzg3Yy4uN2E5ODBkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCkBAIC0zOSwxMSArMzksMTEgQEAgY2xhc3MgU1ZHRm9u
dEZhY2VFbGVtZW50OwogCiBjbGFzcyBDU1NGb250RmFjZVNyY1ZhbHVlIDogcHVibGljIENTU1Zh
bHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNl
U3JjVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRm9udEZhY2VTcmNWYWx1ZShyZXNvdXJjZSwgZmFsc2Up
KTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTRm9udEZhY2VTcmNWYWx1ZT4gY3JlYXRl
TG9jYWwoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKKyAgICBzdGF0aWMgUmVmPENTU0ZvbnRGYWNl
U3JjVmFsdWU+IGNyZWF0ZUxvY2FsKGNvbnN0IFN0cmluZyYgcmVzb3VyY2UpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZVNyY1ZhbHVlKHJlc291cmNlLCB0
cnVlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGZWF0
dXJlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZhbHVlLmgKaW5k
ZXggY2Y2YzM4MS4uMjE0Y2IzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGZWF0dXJlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZlYXR1cmVW
YWx1ZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NT
Rm9udEZlYXR1cmVWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWY8Q1NTRm9udEZlYXR1cmVWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGFnLCBp
bnQgdmFsdWUpCisgICAgc3RhdGljIFJlZjxDU1NGb250RmVhdHVyZVZhbHVlPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiB0YWcsIGludCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENTU0ZvbnRGZWF0dXJlVmFsdWUodGFnLCB2YWx1ZSkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250VmFsdWUuaAppbmRleCAwMGQ3MDFmLi41MjBhNDdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRWYWx1ZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIENTU1ZhbHVlTGlzdDsKIAogY2xh
c3MgQ1NTRm9udFZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZjxDU1NGb250VmFsdWU+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxDU1NGb250VmFs
dWU+IGNyZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGb250
VmFsdWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlv
blZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCmluZGV4IDU1
MWY0NWUuLmQ1NWNmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlv
blZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaApAQCAt
MzUsMTIgKzM1LDEyIEBAIHN0cnVjdCBDU1NQYXJzZXJGdW5jdGlvbjsKIAogY2xhc3MgQ1NTRnVu
Y3Rpb25WYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWY8Q1NTRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKENTU1BhcnNlckZ1bmN0aW9uKiBmdW5jdGlvbikK
KyAgICBzdGF0aWMgUmVmPENTU0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShDU1NQYXJzZXJGdW5jdGlv
biogZnVuY3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGdW5j
dGlvblZhbHVlKGZ1bmN0aW9uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8Q1NTRnVu
Y3Rpb25WYWx1ZT4gY3JlYXRlKFN0cmluZyBuYW1lLCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4g
YXJncykKKyAgICBzdGF0aWMgUmVmPENTU0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShTdHJpbmcgbmFt
ZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGFyZ3MpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NGdW5jdGlvblZhbHVlKG5hbWUsIGFyZ3MpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCA2YWI3OGRiLi5hZDJiNTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcm90
ZWN0ZWQ6CiBjbGFzcyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlIDogcHVibGljIENTU0dyYWRpZW50
VmFsdWUgewogcHVibGljOgogCi0gICAgc3RhdGljIFBhc3NSZWY8Q1NTTGluZWFyR3JhZGllbnRW
YWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdy
YWRpZW50VHlwZSA9IENTU0xpbmVhckdyYWRpZW50KQorICAgIHN0YXRpYyBSZWY8Q1NTTGluZWFy
R3JhZGllbnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGll
bnRUeXBlIGdyYWRpZW50VHlwZSA9IENTU0xpbmVhckdyYWRpZW50KQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZShyZXBlYXQsIGdyYWRp
ZW50VHlwZSkpOwogICAgIH0KQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ3Jl
YXRlIHRoZSBncmFkaWVudCBmb3IgYSBnaXZlbiBzaXplLgogICAgIFBhc3NSZWZQdHI8R3JhZGll
bnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAot
ICAgIFBhc3NSZWY8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gY2xvbmUoKSBjb25zdAorICAgIFJl
ZjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKCp0aGlzKSk7CiAgICAg
fQpAQCAtMTcwLDEyICsxNzAsMTIgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ1NTUmFkaWFsR3JhZGll
bnRWYWx1ZSA6IHB1YmxpYyBDU1NHcmFkaWVudFZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBjcmVhdGUoQ1NTR3JhZGllbnRSZXBlYXQg
cmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlID0gQ1NTUmFkaWFsR3JhZGllbnQp
CisgICAgc3RhdGljIFJlZjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBjcmVhdGUoQ1NTR3JhZGll
bnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlID0gQ1NTUmFkaWFs
R3JhZGllbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NSYWRpYWxH
cmFkaWVudFZhbHVlKHJlcGVhdCwgZ3JhZGllbnRUeXBlKSk7CiAgICAgfQogCi0gICAgUGFzc1Jl
ZjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBjbG9uZSgpIGNvbnN0CisgICAgUmVmPENTU1JhZGlh
bEdyYWRpZW50VmFsdWU+IGNsb25lKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENTU1JhZGlhbEdyYWRpZW50VmFsdWUoKnRoaXMpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaAppbmRleCA0OTg0ZTc2
Li4xZDk3NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRl
QXJlYXNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkVGVtcGxhdGVBcmVh
c1ZhbHVlLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
U1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZjxDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlPiBjcmVhdGUoY29uc3Qg
TmFtZWRHcmlkQXJlYU1hcCYgZ3JpZEFyZWFNYXAsIHNpemVfdCByb3dDb3VudCwgc2l6ZV90IGNv
bHVtbkNvdW50KQorICAgIHN0YXRpYyBSZWY8Q1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZT4gY3Jl
YXRlKGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIGdyaWRBcmVhTWFwLCBzaXplX3Qgcm93Q291bnQs
IHNpemVfdCBjb2x1bW5Db3VudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5D
b3VudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNl
dFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCmluZGV4IDQw
YTk5NjUuLjFiMDUxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNl
dFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaApAQCAt
NDEsNyArNDEsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zOwogY2xhc3MgQ1NTSW1h
Z2VTZXRWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZUxpc3QgewogcHVibGljOgogCi0gICAgc3RhdGlj
IFBhc3NSZWY8Q1NTSW1hZ2VTZXRWYWx1ZT4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPENTU0lt
YWdlU2V0VmFsdWU+IGNyZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NJbWFnZVNldFZhbHVlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5o
CmluZGV4IDljNDIwOGYuLjIzMjUzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaApA
QCAtMzUsOCArMzUsOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zOwogCiBjbGFzcyBD
U1NJbWFnZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ1NTSW1hZ2VWYWx1ZSh1cmwpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmPENT
U0ltYWdlVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgU3R5bGVJbWFnZSogaW1hZ2Up
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTSW1hZ2VWYWx1ZSh1cmwsIGltYWdlKSk7IH0KKyAg
ICBzdGF0aWMgUmVmPENTU0ltYWdlVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFnZVZhbHVlKHVybCkpOyB9CisgICAgc3RhdGljIFJl
ZjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIFN0eWxlSW1hZ2UqIGlt
YWdlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ltYWdlVmFsdWUodXJsLCBpbWFnZSkpOyB9
CiAgICAgfkNTU0ltYWdlVmFsdWUoKTsKIAogICAgIFN0eWxlQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCmluZGV4IDMxNjcxYmEuLjhhNjM3
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCkBAIC0yOCw3ICsyOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTSW5oZXJpdGVkVmFsdWUgOiBwdWJs
aWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU0luaGVyaXRlZFZh
bHVlPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8Q1NTSW5oZXJpdGVkVmFsdWU+IGNyZWF0ZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbmhlcml0ZWRWYWx1ZSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCmluZGV4IDkxMTZjMTguLmE3
MTFhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKQEAgLTI4LDExICsyOCwx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0luaXRpYWxWYWx1ZSA6IHB1Ymxp
YyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTSW5pdGlhbFZhbHVl
PiBjcmVhdGVFeHBsaWNpdCgpCisgICAgc3RhdGljIFJlZjxDU1NJbml0aWFsVmFsdWU+IGNyZWF0
ZUV4cGxpY2l0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0luaXRp
YWxWYWx1ZSgvKiBpbXBsaWNpdCAqLyBmYWxzZSkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1Jl
ZjxDU1NJbml0aWFsVmFsdWU+IGNyZWF0ZUltcGxpY2l0KCkKKyAgICBzdGF0aWMgUmVmPENTU0lu
aXRpYWxWYWx1ZT4gY3JlYXRlSW1wbGljaXQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTSW5pdGlhbFZhbHVlKC8qIGltcGxpY2l0ICovIHRydWUpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCmluZGV4IDQxZDdiODMuLjgyOWYwODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3R5bGVLZXlmcmFtZTo6U3R5bGVLZXlmcmFtZShQ
YXNzUmVmPFN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykKK1N0eWxlS2V5ZnJhbWU6OlN0eWxl
S2V5ZnJhbWUoUmVmPFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQogICAgIDogbV9wcm9w
ZXJ0aWVzKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlm
cmFtZVJ1bGUuaAppbmRleCBhNzNlMWI0Li40MzAzYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tl
eWZyYW1lUnVsZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIENTU0tleWZyYW1lc1J1bGU7CiBj
bGFzcyBTdHlsZUtleWZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVLZXlmcmFtZT4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0eWxlS2V5ZnJhbWU+IGNyZWF0ZShQYXNzUmVmPFN0eWxlUHJvcGVydGllcz4gcHJvcGVy
dGllcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBjcmVhdGUoUmVmPFN0
eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTdHlsZUtleWZyYW1lKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkpOwogICAgIH0KQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgU3R5bGVLZXlmcmFtZShQYXNzUmVmPFN0eWxlUHJvcGVydGll
cz4pOworICAgIGV4cGxpY2l0IFN0eWxlS2V5ZnJhbWUoUmVmPFN0eWxlUHJvcGVydGllcz4mJik7
CiAgICAgCiAgICAgc3RhdGljIHZvaWQgcGFyc2VLZXlTdHJpbmcoY29uc3QgU3RyaW5nJiwgVmVj
dG9yPGRvdWJsZT4mIGtleXMpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0tleWZyYW1lc1J1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxl
LmgKaW5kZXggNzhmOWU3OS4uYmQ3NjYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0tleWZyYW1lc1J1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVz
UnVsZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIENTU0tleWZyYW1lUnVsZTsKIAogY2xhc3Mg
U3R5bGVSdWxlS2V5ZnJhbWVzIDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmPFN0eWxlUnVsZUtleWZyYW1lcz4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZVJ1bGVLZXlmcmFtZXMoKSk7IH0KKyAgICBzdGF0aWMgUmVmPFN0eWxl
UnVsZUtleWZyYW1lcz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVL
ZXlmcmFtZXMoKSk7IH0KICAgICAKICAgICB+U3R5bGVSdWxlS2V5ZnJhbWVzKCk7CiAgICAgCkBA
IC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBpbnQgZmluZEtleWZyYW1lSW5kZXgo
Y29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwogCi0gICAgUGFzc1JlZjxTdHlsZVJ1bGVLZXlmcmFt
ZXM+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUtleWZyYW1l
cygqdGhpcykpOyB9CisgICAgUmVmPFN0eWxlUnVsZUtleWZyYW1lcz4gY29weSgpIGNvbnN0IHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlS2V5ZnJhbWVzKCp0aGlzKSk7IH0KIAogcHJp
dmF0ZToKICAgICBTdHlsZVJ1bGVLZXlmcmFtZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TGluZUJveENvbnRhaW5WYWx1ZS5oCmluZGV4IGQ3NjQzZmEuLjE2MDE2MjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaApAQCAtNDEsNyArNDEsNyBAQCB0
eXBlZGVmIHVuc2lnbmVkIExpbmVCb3hDb250YWluOwogLy8gVXNlZCBmb3IgdGV4dC1DU1NMaW5l
Qm94Q29udGFpbiBhbmQgYm94LUNTU0xpbmVCb3hDb250YWluCiBjbGFzcyBDU1NMaW5lQm94Q29u
dGFpblZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZjxDU1NMaW5lQm94Q29udGFpblZhbHVlPiBjcmVhdGUoTGluZUJveENvbnRhaW4gdmFsdWUpCisg
ICAgc3RhdGljIFJlZjxDU1NMaW5lQm94Q29udGFpblZhbHVlPiBjcmVhdGUoTGluZUJveENvbnRh
aW4gdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NMaW5lQm94
Q29udGFpblZhbHVlKHZhbHVlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCA5MTY0ZWJiLi41MmZiNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTkxLDcg
KzE5MSw3IEBAIHN0YXRpYyBib29sIGhhc1ByZWZpeChjb25zdCBjaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIGxlbmd0aCwgY29uc3QgY2hhciogcHJlZml4KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
c3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFp
cihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBmaXJzdCwgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gc2Vjb25kKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRl
UHJpbWl0aXZlVmFsdWVQYWlyKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGZpcnN0LCBQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzZWNvbmQpCiB7CiAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbCgpLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShmaXJzdCwgc2Vjb25kKSk7CiB9CkBA
IC0xMzkzLDE0ICsxMzkzLDE0IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZVNlbGVjdG9yKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzCiAgICAgbV9zZWxl
Y3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yID0gbnVsbHB0cjsKIH0KIAotUGFzc1JlZjxJbW11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6cGFyc2VJbmxpbmVTdHlsZURlY2xhcmF0aW9u
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBFbGVtZW50KiBlbGVtZW50KQorUmVmPEltbXV0YWJsZVN0
eWxlUHJvcGVydGllcz4gQ1NTUGFyc2VyOjpwYXJzZUlubGluZVN0eWxlRGVjbGFyYXRpb24oY29u
c3QgU3RyaW5nJiBzdHJpbmcsIEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQ1NTUGFyc2VyQ29u
dGV4dCBjb250ZXh0ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5lbGVtZW50U2hlZXQoKS5jb250ZW50
cygpLnBhcnNlckNvbnRleHQoKTsKICAgICBjb250ZXh0Lm1vZGUgPSBzdHJpY3RUb0NTU1BhcnNl
ck1vZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLmlu
UXVpcmtzTW9kZSgpKTsKICAgICByZXR1cm4gQ1NTUGFyc2VyKGNvbnRleHQpLnBhcnNlRGVjbGFy
YXRpb24oc3RyaW5nLCAmZWxlbWVudC0+ZG9jdW1lbnQoKS5lbGVtZW50U2hlZXQoKS5jb250ZW50
cygpKTsKIH0KIAotUGFzc1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6
cGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywgU3R5bGVTaGVldENvbnRlbnRz
KiBjb250ZXh0U3R5bGVTaGVldCkKK1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU1Bh
cnNlcjo6cGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywgU3R5bGVTaGVldENv
bnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICBzZXRTdHlsZVNoZWV0KGNvbnRleHRT
dHlsZVNoZWV0KTsKIApAQCAtMTQxMSw3ICsxNDExLDcgQEAgUGFzc1JlZjxJbW11dGFibGVTdHls
ZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0
cmkKICAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCiAgICAgICAgIGRlbGV0ZUZvbnRG
YWNlT25seVZhbHVlcygpOwogCi0gICAgUGFzc1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+
IHN0eWxlID0gY3JlYXRlU3R5bGVQcm9wZXJ0aWVzKCk7CisgICAgUmVmPEltbXV0YWJsZVN0eWxl
UHJvcGVydGllcz4gc3R5bGUgPSBjcmVhdGVTdHlsZVByb3BlcnRpZXMoKTsKICAgICBjbGVhclBy
b3BlcnRpZXMoKTsKICAgICByZXR1cm4gc3R5bGU7CiB9CkBAIC0xNTA2LDcgKzE1MDYsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgZmlsdGVyUHJvcGVydGllcyhib29sIGltcG9ydGFudCwgY29uc3Qg
Q1NTUGFyc2VyOjpQYXJzZWRQcm9wZQogICAgIH0KIH0KIAotUGFzc1JlZjxJbW11dGFibGVTdHls
ZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVQcm9wZXJ0aWVzKCkKK1JlZjxJbW11
dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVQcm9wZXJ0aWVzKCkK
IHsKICAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzPiBzZWVuUHJvcGVydGllczsKICAg
ICBzaXplX3QgdW51c2VkRW50cmllcyA9IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CkBAIC0x
NzA0LDcgKzE3MDQsNyBAQCBib29sIENTU1BhcnNlcjo6dmFsaWRVbml0KENTU1BhcnNlclZhbHVl
JiB2YWx1ZSwgVW5pdHMgdW5pdGZsYWdzLCBDU1NQYXJzZXJNb2RlCiAgICAgcmV0dXJuIGI7CiB9
CiAKLWlubGluZSBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OmNyZWF0ZVBy
aW1pdGl2ZU51bWVyaWNWYWx1ZShDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OmNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1ZShD
U1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKG1fcGFyc2VkQ2FsY3VsYXRpb24pIHsK
ICAgICAgICAgQVNTRVJUKGlzQ2FsY3VsYXRpb24odmFsdWUpKTsKQEAgLTE3MjQsNyArMTcyNCw3
IEBAIGlubGluZSBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OmNyZWF0ZVBy
aW1pdGl2ZU51bWVyaWNWYWx1ZShDU1NQYXJzCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZVZhbHVlKHZhbHVlLmZWYWx1ZSwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlcz4odmFsdWUudW5pdCkpOwogfQogCi1pbmxpbmUgUGFzc1JlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gQ1NTUGFyc2VyOjpjcmVhdGVQcmltaXRpdmVTdHJpbmdWYWx1ZShDU1NQYXJzZXJWYWx1
ZSYgdmFsdWUpCitpbmxpbmUgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OmNyZWF0
ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NF
UlQodmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyB8fCB2YWx1ZS51
bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpOwogICAgIHJldHVybiBjc3NWYWx1
ZVBvb2woKS5jcmVhdGVWYWx1ZSh2YWx1ZS5zdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
U1RSSU5HKTsKQEAgLTMxMjgsNyArMzEyOCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjphZGRGaWxsVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZh
bCwgUGFzc1JlZjxDU1NWYWx1ZT4gcnZhbCkKK3ZvaWQgQ1NTUGFyc2VyOjphZGRGaWxsVmFsdWUo
UmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUmVmPENTU1ZhbHVlPiYmIHJ2YWwpCiB7CiAgICAgaWYg
KCFsdmFsKSB7CiAgICAgICAgIGx2YWwgPSBXVEY6Om1vdmUocnZhbCk7CkBAIC0zNDM2LDcgKzM0
MzYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQg
cHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBwcgogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIENTU1BhcnNlcjo6YWRkQW5pbWF0aW9uVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwg
UGFzc1JlZjxDU1NWYWx1ZT4gcnZhbCkKK3ZvaWQgQ1NTUGFyc2VyOjphZGRBbmltYXRpb25WYWx1
ZShSZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBSZWY8Q1NTVmFsdWU+JiYgcnZhbCkKIHsKICAgICBp
ZiAoIWx2YWwpIHsKICAgICAgICAgbHZhbCA9IFdURjo6bW92ZShydmFsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuaAppbmRleCA2NWYwZWNiLi4yOTg4YTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBA
IC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZUxp
c3Q+IHBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZVZhbGlkUHJpbWl0aXZlKENTU1ZhbHVlSUQgaWRl
bnQsIENTU1BhcnNlclZhbHVlJik7CiAgICAgYm9vbCBwYXJzZURlY2xhcmF0aW9uKE11dGFibGVT
dHlsZVByb3BlcnRpZXMqLCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPENTU1J1bGVTb3VyY2VE
YXRhPiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCk7Ci0gICAgc3RhdGlj
IFBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwYXJzZUlubGluZVN0eWxlRGVjbGFy
YXRpb24oY29uc3QgU3RyaW5nJiwgRWxlbWVudCopOworICAgIHN0YXRpYyBSZWY8SW1tdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBwYXJzZUlubGluZVN0eWxlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5n
JiwgRWxlbWVudCopOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5PiBwYXJzZU1lZGlh
UXVlcnkoY29uc3QgU3RyaW5nJik7CiAjaWYgRU5BQkxFKFBJQ1RVUkVfU0laRVMpCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNvdXJjZVNpemVMaXN0PiBwYXJzZVNpemVzQXR0cmlidXRlKGNvbnN0IFN0
cmluZyYpOwpAQCAtMTM4LDggKzEzOCw4IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlRmlsbFBy
b3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQxLCBDU1NQ
cm9wZXJ0eUlEJiBwcm9wSWQyLCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYp
OwogICAgIGJvb2wgcGFyc2VGaWxsU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1By
b3BlcnR5SUQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7
CiAKLSAgICB2b2lkIGFkZEZpbGxWYWx1ZShSZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBQYXNzUmVm
PENTU1ZhbHVlPiBydmFsKTsKLSAgICB2b2lkIGFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NW
YWx1ZT4mIGx2YWwsIFBhc3NSZWY8Q1NTVmFsdWU+IHJ2YWwpOworICAgIHZvaWQgYWRkRmlsbFZh
bHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFJlZjxDU1NWYWx1ZT4mJiBydmFsKTsKKyAgICB2
b2lkIGFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFJlZjxDU1NWYWx1
ZT4mJiBydmFsKTsKIAogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uRGVs
YXkoKTsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlvbkRpcmVjdGlvbigp
OwpAQCAtMzMyLDcgKzMzMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJQcm9wZXJ0aWVz
KCk7CiAKLSAgICBQYXNzUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY3JlYXRlU3R5bGVQ
cm9wZXJ0aWVzKCk7CisgICAgUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY3JlYXRlU3R5
bGVQcm9wZXJ0aWVzKCk7CiAKICAgICBDU1NQYXJzZXJDb250ZXh0IG1fY29udGV4dDsKIApAQCAt
NDA0LDggKzQwNCw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNy
ZWF0ZVZpZXdwb3J0UnVsZSgpOwogI2VuZGlmCiAKLSAgICBQYXNzUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUoQ1NTUGFyc2VyVmFsdWUmKTsKLSAgICBQ
YXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVTdHJpbmdWYWx1ZShDU1NQ
YXJzZXJWYWx1ZSYpOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZl
TnVtZXJpY1ZhbHVlKENTU1BhcnNlclZhbHVlJik7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBjcmVhdGVQcmltaXRpdmVTdHJpbmdWYWx1ZShDU1NQYXJzZXJWYWx1ZSYpOwogCiAgICAgc3Rh
dGljIFVSTCBjb21wbGV0ZVVSTChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgY29uc3QgU3RyaW5n
JiB1cmwpOwogCkBAIC01MDcsNyArNTA3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHBhcnNlR2Vu
ZXJhdGVkSW1hZ2UoQ1NTUGFyc2VyVmFsdWVMaXN0JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwogCiAg
ICAgYm9vbCBwYXJzZVZhbHVlKE11dGFibGVTdHlsZVByb3BlcnRpZXMqLCBDU1NQcm9wZXJ0eUlE
LCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250
ZXh0U3R5bGVTaGVldCk7Ci0gICAgUGFzc1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IHBh
cnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0
U3R5bGVTaGVldCk7CisgICAgUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyc2VEZWNs
YXJhdGlvbihjb25zdCBTdHJpbmcmLCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNo
ZWV0KTsKIAogICAgIFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gcGFyc2VJbnNldFJvdW5kZWRD
b3JuZXJzKFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZUluc2V0PiwgQ1NTUGFyc2VyVmFsdWVMaXN0
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGI3YjM1
NDcuLjljZTA2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApA
QCAtOTQ1LDEzICs5NDUsMTMgQEAgUGFpciogQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFBhaXJWYWx1
ZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICByZXR1cm4gbV92YWx1ZS5wYWlyOwogfQog
Ci1ORVZFUl9JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9y
bWF0TnVtYmVyVmFsdWUoY29uc3QgY2hhciogc3VmZml4LCB1bnNpZ25lZCBzdWZmaXhMZW5ndGgp
IGNvbnN0CitORVZFUl9JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IENTU1ByaW1pdGl2ZVZhbHVlOjpm
b3JtYXROdW1iZXJWYWx1ZShjb25zdCBjaGFyKiBzdWZmaXgsIHVuc2lnbmVkIHN1ZmZpeExlbmd0
aCkgY29uc3QKIHsKICAgICBEZWNpbWFsTnVtYmVyIGRlY2ltYWwobV92YWx1ZS5udW0pOwogCiAg
ICAgdW5zaWduZWQgYnVmZmVyTGVuZ3RoID0gZGVjaW1hbC5idWZmZXJMZW5ndGhGb3JTdHJpbmdE
ZWNpbWFsKCkgKyBzdWZmaXhMZW5ndGg7CiAgICAgTENoYXIqIGJ1ZmZlcjsKLSAgICBQYXNzUmVm
PFN0cmluZ0ltcGw+IHN0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVm
ZmVyTGVuZ3RoLCBidWZmZXIpOworICAgIFJlZjxTdHJpbmdJbXBsPiBzdHJpbmcgPSBTdHJpbmdJ
bXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGJ1ZmZlckxlbmd0aCwgYnVmZmVyKTsKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IGRlY2ltYWwudG9TdHJpbmdEZWNpbWFsKGJ1ZmZlciwgYnVmZmVyTGVu
Z3RoKTsKIApAQCAtOTYyLDcgKzk2Miw3IEBAIE5FVkVSX0lOTElORSBQYXNzUmVmPFN0cmluZ0lt
cGw+IENTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJWYWx1ZShjb25zdCBjaGFyCiB9CiAK
IHRlbXBsYXRlIDx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4KLUFMV0FZU19JTkxJTkUgUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyVmFsdWUoY29uc3Qg
Y2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSkgY29uc3QKK0FMV0FZU19JTkxJTkUg
UmVmPFN0cmluZ0ltcGw+IENTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJWYWx1ZShjb25z
dCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKSBjb25zdAogewogICAgIHJldHVy
biBmb3JtYXROdW1iZXJWYWx1ZShjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJDb3VudCAtIDEpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBhYjZkNmRhLi5lZGQ3NjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtMjIyLDE3ICsyMjIs
MTcgQEAgcHVibGljOgogICAgIGJvb2wgaXNWYWx1ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wcmlt
aXRpdmVVbml0VHlwZSA9PSBDU1NfVkFMVUVfSUQ7IH0KICAgICBib29sIGlzRmxleCgpIGNvbnN0
IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfRlI7IH0KIAotICAgIHN0YXRpYyBQYXNz
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlSUQgdmFsdWVJ
RCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZUlEKSk7IH0K
LSAgICBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllcihD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0
aXZlVmFsdWUocHJvcGVydHlJRCkpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNyZWF0ZVBhcnNlck9wZXJhdG9yKGludCBwYXJzZXJPcGVyYXRvcikgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZShwYXJzZXJPcGVyYXRvcikpOyB9CisgICAg
c3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUlE
IHZhbHVlSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWVJ
RCkpOyB9CisgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmll
cihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUocHJvcGVydHlJRCkpOyB9CisgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gY3JlYXRlUGFyc2VyT3BlcmF0b3IoaW50IHBhcnNlck9wZXJhdG9yKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHBhcnNlck9wZXJhdG9yKSk7IH0KIAotICAg
IHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVDb2xvcih1bnNpZ25lZCBy
Z2JWYWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZShyZ2JWYWx1
ZSkpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShkb3Vi
bGUgdmFsdWUsIFVuaXRUeXBlcyB0eXBlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHZhbHVlLCB0eXBlKSk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFVuaXRUeXBlcyB0eXBlKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCB0eXBlKSk7IH0KLSAg
ICBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGNvbnN0IExlbmd0aCYg
dmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoY29uc3QgTGVuZ3RoU2l6ZSYgdmFsdWUsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1
ZSh2YWx1ZSwgc3R5bGUpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNy
ZWF0ZUNvbG9yKHVuc2lnbmVkIHJnYlZhbHVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHJnYlZhbHVlKSk7IH0KKyAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBjcmVhdGUoZG91YmxlIHZhbHVlLCBVbml0VHlwZXMgdHlwZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSkpOyB9CisgICAgc3RhdGljIFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFVuaXRUeXBl
cyB0eXBlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCB0
eXBlKSk7IH0KKyAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoY29uc3Qg
TGVuZ3RoJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCBzdHlsZSkpOyB9CisgICAgc3RhdGljIFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGNvbnN0IExlbmd0aFNpemUmIHZhbHVlLCBjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUodmFsdWUsIHN0eWxlKSk7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoVCB2YWx1ZSkKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoVCB2YWx1
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlKSk7CiAgICAgfQpAQCAtMjQxLDcgKzI0MSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUg
YmFzaWMgaWRlYSBpcyB0aGF0IGEgc3R5bGVzaGVldCBjYW4gdXNlIHRoZSB2YWx1ZSBfX3FlbSAo
Zm9yIHF1aXJreSBlbSkgaW5zdGVhZCBvZiBlbS4KICAgICAvLyBXaGVuIHRoZSBxdWlya3kgdmFs
dWUgaXMgdXNlZCwgaWYgeW91J3JlIGluIHF1aXJrcyBtb2RlLCB0aGUgbWFyZ2luIHdpbGwgY29s
bGFwc2UgYXdheQogICAgIC8vIGluc2lkZSBhIHRhYmxlIGNlbGwuCi0gICAgc3RhdGljIFBhc3NS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUFsbG93aW5nTWFyZ2luUXVpcmsoZG91YmxlIHZh
bHVlLCBVbml0VHlwZXMgdHlwZSkKKyAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBj
cmVhdGVBbGxvd2luZ01hcmdpblF1aXJrKGRvdWJsZSB2YWx1ZSwgVW5pdFR5cGVzIHR5cGUpCiAg
ICAgewogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcXVpcmtWYWx1ZSA9IG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSk7CiAgICAgICAgIHF1aXJrVmFsdWUtPm1faXNRdWlya1Zh
bHVlID0gdHJ1ZTsKQEAgLTQwNCw4ICs0MDQsOCBAQCBwcml2YXRlOgogCiAgICAgQUxXQVlTX0lO
TElORSBTdHJpbmcgZm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogICAgIHRl
bXBsYXRlIDx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4KLSAgICBBTFdBWVNfSU5MSU5FIFBhc3NS
ZWY8U3RyaW5nSW1wbD4gZm9ybWF0TnVtYmVyVmFsdWUoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMp
W2NoYXJhY3RlckNvdW50XSkgY29uc3Q7Ci0gICAgTkVWRVJfSU5MSU5FIFBhc3NSZWY8U3RyaW5n
SW1wbD4gZm9ybWF0TnVtYmVyVmFsdWUoY29uc3QgY2hhciogc3VmZml4LCB1bnNpZ25lZCBzdWZm
aXhMZW5ndGgpIGNvbnN0OworICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IGZvcm1h
dE51bWJlclZhbHVlKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pIGNv
bnN0OworICAgIE5FVkVSX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gZm9ybWF0TnVtYmVyVmFsdWUo
Y29uc3QgY2hhciogc3VmZml4LCB1bnNpZ25lZCBzdWZmaXhMZW5ndGgpIGNvbnN0OwogCiAgICAg
dW5pb24gewogICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUmVmbGVjdFZhbHVlLmgKaW5kZXggNzJlMzY2ZC4uMGI1NWY2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSZWZsZWN0VmFsdWUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBDU1NQcmltaXRpdmVW
YWx1ZTsKIAogY2xhc3MgQ1NTUmVmbGVjdFZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NSZWZsZWN0VmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBkaXJlY3Rpb24sCisgICAgc3RhdGljIFJlZjxDU1NSZWZsZWN0
VmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBkaXJlY3Rpb24sCiAg
ICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG9mZnNldCwgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gbWFzaykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1Jl
ZmxlY3RWYWx1ZShkaXJlY3Rpb24sIG9mZnNldCwgbWFzaykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NoYWRvd1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hh
ZG93VmFsdWUuaAppbmRleCAwMDZjNjI5Li4zMGQzYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2hhZG93VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hh
ZG93VmFsdWUuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIC8v
IFVzZWQgZm9yIHRleHQtc2hhZG93IGFuZCBib3gtc2hhZG93CiBjbGFzcyBDU1NTaGFkb3dWYWx1
ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTU2hh
ZG93VmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4LAorICAgIHN0
YXRpYyBSZWY8Q1NTU2hhZG93VmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiB4LAogICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5LAogICAgICAg
ICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyLAogICAgICAgICBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBzcHJlYWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVj
bGFyYXRpb24uaAppbmRleCBkMjc3NDQwLi4yNDc1YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKLSAg
ICB2aXJ0dWFsIFBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29w
eVByb3BlcnRpZXMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIENTU1N0eWxlU2hlZXQqIHBh
cmVudFN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNoZWV0LmNwcAppbmRleCA0ZTFmZTc4Li45ODRiNTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwCkBAIC03NSwyMyArNzUsMjMgQEAgc3RhdGljIGJvb2wgaXNBY2NlcHRh
YmxlQ1NTU3R5bGVTaGVldFBhcmVudChOb2RlKiBwYXJlbnROb2RlKQogfQogI2VuZGlmCiAKLVBh
c3NSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFBhc3NSZWY8U3R5bGVT
aGVldENvbnRlbnRzPiBzaGVldCwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKQorUmVmPENTU1N0
eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYm
IHNoZWV0LCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUpCiB7IAogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENTU1N0eWxlU2hlZXQoV1RGOjptb3ZlKHNoZWV0KSwgb3duZXJSdWxlKSk7CiB9CiAK
LVBhc3NSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFBhc3NSZWY8U3R5
bGVTaGVldENvbnRlbnRzPiBzaGVldCwgTm9kZSogb3duZXJOb2RlKQorUmVmPENTU1N0eWxlU2hl
ZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0
LCBOb2RlKiBvd25lck5vZGUpCiB7IAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxl
U2hlZXQoV1RGOjptb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBmYWxzZSkpOwogfQogCi1QYXNzUmVm
PENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShOb2RlJiBvd25lck5v
ZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBlbmNvZGluZykKK1JlZjxDU1NT
dHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3duZXJOb2RlLCBj
b25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiB7CiAgICAgQ1NTUGFy
c2VyQ29udGV4dCBwYXJzZXJDb250ZXh0KG93bmVyTm9kZS5kb2N1bWVudCgpLCBiYXNlVVJMLCBl
bmNvZGluZyk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChTdHlsZVNo
ZWV0Q29udGVudHM6OmNyZWF0ZShiYXNlVVJMLnN0cmluZygpLCBwYXJzZXJDb250ZXh0KSwgJm93
bmVyTm9kZSwgdHJ1ZSkpOwogfQogCi1DU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFBhc3NS
ZWY8U3R5bGVTaGVldENvbnRlbnRzPiBjb250ZW50cywgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxl
KQorQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYm
IGNvbnRlbnRzLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUpCiAgICAgOiBtX2NvbnRlbnRzKFdU
Rjo6bW92ZShjb250ZW50cykpCiAgICAgLCBtX2lzSW5saW5lU3R5bGVzaGVldChmYWxzZSkKICAg
ICAsIG1faXNEaXNhYmxlZChmYWxzZSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBDU1NTdHlsZVNoZWV0
OjpDU1NTdHlsZVNoZWV0KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBjb250ZW50cywgQ1NT
SW1wb3J0UnVsZQogICAgIG1fY29udGVudHMtPnJlZ2lzdGVyQ2xpZW50KHRoaXMpOwogfQogCi1D
U1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBj
b250ZW50cywgTm9kZSogb3duZXJOb2RlLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCkKK0NTU1N0
eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250ZW50
cywgTm9kZSogb3duZXJOb2RlLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCkKICAgICA6IG1fY29u
dGVudHMoV1RGOjptb3ZlKGNvbnRlbnRzKSkKICAgICAsIG1faXNJbmxpbmVTdHlsZXNoZWV0KGlz
SW5saW5lU3R5bGVzaGVldCkKICAgICAsIG1faXNEaXNhYmxlZChmYWxzZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5oCmluZGV4IDQwMTdiOWYuLjE4OTA1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuaApAQCAtNDksOSArNDksOSBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwogCiBjbGFzcyBDU1NTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIFN0eWxlU2hlZXQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShQYXNzUmVmPFN0
eWxlU2hlZXRDb250ZW50cz4sIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSA9IDApOwotICAgIHN0
YXRpYyBQYXNzUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShQYXNzUmVmPFN0eWxlU2hlZXRDb250
ZW50cz4sIE5vZGUqIG93bmVyTm9kZSk7Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTU3R5bGVTaGVl
dD4gY3JlYXRlSW5saW5lKE5vZGUmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
ID0gU3RyaW5nKCkpOworICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJlZjxT
dHlsZVNoZWV0Q29udGVudHM+JiYsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSA9IDApOworICAg
IHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+
JiYsIE5vZGUqIG93bmVyTm9kZSk7CisgICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVh
dGVJbmxpbmUoTm9kZSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcgPSBTdHJp
bmcoKSk7CiAKICAgICB2aXJ0dWFsIH5DU1NTdHlsZVNoZWV0KCk7CiAKQEAgLTExOCw4ICsxMTgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2hGcm9tRG9jdW1lbnQoKSB7IG1fb3duZXJOb2Rl
ID0gbnVsbHB0cjsgfQogCiBwcml2YXRlOgotICAgIENTU1N0eWxlU2hlZXQoUGFzc1JlZjxTdHls
ZVNoZWV0Q29udGVudHM+LCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUpOwotICAgIENTU1N0eWxl
U2hlZXQoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+LCBOb2RlKiBvd25lck5vZGUsIGJvb2wg
aXNJbmxpbmVTdHlsZXNoZWV0KTsKKyAgICBDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29u
dGVudHM+JiYsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSk7CisgICAgQ1NTU3R5bGVTaGVldChS
ZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlKiBvd25lck5vZGUsIGJvb2wgaXNJbmxpbmVT
dHlsZXNoZWV0KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NTU1N0eWxlU2hlZXQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4dC9jc3MiKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKaW5kZXggYzM5YWIwYy4uZGFjYjQ3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC0z
Myw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvblZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZjxDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShkb3Vi
bGUgeDEsIGRvdWJsZSB5MSwgZG91YmxlIHgyLCBkb3VibGUgeTIpCisgICAgc3RhdGljIFJlZjxD
U1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShkb3VibGUgeDEsIGRvdWJs
ZSB5MSwgZG91YmxlIHgyLCBkb3VibGUgeTIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoeDEsIHkxLCB4MiwgeTIp
KTsKICAgICB9CkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIENTU1N0ZXBzVGlt
aW5nRnVuY3Rpb25WYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWY8Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlPiBjcmVhdGUoaW50IHN0ZXBzLCBi
b29sIHN0ZXBBdFN0YXJ0KQorICAgIHN0YXRpYyBSZWY8Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZh
bHVlPiBjcmVhdGUoaW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKHN0ZXBzLCBz
dGVwQXRTdGFydCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NV
bmljb2RlUmFuZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZh
bHVlLmgKaW5kZXggMDZjMTc3NC4uMjY0MzA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Vu
aWNvZGVSYW5nZVZhbHVlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDU1NVbmljb2RlUmFuZ2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTVW5pY29kZVJhbmdlVmFsdWU+IGNyZWF0ZShVQ2hhcjMy
IGZyb20sIFVDaGFyMzIgdG8pCisgICAgc3RhdGljIFJlZjxDU1NVbmljb2RlUmFuZ2VWYWx1ZT4g
Y3JlYXRlKFVDaGFyMzIgZnJvbSwgVUNoYXIzMiB0bykKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1VuaWNvZGVSYW5nZVZhbHVlKGZyb20sIHRvKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5jcHAKaW5kZXggYTZjM2NlNi4uMjc1MjM0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwCkBAIC03Miw3ICs3Miw3IEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihDU1NWYWx1
ZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNDU1NWYWx1ZSksIENTU192YWx1ZV9zaG91bGRfCiAKIGNs
YXNzIFRleHRDbG9uZUNTU1ZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZjxUZXh0Q2xvbmVDU1NWYWx1ZT4gY3JlYXRlKENsYXNzVHlwZSBjbGFzc1R5
cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKKyAgICBzdGF0aWMgUmVmPFRleHRDbG9uZUNTU1ZhbHVl
PiBjcmVhdGUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dENsb25lQ1NTVmFsdWUoY2xhc3NUeXBl
LCB0ZXh0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCmluZGV4IGM4OWY5NTgu
LmE0NzNjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKQEAgLTM0LDE5ICszNCwxOSBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmPENTU1ZhbHVlPiwgND46Oml0ZXJhdG9y
IGl0ZXJhdG9yOwogICAgIHR5cGVkZWYgVmVjdG9yPFJlZjxDU1NWYWx1ZT4sIDQ+Ojpjb25zdF9p
dGVyYXRvciBjb25zdF9pdGVyYXRvcjsKIAotICAgIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlz
dD4gY3JlYXRlQ29tbWFTZXBhcmF0ZWQoKQorICAgIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBj
cmVhdGVDb21tYVNlcGFyYXRlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NWYWx1ZUxpc3QoQ29tbWFTZXBhcmF0b3IpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NS
ZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVTcGFjZVNlcGFyYXRlZCgpCisgICAgc3RhdGljIFJlZjxD
U1NWYWx1ZUxpc3Q+IGNyZWF0ZVNwYWNlU2VwYXJhdGVkKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENTU1ZhbHVlTGlzdChTcGFjZVNlcGFyYXRvcikpOwogICAgIH0KLSAg
ICBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZVNsYXNoU2VwYXJhdGVkKCkKKyAg
ICBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlU2xhc2hTZXBhcmF0ZWQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFsdWVMaXN0KFNsYXNoU2VwYXJhdG9y
KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlRnJvbVBh
cnNlclZhbHVlTGlzdChDU1NQYXJzZXJWYWx1ZUxpc3QmIGxpc3QpCisgICAgc3RhdGljIFJlZjxD
U1NWYWx1ZUxpc3Q+IGNyZWF0ZUZyb21QYXJzZXJWYWx1ZUxpc3QoQ1NTUGFyc2VyVmFsdWVMaXN0
JiBsaXN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFsdWVMaXN0
KGxpc3QpKTsKICAgICB9CkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICBpdGVyYXRvciBi
ZWdpbigpIHsgcmV0dXJuIG1fdmFsdWVzLmJlZ2luKCk7IH0KICAgICBpdGVyYXRvciBlbmQoKSB7
IHJldHVybiBtX3ZhbHVlcy5lbmQoKTsgfQogCi0gICAgdm9pZCBhcHBlbmQoUGFzc1JlZjxDU1NW
YWx1ZT4pOwotICAgIHZvaWQgcHJlcGVuZChQYXNzUmVmPENTU1ZhbHVlPik7CisgICAgdm9pZCBh
cHBlbmQoUmVmPENTU1ZhbHVlPiYmKTsKKyAgICB2b2lkIHByZXBlbmQoUmVmPENTU1ZhbHVlPiYm
KTsKICAgICBib29sIHJlbW92ZUFsbChDU1NWYWx1ZSopOwogICAgIGJvb2wgaGFzVmFsdWUoQ1NT
VmFsdWUqKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29weSgpOwpAQCAt
ODksMTIgKzg5LDEyIEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxDU1NWYWx1ZT4sIDQ+IG1f
dmFsdWVzOwogfTsKIAotaW5saW5lIHZvaWQgQ1NTVmFsdWVMaXN0OjphcHBlbmQoUGFzc1JlZjxD
U1NWYWx1ZT4gdmFsdWUpCitpbmxpbmUgdm9pZCBDU1NWYWx1ZUxpc3Q6OmFwcGVuZChSZWY8Q1NT
VmFsdWU+JiYgdmFsdWUpCiB7CiAgICAgbV92YWx1ZXMuYXBwZW5kKFdURjo6bW92ZSh2YWx1ZSkp
OwogfQogCi1pbmxpbmUgdm9pZCBDU1NWYWx1ZUxpc3Q6OnByZXBlbmQoUGFzc1JlZjxDU1NWYWx1
ZT4gdmFsdWUpCitpbmxpbmUgdm9pZCBDU1NWYWx1ZUxpc3Q6OnByZXBlbmQoUmVmPENTU1ZhbHVl
PiYmIHZhbHVlKQogewogICAgIG1fdmFsdWVzLmluc2VydCgwLCBXVEY6Om1vdmUodmFsdWUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAKaW5kZXggMmRmYmM2Ni4uNjY1OTNlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgQ1NTVmFs
dWVQb29sOjpDU1NWYWx1ZVBvb2woKQogewogfQogCi1QYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUlEIGlkZW50KQor
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZUlEIGlkZW50KQogewogICAgIGlmICghaWRlbnQpCiAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZGVudCk7CkBAIC02MCwyMSArNjAs
MjEgQEAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVJRCBpZGVudCkKICAgICByZXR1cm4gKm1faWRlbnRpZmllclZh
bHVlQ2FjaGVbaWRlbnRdOwogfQogCi1QYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1
ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NQcm9wZXJ0eUlEIGlkZW50KQorUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NQ
cm9wZXJ0eUlEIGlkZW50KQogewogICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihpZGVudCk7CiB9CiAKLVBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1Zh
bHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCByZ2JWYWx1ZSkKK1JlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZh
bHVlKQogewogICAgIC8vIFRoZXNlIGFyZSB0aGUgZW1wdHkgYW5kIGRlbGV0ZWQgdmFsdWVzIG9m
IHRoZSBoYXNoIHRhYmxlLgogICAgIGlmIChyZ2JWYWx1ZSA9PSBDb2xvcjo6dHJhbnNwYXJlbnQp
Ci0gICAgICAgIHJldHVybiBtX2NvbG9yVHJhbnNwYXJlbnQ7CisgICAgICAgIHJldHVybiBtX2Nv
bG9yVHJhbnNwYXJlbnQuY29weVJlZigpOwogICAgIGlmIChyZ2JWYWx1ZSA9PSBDb2xvcjo6d2hp
dGUpCi0gICAgICAgIHJldHVybiBtX2NvbG9yV2hpdGU7CisgICAgICAgIHJldHVybiBtX2NvbG9y
V2hpdGUuY29weVJlZigpOwogICAgIC8vIEp1c3QgYmVjYXVzZSBpdCBpcyBjb21tb24uCiAgICAg
aWYgKHJnYlZhbHVlID09IENvbG9yOjpibGFjaykKLSAgICAgICAgcmV0dXJuIG1fY29sb3JCbGFj
azsKKyAgICAgICAgcmV0dXJuIG1fY29sb3JCbGFjay5jb3B5UmVmKCk7CiAKICAgICAvLyBSZW1v
dmUgb25lIGVudHJ5IGF0IHJhbmRvbSBpZiB0aGUgY2FjaGUgZ3Jvd3MgdG9vIGxhcmdlLgogICAg
IGNvbnN0IGludCBtYXhpbXVtQ29sb3JDYWNoZVNpemUgPSA1MTI7CkBAIC04Nyw3ICs4Nyw3IEBA
IFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1
ZSh1bnNpZ25lZCByZ2JWYWx1ZSkKICAgICByZXR1cm4gKmVudHJ5Lml0ZXJhdG9yLT52YWx1ZTsK
IH0KIAotUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVWYWx1
ZShkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdHlwZSkKK1JlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVWYWx1ZShkb3VibGUgdmFsdWUs
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdHlwZSkKIHsKICAgICBBU1NFUlQoc3RkOjpp
c2Zpbml0ZSh2YWx1ZSkpOwogCkBAIC0xMTgsNyArMTE4LDcgQEAgUGFzc1JlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVWYWx1ZShkb3VibGUgdmFsdWUsIENTU1ByaW1p
dGl2ZVYKICAgICByZXR1cm4gKmNhY2hlW2ludFZhbHVlXTsKIH0KIAotUGFzc1JlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUoY29uc3QgU3Ry
aW5nJiBmYW1pbHlOYW1lKQorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNy
ZWF0ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7CiAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgdmFsdWUgPSBtX2ZvbnRGYW1pbHlWYWx1ZUNhY2hlLmFk
ZChmYW1pbHlOYW1lLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCF2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaAppbmRleCAzMzk2NDUzLi41MjY4MGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlUG9vbC5oCkBAIC00NCwxOCArNDQsMTggQEAgY2xhc3MgQ1NTVmFsdWVQ
b29sIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQYXNzUmVm
UHRyPENTU1ZhbHVlTGlzdD4gY3JlYXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcm
KTsKLSAgICBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVGb250RmFtaWx5VmFsdWUo
Y29uc3QgU3RyaW5nJik7Ci0gICAgUGFzc1JlZjxDU1NJbmhlcml0ZWRWYWx1ZT4gY3JlYXRlSW5o
ZXJpdGVkVmFsdWUoKSB7IHJldHVybiBtX2luaGVyaXRlZFZhbHVlOyB9Ci0gICAgUGFzc1JlZjxD
U1NJbml0aWFsVmFsdWU+IGNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gbV9p
bXBsaWNpdEluaXRpYWxWYWx1ZTsgfQotICAgIFBhc3NSZWY8Q1NTSW5pdGlhbFZhbHVlPiBjcmVh
dGVFeHBsaWNpdEluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIG1fZXhwbGljaXRJbml0aWFsVmFsdWU7
IH0KLSAgICBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVJRCBpZGVudGlmaWVyKTsKLSAgICBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBj
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTUHJvcGVydHlJRCBpZGVudGlmaWVyKTsKLSAgICBQYXNz
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZhbHVl
KTsKLSAgICBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShkb3VibGUgdmFs
dWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpOwotICAgIFBhc3NSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNyZWF0ZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXMgdHlwZSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2
YWx1ZSwgdHlwZSk7IH0KLSAgICBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1
ZShjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHN0eWxlKTsgfQotICAgIFBhc3NSZWY8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZhbHVlKGNvbnN0IExlbmd0aFNpemUmIHZhbHVlLCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUodmFsdWUsIHN0eWxlKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBQYXNz
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShUIHZhbHVlKSB7IHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlKTsgfQorICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gY3JlYXRlRm9udEZhbWlseVZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIFJlZjxDU1NJbmhl
cml0ZWRWYWx1ZT4gY3JlYXRlSW5oZXJpdGVkVmFsdWUoKSB7IHJldHVybiBtX2luaGVyaXRlZFZh
bHVlLmNvcHlSZWYoKTsgfQorICAgIFJlZjxDU1NJbml0aWFsVmFsdWU+IGNyZWF0ZUltcGxpY2l0
SW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gbV9pbXBsaWNpdEluaXRpYWxWYWx1ZS5jb3B5UmVmKCk7
IH0KKyAgICBSZWY8Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVFeHBsaWNpdEluaXRpYWxWYWx1ZSgp
IHsgcmV0dXJuIG1fZXhwbGljaXRJbml0aWFsVmFsdWUuY29weVJlZigpOyB9CisgICAgUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVJRCBpZGVudGlm
aWVyKTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NQcm9wZXJ0eUlEIGlkZW50aWZpZXIpOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3Jl
YXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCByZ2JWYWx1ZSk7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBjcmVhdGVWYWx1ZShkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMpOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBlKSB7IHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsgfQorICAgIFJlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gY3JlYXRlVmFsdWUoY29uc3QgTGVuZ3RoJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBzdHls
ZSk7IH0KKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZhbHVlKGNvbnN0IExlbmd0
aFNpemUmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHN0eWxlKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZhbHVlKFQgdmFsdWUpIHsg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUpOyB9CiAKICAgICB2b2lkIGRy
YWluKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggOGQzNTFlNS4uNTcxZDg0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAg
LTI5Myw3ICsyOTMsNyBAQCBTdHlsZVNoZWV0Q29udGVudHMqIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6Y29udGV4dFN0eWxlU2hlZXQoKSBjb25zdAogICAgIHJldHVybiBjc3NTdHls
ZVNoZWV0ID8gJmNzc1N0eWxlU2hlZXQtPmNvbnRlbnRzKCkgOiAwOwogfQogCi1QYXNzUmVmPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y29w
eVByb3BlcnRpZXMoKSBjb25zdAorUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRpZXMoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3Byb3BlcnR5U2V0LT5tdXRhYmxlQ29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IDEwMGIzYWMu
LjMzYTAzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3ZlcnJpZGUg
ZmluYWw7CiAgICAgdmlydHVhbCBib29sIHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKSBv
dmVycmlkZSBmaW5hbDsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0
dWFsIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsOwogCiAgICAgQ1NTVmFsdWUqIGNsb25lQW5kQ2FjaGVGb3JDU1NPTShDU1NW
YWx1ZSopOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCAz
YjA5Y2NmLi4xNzdmZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApA
QCAtNTMsMTMgKzUzLDEzIEBAIHN0YXRpYyBib29sIGlzSW5pdGlhbE9ySW5oZXJpdChjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgIHJldHVybiB2YWx1ZS5sZW5ndGgoKSA9PSA3ICYmICh2YWx1ZSA9
PSAiaW5pdGlhbCIgfHwgdmFsdWUgPT0gImluaGVyaXQiKTsKIH0KIAotUGFzc1JlZjxJbW11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IEltbXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKGNvbnN0
IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKQorUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gSW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpjcmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2ln
bmVkIGNvdW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiB7CiAgICAgdm9pZCogc2xv
dCA9IFdURjo6ZmFzdE1hbGxvYyhzaXplRm9ySW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzV2l0aFBy
b3BlcnR5Q291bnQoY291bnQpKTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwg
c2xvdCkgSW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIGNvdW50LCBjc3NQYXJz
ZXJNb2RlKSk7CiB9CiAKLVBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBTdHlsZVBy
b3BlcnRpZXM6OmltbXV0YWJsZUNvcHlJZk5lZWRlZCgpIGNvbnN0CitSZWY8SW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBTdHlsZVByb3BlcnRpZXM6OmltbXV0YWJsZUNvcHlJZk5lZWRlZCgpIGNv
bnN0CiB7CiAgICAgaWYgKGlzPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4oKnRoaXMpKQogICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPihjb25zdF9jYXN0
PFN0eWxlUHJvcGVydGllcyY+KCp0aGlzKSk7CkBAIC0xMTA3LDcgKzExMDcsNyBAQCB2b2lkIE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OmNsZWFyKCkKIAogY29uc3QgdW5zaWduZWQgbnVtQmxvY2tQ
cm9wZXJ0aWVzID0gV1RGX0FSUkFZX0xFTkdUSChibG9ja1Byb3BlcnRpZXMpOwogCi1QYXNzUmVm
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6Y29weUJsb2NrUHJvcGVy
dGllcygpIGNvbnN0CitSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gU3R5bGVQcm9wZXJ0aWVz
Ojpjb3B5QmxvY2tQcm9wZXJ0aWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29weVByb3BlcnRp
ZXNJblNldChibG9ja1Byb3BlcnRpZXMsIG51bUJsb2NrUHJvcGVydGllcyk7CiB9CkBAIC0xMTg4
LDEyICsxMTg4LDEyIEBAIGJvb2wgU3R5bGVQcm9wZXJ0aWVzOjpwcm9wZXJ0eU1hdGNoZXMoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSoKICAgICByZXR1cm4gcHJvcGVy
dHlBdChmb3VuZFByb3BlcnR5SW5kZXgpLnZhbHVlKCktPmVxdWFscygqcHJvcGVydHlWYWx1ZSk7
CiB9CiAKLVBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gU3R5bGVQcm9wZXJ0aWVzOjpt
dXRhYmxlQ29weSgpIGNvbnN0CitSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gU3R5bGVQcm9w
ZXJ0aWVzOjptdXRhYmxlQ29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TXV0YWJsZVN0eWxlUHJvcGVydGllcygqdGhpcykpOwogfQogCi1QYXNzUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGllczo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBD
U1NQcm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK1JlZjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBTdHlsZVByb3BlcnRpZXM6OmNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3Qg
Q1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9y
PENTU1Byb3BlcnR5LCAyNTY+IGxpc3Q7CiAgICAgbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGxlbmd0aCk7CkBAIC0xMjUwLDEyICsxMjUwLDEyIEBAIHZvaWQgU3R5bGVQcm9wZXJ0aWVzOjpz
aG93U3R5bGUoKQogfQogI2VuZGlmCiAKLVBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
TXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKK1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpj
cmVhdGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE11dGFibGVTdHlsZVByb3BlcnRpZXMoY3NzUGFyc2VyTW9kZSkpOwogfQogCi1QYXNz
UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0
ZShjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgdW5zaWduZWQgY291bnQpCitSZWY8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKGNvbnN0
IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIGNvdW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKaW5kZXggZDFmZjZlNy4uOGQzMWYz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaApAQCAtOTIsMTYgKzkyLDE2IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoQ1NTUHJvcGVydHlJRCkgY29uc3Q7
CiAKLSAgICBQYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlCbG9ja1Byb3BlcnRp
ZXMoKSBjb25zdDsKKyAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weUJsb2NrUHJv
cGVydGllcygpIGNvbnN0OwogCiAgICAgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyTW9kZT4obV9jc3NQYXJzZXJNb2RlKTsg
fQogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+Jiwg
U3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkgY29uc3Q7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBQYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IG11dGFibGVDb3B5KCkg
Y29uc3Q7Ci0gICAgUGFzc1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IGltbXV0YWJsZUNv
cHlJZk5lZWRlZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBtdXRhYmxlQ29weSgpIGNvbnN0OworICAgIFJlZjxJbW11dGFibGVTdHlsZVBy
b3BlcnRpZXM+IGltbXV0YWJsZUNvcHlJZk5lZWRlZCgpIGNvbnN0OwogCi0gICAgUGFzc1JlZjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3Bl
cnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKKyAgICBSZWY8TXV0YWJsZVN0eWxl
UHJvcGVydGllcz4gY29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQs
IHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAgICAgCiAgICAgU3RyaW5nIGFzVGV4dCgpIGNvbnN0
OwogCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKIGNsYXNzIEltbXV0YWJsZVN0eWxlUHJv
cGVydGllcyA6IHB1YmxpYyBTdHlsZVByb3BlcnRpZXMgewogcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIH5JbW11dGFibGVTdHlsZVByb3BlcnRpZXMoKTsKLSAgICBzdGF0aWMgUGFzc1JlZjxJ
bW11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZShjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVy
dGllcywgdW5zaWduZWQgY291bnQsIENTU1BhcnNlck1vZGUpOworICAgIHN0YXRpYyBSZWY8SW1t
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRp
ZXMsIHVuc2lnbmVkIGNvdW50LCBDU1NQYXJzZXJNb2RlKTsKIAogICAgIHVuc2lnbmVkIHByb3Bl
cnR5Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2FycmF5U2l6ZTsgfQogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFwcm9wZXJ0eUNvdW50KCk7IH0KQEAgLTE4Miw4ICsxODIsOCBA
QCBpbmxpbmUgY29uc3QgU3R5bGVQcm9wZXJ0eU1ldGFkYXRhKiBJbW11dGFibGVTdHlsZVByb3Bl
cnRpZXM6Om1ldGFkYXRhQXJyYXkoKSBjbwogCiBjbGFzcyBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
IDogcHVibGljIFN0eWxlUHJvcGVydGllcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8
TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY3JlYXRlKENTU1BhcnNlck1vZGUgPSBDU1NRdWlya3NN
b2RlKTsKLSAgICBzdGF0aWMgUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGUo
Y29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2lnbmVkIGNvdW50KTsKKyAgICBzdGF0
aWMgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZShDU1NQYXJzZXJNb2RlID0gQ1NT
UXVpcmtzTW9kZSk7CisgICAgc3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjcmVh
dGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2lnbmVkIGNvdW50KTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIH5NdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBiMTRmYjcxLi5lNTM0ZmNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgaW5saW5lIHZvaWQgU3R5
bGVSZXNvbHZlcjo6U3RhdGU6OmluaXRGb3JTdHlsZVJlc29sdmUoRG9jdW1lbnQmIGRvY3VtZW50
LCBFbGVtZW4KICAgICB1cGRhdGVDb252ZXJzaW9uRGF0YSgpOwogfQogCi1pbmxpbmUgdm9pZCBT
dHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0U3R5bGUoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0U3R5bGUoUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogewogICAgIG1fc3R5bGUgPSBXVEY6Om1vdmUoc3R5bGUpOwogICAgIHVw
ZGF0ZUNvbnZlcnNpb25EYXRhKCk7CkBAIC03MzksNyArNzM5LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzQXRTaGFkb3dCb3VuZGFyeShjb25zdCBFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVy
biBwYXJlbnROb2RlICYmIHBhcmVudE5vZGUtPmlzU2hhZG93Um9vdCgpOwogfQogCi1QYXNzUmVm
PFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZWxl
bWVudCwgUmVuZGVyU3R5bGUqIGRlZmF1bHRQYXJlbnQsCitSZWY8UmVuZGVyU3R5bGU+IFN0eWxl
UmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTdHlsZSog
ZGVmYXVsdFBhcmVudCwKICAgICBTdHlsZVNoYXJpbmdCZWhhdmlvciBzaGFyaW5nQmVoYXZpb3Is
IFJ1bGVNYXRjaGluZ0JlaGF2aW9yIG1hdGNoaW5nQmVoYXZpb3IsIGNvbnN0IFJlbmRlclJlZ2lv
biogcmVnaW9uRm9yU3R5bGluZykKIHsKICAgICAvLyBPbmNlIGFuIGVsZW1lbnQgaGFzIGEgcmVu
ZGVyZXIsIHdlIGRvbid0IHRyeSB0byBkZXN0cm95IGl0LCBzaW5jZSBvdGhlcndpc2UgdGhlIHJl
bmRlcmVyCkBAIC04MTEsNyArODExLDcgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNv
bHZlcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlclN0eWwKICAgICBy
ZXR1cm4gc3RhdGUudGFrZVN0eWxlKCk7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFN0eWxl
UmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUoY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHls
ZSwgY29uc3QgU3R5bGVLZXlmcmFtZSoga2V5ZnJhbWUsIEtleWZyYW1lVmFsdWUmIGtleWZyYW1l
VmFsdWUpCitSZWY8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUo
Y29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgU3R5bGVLZXlmcmFtZSoga2V5
ZnJhbWUsIEtleWZyYW1lVmFsdWUmIGtleWZyYW1lVmFsdWUpCiB7CiAgICAgTWF0Y2hSZXN1bHQg
cmVzdWx0OwogICAgIHJlc3VsdC5hZGRNYXRjaGVkUHJvcGVydGllcyhrZXlmcmFtZS0+cHJvcGVy
dGllcygpKTsKQEAgLTk4NSw3ICs5ODUsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBTdHls
ZVJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgYwogICAg
IHJldHVybiBzdGF0ZS50YWtlU3R5bGUoKTsKIH0KIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gU3R5
bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpCitSZWY8UmVuZGVyU3R5bGU+
IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KQogewogICAgIG1fc3Rh
dGUuaW5pdEZvclN0eWxlUmVzb2x2ZShtX2RvY3VtZW50LCBtX2RvY3VtZW50LmRvY3VtZW50RWxl
bWVudCgpLCBtX2RvY3VtZW50LnJlbmRlclN0eWxlKCkpOwogCkBAIC0xMDI1LDcgKzEwMjUsNyBA
QCBQYXNzUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBh
Z2VJbmRleCkKICAgICByZXR1cm4gbV9zdGF0ZS50YWtlU3R5bGUoKTsKIH0KIAotUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpCitSZWY8
UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVsZW1lbnQoKQogewog
ICAgIG1fc3RhdGUuc2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZSgpKTsKICAgICAvLyBNYWtl
IHN1cmUgb3VyIGZvbnRzIGFyZSBpbml0aWFsaXplZCBpZiB3ZSBkb24ndCBpbmhlcml0IHRoZW0g
ZnJvbSBvdXIgcGFyZW50IHN0eWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXgg
MDcyNjlkYi4uZDg4Njc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0xNDcs
MTUgKzE0NywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXNoUGFyZW50RWxlbWVudChFbGVtZW50
Kik7CiAgICAgdm9pZCBwb3BQYXJlbnRFbGVtZW50KEVsZW1lbnQqKTsKIAotICAgIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlLCBTdHlsZVNoYXJpbmdCZWhhdmlvciA9IEFsbG93U3R5bGVTaGFyaW5nLAorICAgIFJl
ZjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUsIFN0eWxlU2hhcmluZ0JlaGF2aW9yID0gQWxsb3dTdHlsZVNoYXJpbmcsCiAgICAg
ICAgIFJ1bGVNYXRjaGluZ0JlaGF2aW9yID0gTWF0Y2hBbGxSdWxlcywgY29uc3QgUmVuZGVyUmVn
aW9uKiByZWdpb25Gb3JTdHlsaW5nID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGtleWZyYW1lU3R5
bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIEtleWZyYW1lTGlz
dCYpOwogCiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50
KEVsZW1lbnQqLCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmLCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUpOwogCi0gICAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JQYWdlKGludCBwYWdl
SW5kZXgpOwotICAgIFBhc3NSZWY8UmVuZGVyU3R5bGU+IGRlZmF1bHRTdHlsZUZvckVsZW1lbnQo
KTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KTsKKyAg
ICBSZWY8UmVuZGVyU3R5bGU+IGRlZmF1bHRTdHlsZUZvckVsZW1lbnQoKTsKIAogICAgIFJlbmRl
clN0eWxlKiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3R5bGUoKTsgfQogICAgIFJl
bmRlclN0eWxlKiBwYXJlbnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucGFyZW50U3R5
bGUoKTsgfQpAQCAtMTgxLDcgKzE4MSw3IEBAIHByaXZhdGU6CiAgICAgU3R5bGVkRWxlbWVudCog
ZmluZFNpYmxpbmdGb3JTdHlsZVNoYXJpbmcoTm9kZSosIHVuc2lnbmVkJiBjb3VudCkgY29uc3Q7
CiAgICAgYm9vbCBjYW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQoU3R5bGVkRWxlbWVudCopIGNvbnN0
OwogCi0gICAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5k
ZXJTdHlsZSosIGNvbnN0IFN0eWxlS2V5ZnJhbWUqLCBLZXlmcmFtZVZhbHVlJik7CisgICAgUmVm
PFJlbmRlclN0eWxlPiBzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3Qg
U3R5bGVLZXlmcmFtZSosIEtleWZyYW1lVmFsdWUmKTsKIAogcHVibGljOgogICAgIC8vIFRoZXNl
IG1ldGhvZHMgd2lsbCBnaXZlIGJhY2sgdGhlIHNldCBvZiBydWxlcyB0aGF0IG1hdGNoZWQgZm9y
IGEgZ2l2ZW4gZWxlbWVudCAob3IgYSBwc2V1ZG8tZWxlbWVudCkuCkBAIC0zNjMsMTEgKzM2Mywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZWxlbWVudC0+ZG9jdW1lbnQoKTsgfQogICAgICAgICBFbGVtZW50KiBlbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAgICAgICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlZEVsZW1lbnQ7IH0KLSAgICAgICAgdm9pZCBz
ZXRTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgICAgIHZvaWQgc2V0U3R5bGUoUmVm
PFJlbmRlclN0eWxlPiYmKTsKICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQotICAgICAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiB0YWtl
U3R5bGUoKSB7IHJldHVybiBtX3N0eWxlLnJlbGVhc2VOb25OdWxsKCk7IH0KKyAgICAgICAgUmVm
PFJlbmRlclN0eWxlPiB0YWtlU3R5bGUoKSB7IHJldHVybiBtX3N0eWxlLnJlbGVhc2VOb25OdWxs
KCk7IH0KIAotICAgICAgICB2b2lkIHNldFBhcmVudFN0eWxlKFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHBhcmVudFN0eWxlKSB7IG1fcGFyZW50U3R5bGUgPSBXVEY6Om1vdmUocGFyZW50U3R5bGUpOyB9
CisgICAgICAgIHZvaWQgc2V0UGFyZW50U3R5bGUoUmVmPFJlbmRlclN0eWxlPiYmIHBhcmVudFN0
eWxlKSB7IG1fcGFyZW50U3R5bGUgPSBXVEY6Om1vdmUocGFyZW50U3R5bGUpOyB9CiAgICAgICAg
IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50U3R5bGUu
Z2V0KCk7IH0KICAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RFbGVtZW50U3R5bGUoKSBjb25zdCB7
IHJldHVybiBtX3Jvb3RFbGVtZW50U3R5bGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcApp
bmRleCAyMTdkNjAzLi4xMTRlNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmNwcApAQCAtMTAx
LDcgKzEwMSw3IEBAIHZvaWQgU3R5bGVSdWxlQmFzZTo6ZGVzdHJveSgpCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLVBhc3NSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxlQmFzZTo6
Y29weSgpIGNvbnN0CitSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxlQmFzZTo6Y29weSgpIGNv
bnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKICAgICBjYXNlIFN0eWxlOgpAQCAtMTM3LDcg
KzEzNyw3IEBAIFBhc3NSZWY8U3R5bGVSdWxlQmFzZT4gU3R5bGVSdWxlQmFzZTo6Y29weSgpIGNv
bnN0CiAgICAgfQogICAgIENSQVNIKCk7CiAgICAgLy8gSEFDSzogRUZMIHdvbid0IGJ1aWxkIHdp
dGhvdXQgdGhpcyAob2xkIEdDQyB3aXRoIGNyYXBweSAtV2Vycm9yPXJldHVybi10eXBlKQotICAg
IHJldHVybiBQYXNzUmVmPFN0eWxlUnVsZUJhc2U+KCpzdGF0aWNfY2FzdDxTdHlsZVJ1bGVCYXNl
Kj4obnVsbHB0cikpOworICAgIHJldHVybiBSZWY8U3R5bGVSdWxlQmFzZT4oKnN0YXRpY19jYXN0
PFN0eWxlUnVsZUJhc2UqPihudWxscHRyKSk7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTUnVsZT4gU3R5
bGVSdWxlQmFzZTo6Y3JlYXRlQ1NTT01XcmFwcGVyKENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0
LCBDU1NSdWxlKiBwYXJlbnRSdWxlKSBjb25zdApAQCAtMTk1LDcgKzE5NSw3IEBAIHVuc2lnbmVk
IFN0eWxlUnVsZTo6YXZlcmFnZVNpemVJbkJ5dGVzKCkKICAgICByZXR1cm4gc2l6ZW9mKFN0eWxl
UnVsZSkgKyBzaXplb2YoQ1NTU2VsZWN0b3IpICsgU3R5bGVQcm9wZXJ0aWVzOjphdmVyYWdlU2l6
ZUluQnl0ZXMoKTsKIH0KIAotU3R5bGVSdWxlOjpTdHlsZVJ1bGUoaW50IHNvdXJjZUxpbmUsIFBh
c3NSZWY8U3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKQorU3R5bGVSdWxlOjpTdHlsZVJ1bGUo
aW50IHNvdXJjZUxpbmUsIFJlZjxTdHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKICAgICA6
IFN0eWxlUnVsZUJhc2UoU3R5bGUsIHNvdXJjZUxpbmUpCiAgICAgLCBtX3Byb3BlcnRpZXMoV1RG
Ojptb3ZlKHByb3BlcnRpZXMpKQogewpAQCAtMjE5LDcgKzIxOSw3IEBAIE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmIFN0eWxlUnVsZTo6bXV0YWJsZVByb3BlcnRpZXMoKQogICAgIHJldHVybiBkb3du
Y2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPihtX3Byb3BlcnRpZXMuZ2V0KCkpOwogfQogCi1Q
YXNzUmVmPFN0eWxlUnVsZT4gU3R5bGVSdWxlOjpjcmVhdGUoaW50IHNvdXJjZUxpbmUsIGNvbnN0
IFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+JiBzZWxlY3RvcnMsIFBhc3NSZWY8U3R5bGVQcm9w
ZXJ0aWVzPiBwcm9wZXJ0aWVzKQorUmVmPFN0eWxlUnVsZT4gU3R5bGVSdWxlOjpjcmVhdGUoaW50
IHNvdXJjZUxpbmUsIGNvbnN0IFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+JiBzZWxlY3RvcnMs
IFJlZjxTdHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKIHsKICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighc2VsZWN0b3JzLmlzRW1wdHkoKSk7CiAgICAgQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yTGlzdEFycmF5ID0gcmVpbnRlcnByZXRfY2FzdDxDU1NTZWxlY3Rvcio+KGZh
c3RNYWxsb2Moc2l6ZW9mKENTU1NlbGVjdG9yKSAqIHNlbGVjdG9ycy5zaXplKCkpKTsKQEAgLTI1
Nyw3ICsyNTcsNyBAQCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0eWxlUnVsZTo6c3BsaXRJ
bnRvTXVsdGlwbGVSdWxlc1dpdGhNYXhpbXVtU2VsZWN0b3JDbwogICAgIHJldHVybiBydWxlczsK
IH0KIAotU3R5bGVSdWxlUGFnZTo6U3R5bGVSdWxlUGFnZShQYXNzUmVmPFN0eWxlUHJvcGVydGll
cz4gcHJvcGVydGllcykKK1N0eWxlUnVsZVBhZ2U6OlN0eWxlUnVsZVBhZ2UoUmVmPFN0eWxlUHJv
cGVydGllcz4mJiBwcm9wZXJ0aWVzKQogICAgIDogU3R5bGVSdWxlQmFzZShQYWdlKQogICAgICwg
bV9wcm9wZXJ0aWVzKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkKIHsKQEAgLTI4MSw3ICsyODEsNyBA
QCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBTdHlsZVJ1bGVQYWdlOjptdXRhYmxlUHJvcGVydGll
cygpCiAgICAgcmV0dXJuIGRvd25jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXM+KG1fcHJvcGVy
dGllcy5nZXQoKSk7CiB9CiAKLVN0eWxlUnVsZUZvbnRGYWNlOjpTdHlsZVJ1bGVGb250RmFjZShQ
YXNzUmVmPFN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykKK1N0eWxlUnVsZUZvbnRGYWNlOjpT
dHlsZVJ1bGVGb250RmFjZShSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCiAgICAg
OiBTdHlsZVJ1bGVCYXNlKEZvbnRGYWNlLCAwKQogICAgICwgbV9wcm9wZXJ0aWVzKFdURjo6bW92
ZShwcm9wZXJ0aWVzKSkKIHsKQEAgLTMxOCw3ICszMTgsNyBAQCBTdHlsZVJ1bGVHcm91cDo6U3R5
bGVSdWxlR3JvdXAoY29uc3QgU3R5bGVSdWxlR3JvdXAmIG8pCiAgICAgICAgIG1fY2hpbGRSdWxl
cy51bmNoZWNrZWRBcHBlbmQoby5tX2NoaWxkUnVsZXNbaV0tPmNvcHkoKSk7CiB9CiAKLXZvaWQg
U3R5bGVSdWxlR3JvdXA6OndyYXBwZXJJbnNlcnRSdWxlKHVuc2lnbmVkIGluZGV4LCBQYXNzUmVm
PFN0eWxlUnVsZUJhc2U+IHJ1bGUpCit2b2lkIFN0eWxlUnVsZUdyb3VwOjp3cmFwcGVySW5zZXJ0
UnVsZSh1bnNpZ25lZCBpbmRleCwgUmVmPFN0eWxlUnVsZUJhc2U+JiYgcnVsZSkKIHsKICAgICBt
X2NoaWxkUnVsZXMuaW5zZXJ0KGluZGV4LCBXVEY6Om1vdmUocnVsZSkpOwogfQpAQCAtMzcxLDcg
KzM3MSw3IEBAIFN0eWxlUnVsZVJlZ2lvbjo6U3R5bGVSdWxlUmVnaW9uKGNvbnN0IFN0eWxlUnVs
ZVJlZ2lvbiYgbykKIAogCiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKLVN0eWxl
UnVsZVZpZXdwb3J0OjpTdHlsZVJ1bGVWaWV3cG9ydChQYXNzUmVmPFN0eWxlUHJvcGVydGllcz4g
cHJvcGVydGllcykKK1N0eWxlUnVsZVZpZXdwb3J0OjpTdHlsZVJ1bGVWaWV3cG9ydChSZWY8U3R5
bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCiAgICAgOiBTdHlsZVJ1bGVCYXNlKFZpZXdwb3J0
LCAwKQogICAgICwgbV9wcm9wZXJ0aWVzKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGUuaAppbmRleCAwY2FlN2JhLi5jOTk1MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVs
ZS5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIGJvb2wgaXNJbXBvcnRS
dWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEltcG9ydDsgfQogCi0gICAgUGFzc1JlZjxT
dHlsZVJ1bGVCYXNlPiBjb3B5KCkgY29uc3Q7CisgICAgUmVmPFN0eWxlUnVsZUJhc2U+IGNvcHko
KSBjb25zdDsKIAogICAgIGludCBzb3VyY2VMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VM
aW5lOyB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogY2xhc3MgU3R5bGVSdWxlIDog
cHVibGljIFN0eWxlUnVsZUJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlUnVsZT4gY3JlYXRlKGludCBzb3VyY2VMaW5l
LCBQYXNzUmVmPFN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykKKyAgICBzdGF0aWMgUmVmPFN0
eWxlUnVsZT4gY3JlYXRlKGludCBzb3VyY2VMaW5lLCBSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHBy
b3BlcnRpZXMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGUo
c291cmNlTGluZSwgV1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7CiAgICAgfQpAQCAtMTE4LDE3ICsx
MTgsMTcgQEAgcHVibGljOgogICAgIHZvaWQgd3JhcHBlckFkb3B0U2VsZWN0b3JMaXN0KENTU1Nl
bGVjdG9yTGlzdCYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0ID0gV1RGOjptb3ZlKHNlbGVj
dG9ycyk7IH0KICAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JBcnJheShDU1NTZWxlY3Rvciog
c2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JBcnJheShzZWxlY3RvcnMp
OyB9CiAKLSAgICBQYXNzUmVmPFN0eWxlUnVsZT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVSdWxlKCp0aGlzKSk7IH0KKyAgICBSZWY8U3R5bGVSdWxlPiBjb3B5KCkg
Y29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGUoKnRoaXMpKTsgfQogCiAgICAg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBzcGxpdEludG9NdWx0aXBsZVJ1bGVzV2l0aE1heGlt
dW1TZWxlY3RvckNvbXBvbmVudENvdW50KHVuc2lnbmVkKSBjb25zdDsKIAogICAgIHN0YXRpYyB1
bnNpZ25lZCBhdmVyYWdlU2l6ZUluQnl0ZXMoKTsKIAogcHJpdmF0ZToKLSAgICBTdHlsZVJ1bGUo
aW50IHNvdXJjZUxpbmUsIFBhc3NSZWY8U3R5bGVQcm9wZXJ0aWVzPik7CisgICAgU3R5bGVSdWxl
KGludCBzb3VyY2VMaW5lLCBSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmKTsKICAgICBTdHlsZVJ1bGUo
Y29uc3QgU3R5bGVSdWxlJik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1bGU+IGNyZWF0
ZShpbnQgc291cmNlTGluZSwgY29uc3QgVmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4mLCBQYXNz
UmVmPFN0eWxlUHJvcGVydGllcz4pOworICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlPiBjcmVhdGUo
aW50IHNvdXJjZUxpbmUsIGNvbnN0IFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+JiwgUmVmPFN0
eWxlUHJvcGVydGllcz4mJik7CiAKICAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBtX3Byb3BlcnRp
ZXM7CiAgICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0b3JMaXN0OwpAQCAtMTQyLDE4ICsxNDIs
MTggQEAgaW5saW5lIGNvbnN0IFN0eWxlUnVsZSogdG9TdHlsZVJ1bGUoY29uc3QgU3R5bGVSdWxl
QmFzZSogcnVsZSkKIAogY2xhc3MgU3R5bGVSdWxlRm9udEZhY2UgOiBwdWJsaWMgU3R5bGVSdWxl
QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVSdWxlRm9udEZhY2U+IGNy
ZWF0ZShQYXNzUmVmPFN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZVJ1bGVGb250RmFjZShXVEY6Om1vdmUocHJvcGVydGllcykpKTsgfQorICAg
IHN0YXRpYyBSZWY8U3R5bGVSdWxlRm9udEZhY2U+IGNyZWF0ZShSZWY8U3R5bGVQcm9wZXJ0aWVz
PiYmIHByb3BlcnRpZXMpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlRm9udEZhY2Uo
V1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7IH0KICAgICAKICAgICB+U3R5bGVSdWxlRm9udEZhY2Uo
KTsKIAogICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvcGVydGllczsgfQogICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIG11dGFibGVQ
cm9wZXJ0aWVzKCk7CiAKLSAgICBQYXNzUmVmPFN0eWxlUnVsZUZvbnRGYWNlPiBjb3B5KCkgY29u
c3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVGb250RmFjZSgqdGhpcykpOyB9Cisg
ICAgUmVmPFN0eWxlUnVsZUZvbnRGYWNlPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZVJ1bGVGb250RmFjZSgqdGhpcykpOyB9CiAKIAogcHJpdmF0ZToKLSAgICBTdHls
ZVJ1bGVGb250RmFjZShQYXNzUmVmPFN0eWxlUHJvcGVydGllcz4pOworICAgIGV4cGxpY2l0IFN0
eWxlUnVsZUZvbnRGYWNlKFJlZjxTdHlsZVByb3BlcnRpZXM+JiYpOwogICAgIFN0eWxlUnVsZUZv
bnRGYWNlKGNvbnN0IFN0eWxlUnVsZUZvbnRGYWNlJik7CiAKICAgICBSZWY8U3R5bGVQcm9wZXJ0
aWVzPiBtX3Byb3BlcnRpZXM7CkBAIC0xNjEsNyArMTYxLDcgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
U3R5bGVSdWxlUGFnZSA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZjxTdHlsZVJ1bGVQYWdlPiBjcmVhdGUoUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+
IHByb3BlcnRpZXMpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlUGFnZShXVEY6Om1v
dmUocHJvcGVydGllcykpKTsgfQorICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlUGFnZT4gY3JlYXRl
KFJlZjxTdHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVJ1bGVQYWdlKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkpOyB9CiAKICAgICB+U3R5bGVS
dWxlUGFnZSgpOwogCkBAIC0xNzIsMTAgKzE3MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXJz
ZXJBZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+PiYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3Io
c2VsZWN0b3JzKTsgfQogICAgIHZvaWQgd3JhcHBlckFkb3B0U2VsZWN0b3JMaXN0KENTU1NlbGVj
dG9yTGlzdCYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0ID0gV1RGOjptb3ZlKHNlbGVjdG9y
cyk7IH0KIAotICAgIFBhc3NSZWY8U3R5bGVSdWxlUGFnZT4gY29weSgpIGNvbnN0IHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlUGFnZSgqdGhpcykpOyB9CisgICAgUmVmPFN0eWxlUnVs
ZVBhZ2U+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVBhZ2Uo
KnRoaXMpKTsgfQogCiBwcml2YXRlOgotICAgIFN0eWxlUnVsZVBhZ2UoUGFzc1JlZjxTdHlsZVBy
b3BlcnRpZXM+KTsKKyAgICBleHBsaWNpdCBTdHlsZVJ1bGVQYWdlKFJlZjxTdHlsZVByb3BlcnRp
ZXM+JiYpOwogICAgIFN0eWxlUnVsZVBhZ2UoY29uc3QgU3R5bGVSdWxlUGFnZSYpOwogICAgIAog
ICAgIFJlZjxTdHlsZVByb3BlcnRpZXM+IG1fcHJvcGVydGllczsKQEAgLTE4Niw3ICsxODYsNyBA
QCBjbGFzcyBTdHlsZVJ1bGVHcm91cCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKIHB1YmxpYzoK
ICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgY2hpbGRSdWxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fY2hpbGRSdWxlczsgfQogICAgIAotICAgIHZvaWQgd3JhcHBlckluc2Vy
dFJ1bGUodW5zaWduZWQsIFBhc3NSZWY8U3R5bGVSdWxlQmFzZT4pOworICAgIHZvaWQgd3JhcHBl
ckluc2VydFJ1bGUodW5zaWduZWQsIFJlZjxTdHlsZVJ1bGVCYXNlPiYmKTsKICAgICB2b2lkIHdy
YXBwZXJSZW1vdmVSdWxlKHVuc2lnbmVkKTsKICAgICAKIHByb3RlY3RlZDoKQEAgLTE5OSwxNCAr
MTk5LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0eWxlUnVsZU1lZGlhIDogcHVibGljIFN0eWxl
UnVsZUdyb3VwIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1bGVNZWRpYT4g
Y3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEsIFZlY3RvcjxSZWZQdHI8U3R5
bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQorICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlTWVkaWE+
IGNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhLCBWZWN0b3I8UmVmUHRyPFN0
eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlUnVsZU1lZGlhKG1lZGlhLCBhZG9wdFJ1bGVzKSk7CiAgICAgfQogCiAgICAg
TWVkaWFRdWVyeVNldCogbWVkaWFRdWVyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVF1ZXJp
ZXMuZ2V0KCk7IH0KIAotICAgIFBhc3NSZWY8U3R5bGVSdWxlTWVkaWE+IGNvcHkoKSBjb25zdCB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZU1lZGlhKCp0aGlzKSk7IH0KKyAgICBSZWY8
U3R5bGVSdWxlTWVkaWE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
UnVsZU1lZGlhKCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKICAgICBTdHlsZVJ1bGVNZWRpYShQYXNz
UmVmUHRyPE1lZGlhUXVlcnlTZXQ+LCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRv
cHRSdWxlcyk7CkBAIC0yMTcsMTQgKzIxNywxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBTdHlsZVJ1
bGVTdXBwb3J0cyA6IHB1YmxpYyBTdHlsZVJ1bGVHcm91cCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWY8U3R5bGVSdWxlU3VwcG9ydHM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbmRpdGlv
blRleHQsIGJvb2wgY29uZGl0aW9uSXNTdXBwb3J0ZWQsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
QmFzZT4+JiBhZG9wdFJ1bGVzKQorICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlU3VwcG9ydHM+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGNvbmRpdGlvblRleHQsIGJvb2wgY29uZGl0aW9uSXNTdXBwb3J0
ZWQsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlU3VwcG9ydHMoY29uZGl0aW9uVGV4
dCwgY29uZGl0aW9uSXNTdXBwb3J0ZWQsIGFkb3B0UnVsZXMpKTsKICAgICB9CiAKICAgICBTdHJp
bmcgY29uZGl0aW9uVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZGl0aW9uVGV4dDsgfQogICAg
IGJvb2wgY29uZGl0aW9uSXNTdXBwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbmRpdGlvbklz
U3VwcG9ydGVkOyB9Ci0gICAgUGFzc1JlZjxTdHlsZVJ1bGVTdXBwb3J0cz4gY29weSgpIGNvbnN0
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlU3VwcG9ydHMoKnRoaXMpKTsgfQorICAg
IFJlZjxTdHlsZVJ1bGVTdXBwb3J0cz4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVSdWxlU3VwcG9ydHMoKnRoaXMpKTsgfQogCiBwcml2YXRlOgogICAgIFN0eWxlUnVs
ZVN1cHBvcnRzKGNvbnN0IFN0cmluZyYgY29uZGl0aW9uVGV4dCwgYm9vbCBjb25kaXRpb25Jc1N1
cHBvcnRlZCwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOwpAQCAt
MjM2LDE0ICsyMzYsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgU3R5bGVSdWxlUmVnaW9uIDogcHVi
bGljIFN0eWxlUnVsZUdyb3VwIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1
bGVSZWdpb24+IGNyZWF0ZShWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9y
Pj4qIHNlbGVjdG9ycywgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMp
CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVSZWdpb24+IGNyZWF0ZShWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHNlbGVjdG9ycywgVmVjdG9yPFJlZlB0cjxTdHls
ZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZVJ1bGVSZWdpb24oc2VsZWN0b3JzLCBhZG9wdFJ1bGVzKSk7CiAgICAgfQogCiAg
ICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdG9yTGlzdDsgfQogCi0gICAgUGFzc1JlZjxTdHlsZVJ1bGVSZWdpb24+IGNvcHkoKSBj
b25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVJlZ2lvbigqdGhpcykpOyB9Cisg
ICAgUmVmPFN0eWxlUnVsZVJlZ2lvbj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVSdWxlUmVnaW9uKCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKICAgICBTdHlsZVJ1bGVS
ZWdpb24oVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiwgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOwpAQCAtMjU1LDE3ICsyNTUsMTcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogY2xhc3MgU3R5
bGVSdWxlVmlld3BvcnQgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWY8U3R5bGVSdWxlVmlld3BvcnQ+IGNyZWF0ZShQYXNzUmVmPFN0eWxlUHJvcGVy
dGllcz4gcHJvcGVydGllcykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVWaWV3cG9y
dChXVEY6Om1vdmUocHJvcGVydGllcykpKTsgfQorICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlVmll
d3BvcnQ+IGNyZWF0ZShSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlVmlld3BvcnQoV1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7
IH0KIAogICAgIH5TdHlsZVJ1bGVWaWV3cG9ydCgpOwogCiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0
aWVzJiBwcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmdldCgpOyB9CiAg
ICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMoKTsKIAotICAgIFBh
c3NSZWY8U3R5bGVSdWxlVmlld3BvcnQ+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFN0eWxlUnVsZVZpZXdwb3J0KCp0aGlzKSk7IH0KKyAgICBSZWY8U3R5bGVSdWxlVmlld3Bv
cnQ+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVZpZXdwb3J0
KCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKLSAgICBTdHlsZVJ1bGVWaWV3cG9ydChQYXNzUmVmPFN0
eWxlUHJvcGVydGllcz4pOworICAgIGV4cGxpY2l0IFN0eWxlUnVsZVZpZXdwb3J0KFJlZjxTdHls
ZVByb3BlcnRpZXM+JiYpOwogICAgIFN0eWxlUnVsZVZpZXdwb3J0KGNvbnN0IFN0eWxlUnVsZVZp
ZXdwb3J0Jik7CiAKICAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBtX3Byb3BlcnRpZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCmluZGV4IGFlMTUxNDAuLmQxNDAyNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxTdHlsZVJ1bGVJbXBvcnQ+IFN0eWxlUnVs
ZUltcG9ydDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaHJlZiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5
U2V0PiBtZWRpYSkKK1JlZjxTdHlsZVJ1bGVJbXBvcnQ+IFN0eWxlUnVsZUltcG9ydDo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgaHJlZiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVJbXBvcnQoaHJlZiwgbWVkaWEpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaAppbmRleCAyOGZhY2U3Li5iYmE5MWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oCkBAIC0zNSw3ICszNSw3IEBAIGNs
YXNzIFN0eWxlU2hlZXRDb250ZW50czsKIGNsYXNzIFN0eWxlUnVsZUltcG9ydCA6IHB1YmxpYyBT
dHlsZVJ1bGVCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1bGVJbXBvcnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGhy
ZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOworICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxl
SW1wb3J0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBocmVmLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlT
ZXQ+KTsKIAogICAgIH5TdHlsZVJ1bGVJbXBvcnQoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0Q29udGVudHMuaAppbmRleCA3Njk4YTAzLi42MmE5M2Q1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCkBAIC00MSwxNSArNDEsMTUgQEAgY2xhc3MgU3R5
bGVSdWxlSW1wb3J0OwogCiBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHMgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdHlsZVNoZWV0Q29udGVudHM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxT
dHlsZVNoZWV0Q29udGVudHM+IGNyZWF0ZShjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0
ID0gQ1NTUGFyc2VyQ29udGV4dChDU1NTdHJpY3RNb2RlKSkKKyAgICBzdGF0aWMgUmVmPFN0eWxl
U2hlZXRDb250ZW50cz4gY3JlYXRlKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQgPSBD
U1NQYXJzZXJDb250ZXh0KENTU1N0cmljdE1vZGUpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVTaGVldENvbnRlbnRzKDAsIFN0cmluZygpLCBjb250ZXh0KSk7CiAg
ICAgfQotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCisg
ICAgc3RhdGljIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGVldENvbnRlbnRzKDAsIG9yaWdpbmFsVVJM
LCBjb250ZXh0KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4gY3JlYXRlKFN0eWxlUnVsZUltcG9ydCogb3duZXJSdWxlLCBjb25zdCBTdHJpbmcmIG9yaWdp
bmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8
U3R5bGVTaGVldENvbnRlbnRzPiBjcmVhdGUoU3R5bGVSdWxlSW1wb3J0KiBvd25lclJ1bGUsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNoZWV0Q29udGVudHMo
b3duZXJSdWxlLCBvcmlnaW5hbFVSTCwgY29udGV4dCkpOwogICAgIH0KQEAgLTEyMyw3ICsxMjMs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3cmFwcGVySW5zZXJ0UnVsZShQYXNzUmVmUHRyPFN0eWxl
UnVsZUJhc2U+LCB1bnNpZ25lZCBpbmRleCk7CiAgICAgdm9pZCB3cmFwcGVyRGVsZXRlUnVsZSh1
bnNpZ25lZCBpbmRleCk7CiAKLSAgICBQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gY29weSgp
IGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGVldENvbnRlbnRzKCp0aGlzKSk7
IH0KKyAgICBSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZVNoZWV0Q29udGVudHMoKnRoaXMpKTsgfQogCiAgICAgdm9pZCByZWdp
c3RlckNsaWVudChDU1NTdHlsZVNoZWV0Kik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQ2xpZW50KENT
U1N0eWxlU2hlZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NG
aWx0ZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgK
aW5kZXggZGFmM2FmYi4uOThmZjNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU0ZpbHRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0Zp
bHRlclZhbHVlLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgICAgICBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uCiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmPFdlYktpdENTU0Zp
bHRlclZhbHVlPiBjcmVhdGUoRmlsdGVyT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHN0YXRpYyBS
ZWY8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IGNyZWF0ZShGaWx0ZXJPcGVyYXRpb25UeXBlIHR5cGUp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NGaWx0ZXJWYWx1
ZSh0eXBlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1Jlc291cmNlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZh
bHVlLmgKaW5kZXggNDU3N2M0OS4uMjA5ODNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1Jlc291cmNlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTUmVzb3VyY2VWYWx1ZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgV2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZT4gY3JlYXRl
KFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlc291cmNlVmFsdWUpCisgICAgc3RhdGljIFJlZjxXZWJL
aXRDU1NSZXNvdXJjZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVzb3VyY2VW
YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdENTU1Jlc291
cmNlVmFsdWUocmVzb3VyY2VWYWx1ZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU1RyYW5zZm9ybVZhbHVlLmgKaW5kZXggOWRlYzk1Ni4uYzFjOTFjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogICAgICAgICBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbgogICAgIH07CiAK
LSAgICBzdGF0aWMgUGFzc1JlZjxXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZT4gY3JlYXRlKFRyYW5z
Zm9ybU9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlPiBjcmVhdGUoVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSB0eXBlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUodHlwZSkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCmluZGV4IDdlOTIzZWUuLmQ1MjFjZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBD
b250YWluZXJOb2RlOwogCiBjbGFzcyBFbXB0eU5vZGVMaXN0IGZpbmFsIDogcHVibGljIE5vZGVM
aXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxFbXB0eU5vZGVMaXN0PiBjcmVhdGUo
Tm9kZSYgb3duZXIpCisgICAgc3RhdGljIFJlZjxFbXB0eU5vZGVMaXN0PiBjcmVhdGUoTm9kZSYg
b3duZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eU5vZGVMaXN0
KG93bmVyKSk7CiAgICAgfQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBDaGls
ZE5vZGVMaXN0IGZpbmFsIDogcHVibGljIE5vZGVMaXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZjxDaGlsZE5vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcGFyZW50KQorICAg
IHN0YXRpYyBSZWY8Q2hpbGROb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUmIHBhcmVudCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENoaWxkTm9kZUxpc3QocGFyZW50
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuY3BwCmluZGV4IGQyNDMzNmEu
LjBkMDE4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmPENsYXNzTm9kZUxpc3Q+IENs
YXNzTm9kZUxpc3Q6OmNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBjbGFzc05hbWVzKQorUmVmPENsYXNzTm9kZUxpc3Q+IENsYXNzTm9kZUxpc3Q6OmNy
ZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05h
bWVzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENsYXNzTm9kZUxpc3Qocm9vdE5vZGUs
IGNsYXNzTmFtZXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc05v
ZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5oCmluZGV4IDkzMzI2
MjMuLmJlODg4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuaApAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENsYXNzTm9kZUxpc3QgZmluYWwgOiBw
dWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PENsYXNzTm9kZUxpc3Q+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZjxDbGFzc05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lcyk7CisgICAgc3RhdGljIFJlZjxDbGFzc05vZGVMaXN0
PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lcyk7
CiAKICAgICB2aXJ0dWFsIH5DbGFzc05vZGVMaXN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IDI5ZTBjZDUuLjYzMzczN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTkw
Myw3ICsxOTAzLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKERvY3VtZW50OjpSdW5Qb3N0TGF5b3V0VGFza3MKICAgICBtX2lnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cyA9IG9sZElnbm9yZTsKIH0KIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gRG9j
dW1lbnQ6OnN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKEVsZW1lbnQq
IGVsZW1lbnQpCitSZWY8UmVuZGVyU3R5bGU+IERvY3VtZW50OjpzdHlsZUZvckVsZW1lbnRJZ25v
cmluZ1BlbmRpbmdTdHlsZXNoZWV0cyhFbGVtZW50KiBlbGVtZW50KQogewogICAgIEFTU0VSVF9B
UkcoZWxlbWVudCwgJmVsZW1lbnQtPmRvY3VtZW50KCkgPT0gdGhpcyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggOTRhNDM4Ni4uNWViMDc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTYw
NCw3ICs2MDQsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyhSdW5Qb3N0TGF5b3V0VGFza3MgPSBS
dW5Qb3N0TGF5b3V0VGFza3M6OkFzeW5jaHJvbm91c2x5KTsKIAotICAgIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKEVsZW1lbnQq
KTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0
eWxlc2hlZXRzKEVsZW1lbnQqKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBwYWdlIGJveCAo
bWFyZ2luIGJveGVzIGFuZCBwYWdlIGJvcmRlcnMpIGlzIHZpc2libGUuCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmNwcAppbmRleCAyZjBlZTAzLi5i
NWY3MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTaGFyZWRPYmpl
Y3RQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTaGFyZWRPYmplY3RQ
b29sLmNwcApAQCAtNDMsNyArNDMsNyBAQCBpbmxpbmUgYm9vbCBoYXNTYW1lQXR0cmlidXRlcyhj
b25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcywgU2hhcmVhYmxlRWxlbQogICAgIHJl
dHVybiAhbWVtY21wKGF0dHJpYnV0ZXMuZGF0YSgpLCBlbGVtZW50RGF0YS5tX2F0dHJpYnV0ZUFy
cmF5LCBhdHRyaWJ1dGVzLnNpemUoKSAqIHNpemVvZihBdHRyaWJ1dGUpKTsKIH0KIAotUGFzc1Jl
ZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sOjpjYWNoZWRT
aGFyZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+
JiBhdHRyaWJ1dGVzKQorUmVmPFNoYXJlYWJsZUVsZW1lbnREYXRhPiBEb2N1bWVudFNoYXJlZE9i
amVjdFBvb2w6OmNhY2hlZFNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0ZXMoY29uc3Qg
VmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKCFhdHRyaWJ1dGVz
LmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNo
YXJlZE9iamVjdFBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNoYXJlZE9iamVj
dFBvb2wuaAppbmRleCBjNmY3YjJmLi5hMDc0Njc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNoYXJl
YWJsZUVsZW1lbnREYXRhOwogCiBjbGFzcyBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2wgewogcHVi
bGljOgotICAgIFBhc3NSZWY8U2hhcmVhYmxlRWxlbWVudERhdGE+IGNhY2hlZFNoYXJlYWJsZUVs
ZW1lbnREYXRhV2l0aEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsKKyAgICBS
ZWY8U2hhcmVhYmxlRWxlbWVudERhdGE+IGNhY2hlZFNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0
dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsKIAogcHJpdmF0ZToKICAgICB0eXBl
ZGVmIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxTaGFyZWFibGVFbGVtZW50RGF0YT4sIEFscmVh
ZHlIYXNoZWQ+IFNoYXJlYWJsZUVsZW1lbnREYXRhQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKaW5kZXggMDY2MjQ4NC4u
ZTI5YmI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uLmNwcApAQCAtMTc1LDE0ICsxNzUsMTQgQEAgdm9pZCBEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKQogICAg
IG1fZG9jdW1lbnQuc3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiB9CiAK
LXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkQXV0aG9yU2hlZXQoUGFzc1Jl
ZjxTdHlsZVNoZWV0Q29udGVudHM+IGF1dGhvclNoZWV0KQordm9pZCBEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uOjphZGRBdXRob3JTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGF1
dGhvclNoZWV0KQogewogICAgIEFTU0VSVCghYXV0aG9yU2hlZXQuZ2V0KCkuaXNVc2VyU3R5bGVT
aGVldCgpKTsKICAgICBtX2F1dGhvclN0eWxlU2hlZXRzLmFwcGVuZChDU1NTdHlsZVNoZWV0Ojpj
cmVhdGUoV1RGOjptb3ZlKGF1dGhvclNoZWV0KSwgJm1fZG9jdW1lbnQpKTsKICAgICBtX2RvY3Vt
ZW50LnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogfQogCi12
b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZFVzZXJTaGVldChQYXNzUmVmPFN0
eWxlU2hlZXRDb250ZW50cz4gdXNlclNoZWV0KQordm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjphZGRVc2VyU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiB1c2VyU2hlZXQp
CiB7CiAgICAgQVNTRVJUKHVzZXJTaGVldC5nZXQoKS5pc1VzZXJTdHlsZVNoZWV0KCkpOwogICAg
IG1fdXNlclN0eWxlU2hlZXRzLmFwcGVuZChDU1NTdHlsZVNoZWV0OjpjcmVhdGUoV1RGOjptb3Zl
KHVzZXJTaGVldCksICZtX2RvY3VtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaAppbmRleCAzZDIzMjZkLi5lZWRlN2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgK
QEAgLTY3LDggKzY3LDggQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZUluamVjdGVkU3R5
bGVTaGVldENhY2hlKCk7CiAgICAgdm9pZCB1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgp
IGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBdXRob3JTaGVldChQYXNzUmVm
PFN0eWxlU2hlZXRDb250ZW50cz4gYXV0aG9yU2hlZXQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWRkVXNlclNoZWV0KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiB1c2VyU2hlZXQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXV0aG9yU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250
ZW50cz4mJiBhdXRob3JTaGVldCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRVc2VyU2hl
ZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiB1c2VyU2hlZXQpOwogCiAgICAgZW51bSBVcGRh
dGVGbGFnIHsgTm9VcGRhdGUgPSAwLCBPcHRpbWl6ZWRVcGRhdGUsIEZ1bGxVcGRhdGUgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDhiYWQyMjIuLjk4Nzk0MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKQEAgLTEzMjYsNyArMTMyNiw3IEBAIGJvb2wgRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXko
KSAhPSBOT05FOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhp
cywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA3ZTgxMjMxLi5h
ZDQ2MDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTMxMSw3ICszMTEsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGxhenlSZWF0dGFjaCgpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2hhZG93Um9vdCogc2hh
ZG93Um9vdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5jcHAKaW5kZXggMDE2MjU2
NS4uZmFkMDMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuY3BwCkBAIC02MywxMyArNjMs
MTMgQEAgc3RhdGljIHNpemVfdCBzaXplRm9yU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmli
dXRlQ291bnQodW5zaWduZWQgY291bnQpCiAgICAgcmV0dXJuIHNpemVvZihTaGFyZWFibGVFbGVt
ZW50RGF0YSkgKyBzaXplb2YoQXR0cmlidXRlKSAqIGNvdW50OwogfQogCi1QYXNzUmVmPFNoYXJl
YWJsZUVsZW1lbnREYXRhPiBTaGFyZWFibGVFbGVtZW50RGF0YTo6Y3JlYXRlV2l0aEF0dHJpYnV0
ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCitSZWY8U2hhcmVhYmxlRWxl
bWVudERhdGE+IFNoYXJlYWJsZUVsZW1lbnREYXRhOjpjcmVhdGVXaXRoQXR0cmlidXRlcyhjb25z
dCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcykKIHsKICAgICB2b2lkKiBzbG90ID0gV1RG
OjpmYXN0TWFsbG9jKHNpemVGb3JTaGFyZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVDb3Vu
dChhdHRyaWJ1dGVzLnNpemUoKSkpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxs
LCBzbG90KSBTaGFyZWFibGVFbGVtZW50RGF0YShhdHRyaWJ1dGVzKSk7CiB9CiAKLVBhc3NSZWY8
VW5pcXVlRWxlbWVudERhdGE+IFVuaXF1ZUVsZW1lbnREYXRhOjpjcmVhdGUoKQorUmVmPFVuaXF1
ZUVsZW1lbnREYXRhPiBVbmlxdWVFbGVtZW50RGF0YTo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBVbmlxdWVFbGVtZW50RGF0YSk7CiB9CkBAIC0xNDgsMTQgKzE0OCwxNCBA
QCBVbmlxdWVFbGVtZW50RGF0YTo6VW5pcXVlRWxlbWVudERhdGEoY29uc3QgU2hhcmVhYmxlRWxl
bWVudERhdGEmIG90aGVyKQogICAgICAgICBtX2F0dHJpYnV0ZVZlY3Rvci51bmNoZWNrZWRBcHBl
bmQob3RoZXIubV9hdHRyaWJ1dGVBcnJheVtpXSk7CiB9CiAKLVBhc3NSZWY8VW5pcXVlRWxlbWVu
dERhdGE+IEVsZW1lbnREYXRhOjptYWtlVW5pcXVlQ29weSgpIGNvbnN0CitSZWY8VW5pcXVlRWxl
bWVudERhdGE+IEVsZW1lbnREYXRhOjptYWtlVW5pcXVlQ29weSgpIGNvbnN0CiB7CiAgICAgaWYg
KGlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVuaXF1ZUVsZW1lbnRE
YXRhKHN0YXRpY19jYXN0PGNvbnN0IFVuaXF1ZUVsZW1lbnREYXRhJj4oKnRoaXMpKSk7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVW5pcXVlRWxlbWVudERhdGEoc3RhdGljX2Nhc3Q8Y29uc3Qg
U2hhcmVhYmxlRWxlbWVudERhdGEmPigqdGhpcykpKTsKIH0KIAotUGFzc1JlZjxTaGFyZWFibGVF
bGVtZW50RGF0YT4gVW5pcXVlRWxlbWVudERhdGE6Om1ha2VTaGFyZWFibGVDb3B5KCkgY29uc3QK
K1JlZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gVW5pcXVlRWxlbWVudERhdGE6Om1ha2VTaGFyZWFi
bGVDb3B5KCkgY29uc3QKIHsKICAgICB2b2lkKiBzbG90ID0gV1RGOjpmYXN0TWFsbG9jKHNpemVG
b3JTaGFyZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVDb3VudChtX2F0dHJpYnV0ZVZlY3Rv
ci5zaXplKCkpKTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc2xvdCkgU2hh
cmVhYmxlRWxlbWVudERhdGEoKnRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmgKaW5kZXgg
NDQwMGI4My4uMDcxMDBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmgKQEAgLTE3OSw3ICsx
NzksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IEF0dHJpYnV0ZSogZmluZEF0dHJpYnV0ZUJ5TmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2Fz
ZSkgY29uc3Q7CiAgICAgdW5zaWduZWQgZmluZEF0dHJpYnV0ZUluZGV4QnlOYW1lU2xvd0Nhc2Uo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Up
IGNvbnN0OwogCi0gICAgUGFzc1JlZjxVbmlxdWVFbGVtZW50RGF0YT4gbWFrZVVuaXF1ZUNvcHko
KSBjb25zdDsKKyAgICBSZWY8VW5pcXVlRWxlbWVudERhdGE+IG1ha2VVbmlxdWVDb3B5KCkgY29u
c3Q7CiB9OwogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTE4OSw3ICsxODksNyBAQCBwcml2YXRl
OgogCiBjbGFzcyBTaGFyZWFibGVFbGVtZW50RGF0YSA6IHB1YmxpYyBFbGVtZW50RGF0YSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U2hhcmVhYmxlRWxlbWVudERhdGE+IGNyZWF0ZVdp
dGhBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CisgICAgc3RhdGljIFJlZjxT
aGFyZWFibGVFbGVtZW50RGF0YT4gY3JlYXRlV2l0aEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0
dHJpYnV0ZT4mKTsKIAogICAgIGV4cGxpY2l0IFNoYXJlYWJsZUVsZW1lbnREYXRhKGNvbnN0IFZl
Y3RvcjxBdHRyaWJ1dGU+Jik7CiAgICAgZXhwbGljaXQgU2hhcmVhYmxlRWxlbWVudERhdGEoY29u
c3QgVW5pcXVlRWxlbWVudERhdGEmKTsKQEAgLTIwNiw4ICsyMDYsOCBAQCBwdWJsaWM6CiAKIGNs
YXNzIFVuaXF1ZUVsZW1lbnREYXRhIDogcHVibGljIEVsZW1lbnREYXRhIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZjxVbmlxdWVFbGVtZW50RGF0YT4gY3JlYXRlKCk7Ci0gICAgUGFzc1Jl
ZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gbWFrZVNoYXJlYWJsZUNvcHkoKSBjb25zdDsKKyAgICBz
dGF0aWMgUmVmPFVuaXF1ZUVsZW1lbnREYXRhPiBjcmVhdGUoKTsKKyAgICBSZWY8U2hhcmVhYmxl
RWxlbWVudERhdGE+IG1ha2VTaGFyZWFibGVDb3B5KCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBm
dW5jdGlvbnMgZG8gbm8gZXJyb3IvZHVwbGljYXRlIGNoZWNraW5nLgogICAgIHZvaWQgYWRkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCA5ZDk4NzNhLi5mNzdkMWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEF0dHJpYnV0ZU1hcChzdGQ6OnVuaXF1ZV9wdHI8TmFtZWROb2RlTWFwPiBhdHRy
aWJ1dGVNYXApIHsgbV9hdHRyaWJ1dGVNYXAgPSBXVEY6Om1vdmUoYXR0cmlidXRlTWFwKTsgfQog
CiAgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXB1
dGVkU3R5bGUuZ2V0KCk7IH0KLSAgICB2b2lkIHNldENvbXB1dGVkU3R5bGUoUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gY29tcHV0ZWRTdHlsZSkgeyBtX2NvbXB1dGVkU3R5bGUgPSBXVEY6Om1vdmUoY29t
cHV0ZWRTdHlsZSk7IH0KKyAgICB2b2lkIHNldENvbXB1dGVkU3R5bGUoUmVmPFJlbmRlclN0eWxl
PiYmIGNvbXB1dGVkU3R5bGUpIHsgbV9jb21wdXRlZFN0eWxlID0gV1RGOjptb3ZlKGNvbXB1dGVk
U3R5bGUpOyB9CiAKICAgICBDbGFzc0xpc3QqIGNsYXNzTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NMaXN0LmdldCgpOyB9CiAgICAgdm9pZCBzZXRDbGFzc0xpc3Qoc3RkOjp1bmlxdWVfcHRy
PENsYXNzTGlzdD4gY2xhc3NMaXN0KSB7IG1fY2xhc3NMaXN0ID0gV1RGOjptb3ZlKGNsYXNzTGlz
dCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaAppbmRleCAyMGRmMjJhLi45ZjljZTQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIE5vZGVMaXN0IHdoaWNoIGxpc3RzIGFsbCBOb2RlcyBpbiBhIEVsZW1lbnQg
d2l0aCBhIGdpdmVuICJuYW1lIiBhdHRyaWJ1dGUKIGNsYXNzIE5hbWVOb2RlTGlzdCBmaW5hbCA6
IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxpc3Q8TmFtZU5vZGVMaXN0PiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWY8TmFtZU5vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5v
ZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMgUmVmPE5hbWVOb2RlTGlz
dD4gY3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYW1lTm9kZUxpc3Qocm9v
dE5vZGUsIG5hbWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAKaW5kZXggNjg2Nzg0MC4uNmJkNzY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
YW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBXZWJLaXROYW1lZEZsb3cq
IE5hbWVkRmxvd0NvbGxlY3Rpb246OmZsb3dCeU5hbWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZSkK
ICAgICByZXR1cm4gKml0OwogfQogCi1QYXNzUmVmPFdlYktpdE5hbWVkRmxvdz4gTmFtZWRGbG93
Q29sbGVjdGlvbjo6ZW5zdXJlRmxvd1dpdGhOYW1lKGNvbnN0IFN0cmluZyYgZmxvd05hbWUpCitS
ZWY8V2ViS2l0TmFtZWRGbG93PiBOYW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVGbG93V2l0aE5h
bWUoY29uc3QgU3RyaW5nJiBmbG93TmFtZSkKIHsKICAgICBOYW1lZEZsb3dTZXQ6Oml0ZXJhdG9y
IGl0ID0gbV9uYW1lZEZsb3dzLmZpbmQ8U3RyaW5nLCBOYW1lZEZsb3dIYXNoVHJhbnNsYXRvcj4o
Zmxvd05hbWUpOwogICAgIGlmIChpdCAhPSBtX25hbWVkRmxvd3MuZW5kKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oCmluZGV4IGUxMjYzZGQuLjhlZjJmN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaApAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+IG5hbWVkRmxv
d3MoKTsKICAgICBXZWJLaXROYW1lZEZsb3cqIGZsb3dCeU5hbWUoY29uc3QgU3RyaW5nJik7Ci0g
ICAgUGFzc1JlZjxXZWJLaXROYW1lZEZsb3c+IGVuc3VyZUZsb3dXaXRoTmFtZShjb25zdCBTdHJp
bmcmKTsKKyAgICBSZWY8V2ViS2l0TmFtZWRGbG93PiBlbnN1cmVGbG93V2l0aE5hbWUoY29uc3Qg
U3RyaW5nJik7CiAKICAgICB2b2lkIGRpc2NhcmROYW1lZEZsb3coV2ViS2l0TmFtZWRGbG93Kik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA5NzZhNDY0Li5iMTY1MGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIG1fY2hpbGROb2RlTGlzdC0+aW52YWxpZGF0ZUNhY2hlKCk7CiAgICAgfQogCi0gICAg
UGFzc1JlZjxDaGlsZE5vZGVMaXN0PiBlbnN1cmVDaGlsZE5vZGVMaXN0KENvbnRhaW5lck5vZGUm
IG5vZGUpCisgICAgUmVmPENoaWxkTm9kZUxpc3Q+IGVuc3VyZUNoaWxkTm9kZUxpc3QoQ29udGFp
bmVyTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9lbXB0eUNoaWxkTm9kZUxp
c3QpOwogICAgICAgICBpZiAobV9jaGlsZE5vZGVMaXN0KQpAQCAtODcsNyArODcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fY2hpbGROb2RlTGlzdCA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgUGFz
c1JlZjxFbXB0eU5vZGVMaXN0PiBlbnN1cmVFbXB0eUNoaWxkTm9kZUxpc3QoTm9kZSYgbm9kZSkK
KyAgICBSZWY8RW1wdHlOb2RlTGlzdD4gZW5zdXJlRW1wdHlDaGlsZE5vZGVMaXN0KE5vZGUmIG5v
ZGUpCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fY2hpbGROb2RlTGlzdCk7CiAgICAgICAgIGlm
IChtX2VtcHR5Q2hpbGROb2RlTGlzdCkKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIFRhZ05vZGVMaXN0Kj4gVGFnTm9kZUxpc3RD
YWNoZU5TOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udGFpbmVyVHlw
ZT4KLSAgICBBTFdBWVNfSU5MSU5FIFBhc3NSZWY8VD4gYWRkQ2FjaGVXaXRoQXRvbWljTmFtZShD
b250YWluZXJUeXBlJiBjb250YWluZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICBB
TFdBWVNfSU5MSU5FIFJlZjxUPiBhZGRDYWNoZVdpdGhBdG9taWNOYW1lKENvbnRhaW5lclR5cGUm
IGNvbnRhaW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgTm9k
ZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2F0b21pY05hbWVD
YWNoZXMuZmFzdEFkZChuYW1lZE5vZGVMaXN0S2V5PFQ+KG5hbWUpLCBudWxscHRyKTsKICAgICAg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxU
YWdOb2RlTGlzdD4gYWRkQ2FjaGVXaXRoUXVhbGlmaWVkTmFtZShDb250YWluZXJOb2RlJiBub2Rl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbE5hbWUpCisgICAgQUxXQVlTX0lOTElORSBSZWY8VGFnTm9kZUxpc3Q+IGFkZENhY2hlV2l0
aFF1YWxpZmllZE5hbWUoQ29udGFpbmVyTm9kZSYgbm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQogICAgIHsKICAgICAg
ICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7
CiAgICAgICAgIFRhZ05vZGVMaXN0Q2FjaGVOUzo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fdGFnTm9k
ZUxpc3RDYWNoZU5TLmZhc3RBZGQobmFtZSwgbnVsbHB0cik7CkBAIC0xNDMsNyArMTQzLDcgQEAg
cHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnRh
aW5lclR5cGU+Ci0gICAgQUxXQVlTX0lOTElORSBQYXNzUmVmPFQ+IGFkZENhY2hlZENvbGxlY3Rp
b24oQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlw
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorICAgIEFMV0FZU19JTkxJTkUgUmVmPFQ+IGFk
ZENhY2hlZENvbGxlY3Rpb24oQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBDb2xsZWN0aW9uVHlw
ZSBjb2xsZWN0aW9uVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAg
ICAgQ29sbGVjdGlvbkNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jYWNoZWRDb2xsZWN0
aW9ucy5mYXN0QWRkKG5hbWVkQ29sbGVjdGlvbktleShjb2xsZWN0aW9uVHlwZSwgbmFtZSksIG51
bGxwdHIpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQpAQCAtMTU1LDcgKzE1NSw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
b250YWluZXJUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxUPiBhZGRDYWNoZWRDb2xs
ZWN0aW9uKENvbnRhaW5lclR5cGUmIGNvbnRhaW5lciwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlv
blR5cGUpCisgICAgQUxXQVlTX0lOTElORSBSZWY8VD4gYWRkQ2FjaGVkQ29sbGVjdGlvbihDb250
YWluZXJUeXBlJiBjb250YWluZXIsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlKQogICAg
IHsKICAgICAgICAgQ29sbGVjdGlvbkNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jYWNo
ZWRDb2xsZWN0aW9ucy5mYXN0QWRkKG5hbWVkQ29sbGVjdGlvbktleShjb2xsZWN0aW9uVHlwZSwg
c3RhckF0b20pLCBudWxscHRyKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCA3YzJiY2YyLi42NTBmNzEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBQ
c2V1ZG9FbGVtZW50OjpkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKQogICAgICAgICAvLyBX
ZSBvbmx5IG1hbmFnZSB0aGUgc3R5bGUgZm9yIHRoZSBnZW5lcmF0ZWQgY29udGVudCB3aGljaCBt
dXN0IGJlIGltYWdlcyBvciB0ZXh0LgogICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPigqY2hp
bGQpICYmICFpczxSZW5kZXJRdW90ZT4oKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKHJlbmRlcmVyLnN0eWxlKCkpOwor
ICAgICAgICBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUocmVuZGVyZXIuc3R5bGUoKSk7CiAgICAg
ICAgIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCkuc2V0U3R5bGUoV1RGOjptb3ZlKGNy
ZWF0ZWRTdHlsZSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9R
dWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4
IDFhNTZlOWQuLjk4YTY1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZp
ZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAtMzks
NyArMzksNyBAQCBjbGFzcyBRdWFsaWZpZWROYW1lIHsKIHB1YmxpYzoKICAgICBjbGFzcyBRdWFs
aWZpZWROYW1lSW1wbCA6IHB1YmxpYyBSZWZDb3VudGVkPFF1YWxpZmllZE5hbWVJbXBsPiB7CiAg
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZjxRdWFsaWZpZWROYW1lSW1wbD4gY3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
TmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCisgICAgICAgIHN0YXRpYyBS
ZWY8UXVhbGlmaWVkTmFtZUltcGw+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNw
YWNlVVJJKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWFs
aWZpZWROYW1lSW1wbChwcmVmaXgsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UYWdOb2RlTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmgKaW5kZXggYjkxODUxNi4uNjkyMWJlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RhZ05vZGVMaXN0LmgKQEAgLTMzLDEzICszMywxMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAvLyBOb2RlTGlzdCB0aGF0IGxpbWl0cyB0byBhIHBhcnRpY3VsYXIgdGFnLgogY2xhc3Mg
VGFnTm9kZUxpc3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PFRhZ05vZGVMaXN0
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8VGFnTm9kZUxpc3Q+IGNyZWF0ZShDb250
YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQorICAgIHN0YXRpYyBSZWY8VGFnTm9kZUxpc3Q+
IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG5hbWVzcGFjZVVSSSAhPSBzdGFyQXRvbSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRhZ05vZGVMaXN0KHJvb3ROb2RlLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPFRhZ05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQorICAgIHN0YXRp
YyBSZWY8VGFnTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBUYWdOb2RlTGlzdChyb290Tm9kZSwgc3RhckF0b20sIGxvY2FsTmFtZSkpOwogICAgIH0K
QEAgLTY3LDcgKzY3LDcgQEAgaW5saW5lIGJvb2wgVGFnTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVz
KEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAKIGNsYXNzIEhUTUxUYWdOb2RlTGlzdCBmaW5hbCA6
IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxpc3Q8SFRNTFRhZ05vZGVMaXN0PiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWY8SFRNTFRhZ05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQorICAgIHN0YXRpYyBSZWY8
SFRNTFRhZ05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxOYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSFRNTFRhZ05vZGVMaXN0KHJvb3ROb2RlLCBsb2NhbE5hbWUpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcAppbmRleCA4OWIyNTQwLi4zNjQy
MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAKQEAg
LTUyLDcgKzUyLDcgQEAgYm9vbCBCYXNlQnV0dG9uSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShG
b3JtRGF0YUxpc3QmLCBib29sKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEJhc2VCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVy
ZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
QmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJ1dHRvbj4oZWxl
bWVudCgpLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0
dG9uSW5wdXRUeXBlLmgKaW5kZXggNDY1NzFjMy4uZmUwYTkxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJv
bFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRh
KEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgc3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgVGV4dEZpZWxkRXZlbnRC
ZWhhdmlvcikgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAK
aW5kZXggMDU0M2M1ZC4uNzI0N2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpoYW5kbGVET01BY3Rp
dmF0ZUV2ZW50KEV2ZW50KiBldmVudCkKICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEZpbGVJbnB1dFR5cGU6OmNyZWF0ZUlucHV0
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gRmlsZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZpbGVVcGxvYWRD
b250cm9sPihlbGVtZW50KCksIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuaAppbmRleCA4OGZkZTMzLi5hYWVjYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuaApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBTdHJpbmcgdmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJl
bmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBjYW5TZXRTdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBjYW5DaGFuZ2VGcm9tQW5vdGhlclR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIEZpbGVMaXN0KiBmaWxlcygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbGxDb2xsZWN0aW9uLmNwcAppbmRleCA4MmQ2NzBkLi4wMTY2ODcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWY8SFRNTEFsbENvbGxlY3Rpb24+IEhUTUxBbGxD
b2xsZWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBl
KQorUmVmPEhUTUxBbGxDb2xsZWN0aW9uPiBIVE1MQWxsQ29sbGVjdGlvbjo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBIVE1MQWxsQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCmluZGV4IGJkZjRmZjEuLjUxNDUxMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBmaW5hbCA6IHB1Ymxp
YyBIVE1MQ29sbGVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8SFRNTEFsbENv
bGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsKKyAgICBzdGF0aWMg
UmVmPEhUTUxBbGxDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBDb2xsZWN0aW9uVHlwZSk7
CiAKICAgICBFbGVtZW50KiBuYW1lZEl0ZW1XaXRoSW5kZXgoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBw
bGV0RWxlbWVudC5jcHAKaW5kZXggYWZlMjFhNS4uNWQ2ZWJmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBIVE1MQXBw
bGV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAg
ICAgcmV0dXJuIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUp
OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAoIWNhbkVtYmVkSmF2YSgpKQogICAg
ICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAppbmRleCAyMDVhZGRh
Li5mYjYwODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCkBAIC0z
Nyw3ICszNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lk
Z2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJSRWxlbWVudC5jcHAKaW5kZXggNWE4NDg1Ny4uM2Y5ODc1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCUkVsZW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSFRNTEJSRWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25B
dHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIGlmIChz
dHlsZS5nZXQoKS5oYXNDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJFbGVtZW50Ojpj
cmVhdGVGb3IoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVs
ZW1lbnQuaAppbmRleCBkNThhNmYzLi4wZjNiNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCUkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVs
ZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJv
cGVydGllcyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IGExZmY0ODMuLjVh
ZDZmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCkBAIC01
Nyw3ICs1Nyw3IEBAIHZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OnNldFR5cGUoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlKQogICAgIHNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgdHlwZSk7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IEhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCdXR0b24+
KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRv
bkVsZW1lbnQuaAppbmRleCBhYzY4N2Y5Li4yNzNkOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQnV0dG9uRWxlbWVudC5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYpIG92ZXJyaWRlOwogCiAgICAgLy8gSFRNTEZvcm1Db250cm9sRWxlbWVudCBhbHdheXMgY3Jl
YXRlcyBvbmUsIGJ1dCBidXR0b25zIGRvbid0IG5lZWQgaXQuCiAgICAgdmlydHVhbCBib29sIGFs
d2F5c0NyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAy
MGU0NmQ0Li43MTcwYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0CiAgICAgSFRN
TEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTENh
bnZhc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmIChm
cmFtZSAmJiBmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1
dGVTY3JpcHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXgg
ZmZkYTY4Mi4uY2UwZWZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMTM5LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgSFRNTENhbnZhc0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHls
ZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9p
bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24o
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5k
ZXggNDI3NzIyNS4uM2Y3NGQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rpb24oQ29u
dGFpbmVyTm9kZSYgb3duZXJOb2RlLCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBFbAogICAgIEFTU0VS
VChtX2NvbGxlY3Rpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7CiB9CiAK
LVBhc3NSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxDb2xsZWN0aW9uOjpjcmVhdGUoQ29udGFpbmVy
Tm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKK1JlZjxIVE1MQ29sbGVjdGlvbj4gSFRN
TENvbGxlY3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSB0
eXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxDb2xsZWN0aW9uKGJhc2UsIHR5
cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAppbmRleCAwOGYxMjNiLi5i
ZWIyNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCkBAIC02MCw3ICs2MCw3
IEBAIHByaXZhdGU6CiAKIGNsYXNzIEhUTUxDb2xsZWN0aW9uIDogcHVibGljIFNjcmlwdFdyYXBw
YWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SFRNTENvbGxlY3Rpb24+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZjxIVE1MQ29sbGVjdGlvbj4gY3JlYXRlKENvbnRhaW5lck5vZGUmIGJhc2Us
IENvbGxlY3Rpb25UeXBlKTsKKyAgICBzdGF0aWMgUmVmPEhUTUxDb2xsZWN0aW9uPiBjcmVhdGUo
Q29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUpOwogICAgIHZpcnR1YWwgfkhUTUxD
b2xsZWN0aW9uKCk7CiAKICAgICAvLyBET00gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
ZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggYTM1YjVkOC4uNjU5ZjA5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIEhUTUxE
ZXRhaWxzRWxlbWVudDo6SFRNTERldGFpbHNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoZGV0YWlsc1RhZykpOwog
fQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVm
PFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJCbG9ja0Zsb3c+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCmluZGV4IGE5ODk0NzQuLjBhOGQwMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEhUTUxEZXRhaWxzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxk
Q3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggZjI4
NGI5ZS4uMjMxN2JjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTc5Niw3
ICs3OTYsNyBAQCBib29sIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVG
b3IoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5o
CmluZGV4IGVlNDhhZWQuLmI0MTBkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAg
LTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaWVGb3JiaWRzSW5zZXJ0SFRNTCgpIGNv
bnN0OwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5
bGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtKCkg
Y29uc3QgeyByZXR1cm4gdmlydHVhbEZvcm0oKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmNwcAppbmRleCAwMWRkZjQwLi40YjhkZTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTE0OSw3ICsxNDksNyBA
QCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmZvcm1Db250cm9sVHlw
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZpZWxkc2V0OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxGaWVsZFNl
dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZpZWxkc2V0PigqdGhpcywgV1RG
Ojptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVu
dC5oCmluZGV4IGUxNzUwZDMuLmIwNGYzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZp
ZWxkU2V0RWxlbWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZVdpbGxWYWxpZGF0ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVkQXR0
cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCAzOGVjMzFkLi4wZGVlY2MyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNw
cApAQCAtNDMsNyArNDMsNyBAQCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6SFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKQogICAgIEFTU0VSVChp
czxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSkgfHwgaXM8SFRNTEZpZWxkU2V0RWxlbWVudD4o
b3duZXJOb2RlKSk7CiB9CiAKLVBhc3NSZWY8SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+IEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUoQ29udGFpbmVyTm9kZSYgb3duZXJOb2Rl
LCBDb2xsZWN0aW9uVHlwZSkKK1JlZjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4gSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBvd25lck5vZGUsIENv
bGxlY3Rpb25UeXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uKG93bmVyTm9kZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCmluZGV4IDMxNjJiZDkuLmIxNjhhZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKQEAg
LTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIAogY2xhc3MgSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPiBjcmVhdGUo
Q29udGFpbmVyTm9kZSYsIENvbGxlY3Rpb25UeXBlKTsKKyAgICBzdGF0aWMgUmVmPEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9kZSYsIENvbGxlY3Rpb25UeXBl
KTsKICAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKaW5kZXggZDY1NWYwNy4u
ZDY2OWY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCkBAIC01
NCw3ICs1NCw3IEBAIGJvb2wgSFRNTEZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpCiAgICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhU
TUxGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZyYW1lPigqdGhpcywg
V1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5o
CmluZGV4IGQ0ZDYxYzguLjcyZjcwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0
dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIAogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZVNldEVsZW1lbnQuY3BwCmluZGV4IDJiNDE0Y2YuLjk2OGQ4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wg
SFRNTEZyYW1lU2V0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlLmlzU3R5bGVBdmFpbGFibGUoKTsKIH0KIAotUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogewogICAgIGlmIChzdHlsZS5nZXQoKS5oYXNDb250ZW50KCkpCiAgICAg
ICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURjo6bW92ZShzdHls
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAppbmRleCBhM2Iy
NzE3Li42YTM3ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
aApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxBdHRh
Y2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCBhZmE3NTBlLi5lZDI1OWFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtOTAsNyAr
OTAsNyBAQCBib29sIEhUTUxJRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gaXNVUkxBbGxvd2VkKCkgJiYgc3R5bGUuZGlz
cGxheSgpICE9IE5PTkU7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSUZyYW1l
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJJRnJhbWU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAppbmRleCA5YWFhYzE4Li45MmQzODc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCkBAIC00NCw3ICs0NCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0
YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5jcHAKaW5kZXggMmQ5YmJhYS4uZjRmZDU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgY29uc3QgQXRvbWljU3RyaW5n
JiBIVE1MSW1hZ2VFbGVtZW50OjphbHRUZXh0KCkgY29uc3QKICAgICByZXR1cm4gZmFzdEdldEF0
dHJpYnV0ZSh0aXRsZUF0dHIpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTElt
YWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgaWYgKHN0eWxl
LmdldCgpLmhhc0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0
ZUZvcigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oCmluZGV4IGZkNWUxYjMuLjhlODI2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEJlc3RGaXRVUkxBbmREUFJGcm9tSW1hZ2VDYW5kaWRh
dGUoY29uc3QgSW1hZ2VDYW5kaWRhdGUmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNl
bGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKaW5kZXggYzJmZWFlNy4uNzg5MjQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCkBAIC03NjEsNyArNzYxLDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1
cm4gbV9pbnB1dFR5cGUtPnJlbmRlcmVySXNOZWVkZWQoKSAmJiBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTElucHV0RWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsK
ICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmNyZWF0ZUlucHV0UmVuZGVyZXIoV1RGOjptb3ZlKHN0
eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDNmZTU3
N2YuLjc3ZGE2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0y
MDAsNyArMjAwLDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuSGF2ZVNlbGVjdGlvbigpIGNvbnN0
OwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUm
KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlIGZpbmFs
OworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBk
aWREZXRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAppbmRleCA1YTg3YTdmLi5kNTUxOGM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBIVE1MTGlu
a0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwm
IGJhc2VVUkwsIGMKICAgICB9CiAKICAgICBSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBzdHlsZVNo
ZWV0KFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGhyZWYsIHBhcnNlckNvbnRleHQpKTsKLSAg
ICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKHN0eWxlU2hlZXQsIHRoaXMpOworICAg
IG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoc3R5bGVTaGVldC5jb3B5UmVmKCksIHRo
aXMpOwogICAgIG1fc2hlZXQtPnNldE1lZGlhUXVlcmllcyhNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVB
bGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpKTsKICAgICBtX3NoZWV0LT5zZXRUaXRs
ZSh0aXRsZSgpKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpz
ZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBj
CiAgICAgc3R5bGVTaGVldC5nZXQoKS5jaGVja0xvYWRlZCgpOwogCiAgICAgaWYgKHN0eWxlU2hl
ZXQuZ2V0KCkuaXNDYWNoZWFibGUoKSkKLSAgICAgICAgY29uc3RfY2FzdDxDYWNoZWRDU1NTdHls
ZVNoZWV0Kj4oY2FjaGVkU3R5bGVTaGVldCktPnNhdmVQYXJzZWRTdHlsZVNoZWV0KHN0eWxlU2hl
ZXQpOworICAgICAgICBjb25zdF9jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQqPihjYWNoZWRTdHls
ZVNoZWV0KS0+c2F2ZVBhcnNlZFN0eWxlU2hlZXQoV1RGOjptb3ZlKHN0eWxlU2hlZXQpKTsKIH0K
IAogYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnN0eWxlU2hlZXRJc0xvYWRpbmcoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggM2RjYzg1Mi4uMWRkZjk3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC02MjIsNyAr
NjIyLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gY29udHJvbHMoKSAmJiBIVE1MRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBI
VE1MTWVkaWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1lZGlhRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWVkaWE+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYTAzZjg2Mi4uMmM1
N2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTQ4OSw3ICs0
ODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbmRJZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0
ZVJlcXVlc3RzKCk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoTUVESUFfQ09O
VFJPTFNfU0NSSVBUKQogICAgIGJvb2wgbWVkaWFDb250cm9sc0RlcGVuZE9uUGFnZVNjYWxlRmFj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNvbnRyb2xzRGVwZW5kT25QYWdlU2NhbGVGYWN0
b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmluZGV4IDE0ZGI4
YTAuLmYxZDY3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcApA
QCAtNTcsNyArNTcsNyBAQCBSZWZQdHI8SFRNTE1ldGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsCiAgICAgcmV0dXJuIG1ldGVy
OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKS0+dGhl
bWUoKS5zdXBwb3J0c01ldGVyKHN0eWxlLmdldCgpLmFwcGVhcmFuY2UoKSkpCiAgICAgICAgIHJl
dHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAppbmRleCA1MDZlMmFjLi4xNGU0N2Zj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaApAQCAtNzAsNyArNzAsNyBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxOYW1lQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxl
Y3Rpb24uaAppbmRleCBhMGY0YmI1Li4zMjA3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE5hbWVDb2xsZWN0aW9uLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBX
aW5kb3dOYW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rpb24gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFdpbmRvd05hbWVDb2xsZWN0aW9uPiBjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCisgICAgc3RhdGljIFJlZjxXaW5kb3dOYW1lQ29sbGVjdGlvbj4gY3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2luZG93TmFtZUNv
bGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUsIG5hbWUpKTsKICAgICB9CkBAIC02NSw3ICs2NSw3IEBA
IHByaXZhdGU6CiAKIGNsYXNzIERvY3VtZW50TmFtZUNvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMg
SFRNTE5hbWVDb2xsZWN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxEb2N1bWVu
dE5hbWVDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlw
ZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgc3RhdGljIFJlZjxEb2N1bWVu
dE5hbWVDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlw
ZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEb2N1bWVudE5hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1l
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24u
Y3BwCmluZGV4IGYyOTIxMmQuLmZiMzM3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24oSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdCkK
IHsKIH0KIAotUGFzc1JlZjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxPcHRpb25zQ29sbGVj
dGlvbjo6Y3JlYXRlKEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3QsIENvbGxlY3Rpb25UeXBlKQor
UmVmPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpjcmVhdGUo
SFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdCwgQ29sbGVjdGlvblR5cGUpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKHNlbGVjdCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKaW5kZXggMTU4MzRhYi4uMzQw
ZGExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCkBA
IC0zNSw3ICszNSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEhUTUxP
cHRpb25zQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWY8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBjcmVhdGUoSFRNTFNl
bGVjdEVsZW1lbnQmLCBDb2xsZWN0aW9uVHlwZSk7CisgICAgc3RhdGljIFJlZjxIVE1MT3B0aW9u
c0NvbGxlY3Rpb24+IGNyZWF0ZShIVE1MU2VsZWN0RWxlbWVudCYsIENvbGxlY3Rpb25UeXBlKTsK
IAogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3RFbGVtZW50KCkgeyByZXR1cm4gZG93bmNh
c3Q8SFRNTFNlbGVjdEVsZW1lbnQ+KG93bmVyTm9kZSgpKTsgfQogICAgIGNvbnN0IEhUTUxTZWxl
Y3RFbGVtZW50JiBzZWxlY3RFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SFRNTFNl
bGVjdEVsZW1lbnQ+KG93bmVyTm9kZSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmNwcAppbmRleCBlY2JkZTRiLi41NThkMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMjkyLDcgKzI5Miw3IEBAIE5QT2JqZWN0KiBI
VE1MUGx1Z0luRWxlbWVudDo6Z2V0TlBPYmplY3QoKQogCiAjZW5kaWYgLyogRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpICovCiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0lu
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5FbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIGlmIChtX3BsdWdp
blJlcGxhY2VtZW50ICYmIG1fcGx1Z2luUmVwbGFjZW1lbnQtPndpbGxDcmVhdGVSZW5kZXJlcigp
KQogICAgICAgICByZXR1cm4gbV9wbHVnaW5SZXBsYWNlbWVudC0+Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuaAppbmRleCA4YzE5NWY4Li44YTc1YmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKICAgICB2
aXJ0dWFsIGJvb2wgcmVxdWVzdE9iamVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
QWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CiAKICAgICAvLyBT
dWJjbGFzc2VzIHNob3VsZCB1c2UgZ3VhcmRlZERpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IGluc3Rl
YWQgb2YgY2FsbGluZyBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCBkaXJlY3RseS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGE0ZjBmMjYu
LjNlNTM5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
d291bGRMb2FkQXNOZXRzY2FwZVBsdWdpbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBBU1NF
UlQoIWRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXggODIwZmI3Mi4uMmJjNGI1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTExNyw3ICsxMTcs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBv
dmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9v
dChTaGFkb3dSb290Kikgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4p
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGUgZmluYWw7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGUgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCA4Y2YyZDYyLi5mMWIz
MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgUmVmUHRyPEhUTUxQcm9ncmVzc0VsZW1lbnQ+IEhUTUxQcm9ncmVzc0Vs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcKICAgICByZXR1cm4gcHJvZ3Jl
c3M7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUHJvZ3Jlc3NFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAoIXN0eWxlLmdldCgpLmhh
c0FwcGVhcmFuY2UoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigq
dGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQcm9ncmVzc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNz
RWxlbWVudC5oCmluZGV4IDM2MmZkMmMuLjg1YmI0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb2dyZXNzRWxlbWVudC5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIHNob3VsZEFwcGVhckluZGV0ZXJtaW5hdGUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlbmRlclByb2dyZXNzKiBy
ZW5kZXJQcm9ncmVzcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCmluZGV4IDc5MWJiY2IuLjhjNWMzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgYm9vbCBIVE1MU2VsZWN0
RWxlbWVudDo6Y2FuU2VsZWN0QWxsKCkgY29uc3QKICAgICByZXR1cm4gIXVzZXNNZW51TGlzdCgp
OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmICh1
c2VzTWVudUxpc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAppbmRl
eCA0YTNiYWU4Li40YjI1YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5oCkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1E
YXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHJl
c2V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1t
YXJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5j
cHAKaW5kZXggYjA4MTFmNy4uMTI1MjVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1
bW1hcnlFbGVtZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCBIVE1MU3VtbWFyeUVsZW1lbnQ6OkhU
TUxTdW1tYXJ5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZAogICAgIEFTU0VSVChoYXNUYWdOYW1lKHN1bW1hcnlUYWcpKTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBz
dHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PigqdGhp
cywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTdW1tYXJ5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVs
ZW1lbnQuaAppbmRleCAwZDU2ZTNhLi5kMjBjOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFN1bW1hcnlFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBIVE1MU3VtbWFyeUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
LSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNv
bnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCmluZGV4IGI1OWY5MjYuLmZlMGQ2NTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBAIC0xNTMs
NyArMTUzLDcgQEAgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OkhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uKEhUTUxUYWJsZUVsZW1lbnQmIHRhYmxlKQogewogfQogCi1QYXNzUmVmPEhUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uPiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6Y3JlYXRlKEhUTUxUYWJsZUVs
ZW1lbnQmIHRhYmxlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQorUmVmPEhUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uPiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6Y3JlYXRlKEhUTUxUYWJsZUVsZW1lbnQm
IHRhYmxlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQogewogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwg
dHlwZSA9PSBUYWJsZVJvd3MpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uKHRhYmxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uLmgKaW5kZXggMGY1Y2RkNy4uZjE3YTMwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaApAQCAtMzgsNyArMzgsNyBAQCBjbGFz
cyBIVE1MVGFibGVSb3dFbGVtZW50OwogCiBjbGFzcyBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWY8SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+IGNyZWF0ZShIVE1MVGFibGVFbGVtZW50JiwgQ29s
bGVjdGlvblR5cGUpOworICAgIHN0YXRpYyBSZWY8SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+IGNy
ZWF0ZShIVE1MVGFibGVFbGVtZW50JiwgQ29sbGVjdGlvblR5cGUpOwogCiAgICAgSFRNTFRhYmxl
RWxlbWVudCYgdGFibGVFbGVtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVu
dD4ob3duZXJOb2RlKCkpOyB9CiAgICAgY29uc3QgSFRNTFRhYmxlRWxlbWVudCYgdGFibGVFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4ob3duZXJOb2Rl
KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRl
eCA5MWQ3MWMxLi41NTQ2MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pYwog
ICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwg
dmFsdWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFRleHRBcmVhRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lPigqdGhpcywgV1RGOjptb3ZlKHN0eWxl
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IGZj
NDE2NTYuLjE1N2JhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVm
PFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCA4NmQ3Nzc1Li4yOGIyY2IxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgYm9v
bCBIVE1MVmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyAK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJW
aWRlbz4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuaAppbmRleCBlNWY2MDQ4Li44ZWQyYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
aG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBkaXNwbGF5TW9kZSgpID09
IFBvc3RlciB8fCBkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdGb3JWaWRlbzsgfQogCiAg
ICAgVVJMIHBvc3RlckltYWdlVVJMKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICBIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmNwcAppbmRleCBlOTRjYmY3Li4zOTRm
NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmNwcApAQCAtNDQsNyArNDQs
NyBAQCBIVE1MV0JSRWxlbWVudDo6SFRNTFdCUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIEFTU0VSVChoYXNUYWdOYW1lKHdiclRh
ZykpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFdCUkVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MV0JSRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
TGluZUJyZWFrPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxXQlJFbGVtZW50LmgKaW5kZXggMjE3N2I5Ny4uNWJlNzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFdCUkVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IEhUTUxXQlJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVy
cmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlk
ZGVuSW5wdXRUeXBlLmNwcAppbmRleCAxNWVhYzVkLi5kNmVlMTY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgSGlkZGVuSW5w
dXRUeXBlOjpzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhpZGRlbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRS
ZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBI
aWRkZW5JbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgKaW5kZXggY2QwMWUwMC4uZWU2ZDMxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBGb3JtQ29udHJvbFN0YXRlIHNhdmVGb3JtQ29udHJvbFN0YXRlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNv
bnN0IEZvcm1Db250cm9sU3RhdGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNWYWxpZGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBh
Y2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHN0
b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGUzMjFjMmUuLjk1NDhjOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBJbWFn
ZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCogZXZlbnQpCiAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJ
bWFnZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUlucHV0VHlwZTo6Y3JlYXRlSW5w
dXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlckltYWdlPihlbGVtZW50KCksIFdURjo6bW92ZShzdHlsZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCmluZGV4IGU2ZWY1YzUuLjcyMzZkMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNGb3JtRGF0YUFwcGVuZGFibGUoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVF
dmVudChFdmVudCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhbHRBdHRyaWJ1dGVDaGFu
Z2VkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNyY0F0dHJpYnV0ZUNoYW5nZWQoKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA4MGI0OWZlLi5jMDg5ZDc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC00NzksNyArNDc5LDcgQEAgUGFzc1Jl
ZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IElucHV0VHlwZTo6Zm9ybUZvclN1Ym1pc3Npb24oKSBjb25z
dAogICAgIHJldHVybiBlbGVtZW50KCkuZm9ybSgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IElucHV0VHlwZTo6Y3JlYXRlSW5wdXRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PihSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoZWxlbWVudCgpLCBXVEY6
Om1vdmUoc3R5bGUpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCA3MzJlZGVjLi44
NmFjOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBNaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucwogICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKCk7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRTZWFyY2hSZXN1bHQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9MYWJlbHNOb2RlTGlzdC5oCmluZGV4IGI4NTFhMzEuLmExMTlkM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0xhYmVsc05vZGVMaXN0LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBMYWJlbHNOb2RlTGlzdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRMaXZlTm9kZUxp
c3Q8TGFiZWxzTm9kZUxpc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxMYWJlbHNO
b2RlTGlzdD4gY3JlYXRlKExhYmVsYWJsZUVsZW1lbnQmIGZvck5vZGUsIGNvbnN0IEF0b21pY1N0
cmluZyYpCisgICAgc3RhdGljIFJlZjxMYWJlbHNOb2RlTGlzdD4gY3JlYXRlKExhYmVsYWJsZUVs
ZW1lbnQmIGZvck5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBMYWJlbHNOb2RlTGlzdChmb3JOb2RlKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhZGlvTm9kZUxpc3QuaAppbmRleCA4YmNmMDJiLi4zZmNjOTcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhZGlvTm9kZUxpc3QuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFJhZGlvTm9kZUxpc3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVM
aXN0PFJhZGlvTm9kZUxpc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxSYWRpb05v
ZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKKyAgICBzdGF0aWMgUmVmPFJhZGlvTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJO
b2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmFkaW9Ob2RlTGlzdChyb290Tm9kZSwgbmFtZSkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggOTZiMThjZC4uODgx
Mjc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTI4NCw3ICsy
ODQsNyBAQCBIVE1MRWxlbWVudCogUmFuZ2VJbnB1dFR5cGU6OnNsaWRlclRodW1iRWxlbWVudCgp
IGNvbnN0CiAgICAgcmV0dXJuICZ0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpOwogfQogCi1SZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIo
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmFu
Z2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTbGlkZXI+KGVsZW1lbnQoKSwg
V1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5k
ZXggZTdiNWUxMS4uOWQ5MTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApA
QCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZURv
d25FdmVudChNb3VzZUV2ZW50Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IERlY2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwm
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNo
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcApp
bmRleCBmYTY4YjI0Li5lZDEyNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Nl
YXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5
cGUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjptYXhSZXN1bHRz
QXR0cmlidXRlQ2hhbmdlZCgpCiAgICAgICAgIHVwZGF0ZVJlc3VsdEJ1dHRvblBzZXVkb1R5cGUo
Km1fcmVzdWx0c0J1dHRvbiwgZWxlbWVudCgpLm1heFJlc3VsdHMoKSk7CiB9CiAKLVJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU2VhcmNo
SW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2VhcmNoRmllbGQ+KGVsZW1lbnQo
KSwgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1NlYXJjaElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUu
aAppbmRleCAxNWRkZjkyLi4wZDczODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1NlYXJjaElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRU
eXBlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgYWRkU2VhcmNoUmVzdWx0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIG1heFJlc3Vs
dHNBdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBuZWVkc0NvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IGU3YmMyOGIuLmJmZTNmNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTIyMyw3ICsyMjMsNyBAQCBi
b29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCogZXZl
bnQpCiAgICAgICAgIHx8IElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseShldmVudCk7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0
ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lPihlbGVtZW50KCksIFdURjo6bW92ZShzdHlsZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKaW5kZXggNGYwZTZmNi4uMzdj
ZDNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCkBAIC04NSw3
ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUJlZm9yZVRleHRJbnNl
cnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Kikgb3ZlcnJpZGUgZmluYWw7CiAgICAg
dmlydHVhbCB2b2lkIGZvcndhcmRFdmVudChFdmVudCopIG92ZXJyaWRlIGZpbmFsOwogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50Kikgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJl
cihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0IG92
ZXJyaWRlOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCBTdHJpbmcgc2FuaXRpemVW
YWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAppbmRleCA1ZTNhYmQyLi4z
N2ZhNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFy
a2VyQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01h
cmtlckNvbnRyb2wuY3BwCkBAIC01MCw3ICs1MCw3IEBAIERldGFpbHNNYXJrZXJDb250cm9sOjpE
ZXRhaWxzTWFya2VyQ29udHJvbChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgc2V0UHNldWRvKEF0
b21pY1N0cmluZygiLXdlYmtpdC1kZXRhaWxzLW1hcmtlciIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IERldGFpbHNN
YXJrZXJDb250cm9sOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gRGV0YWlsc01hcmtlckNvbnRyb2w6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckRldGFpbHNNYXJrZXI+KCp0aGlzLCBXVEY6Om1vdmUo
c3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFp
bHNNYXJrZXJDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFy
a2VyQ29udHJvbC5oCmluZGV4IDM2ZWE1NmYuLjgxY2YxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaApAQCAtNDMsNyArNDMsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIERldGFpbHNNYXJrZXJDb250cm9sKERvY3VtZW50Jik7
CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJikgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggYzAzNDE0MS4uMmQzM2I4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sVGltZWxpbmVDb250
YWluZXJFbGVtZW50OjpzZXRUaW1lRGlzcGxheXNIaWRkZW4oYm9vbCBoaWRkZW4pCiAgICAgfQog
fQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWlu
ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWlu
ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGlu
ZUNvbnRhaW5lcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpAQCAtMzMwLDcgKzMzMCw3
IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4g
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29uCiAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgp
OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1lZGlhVm9s
dW1lU2xpZGVyQ29udGFpbmVyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CkBAIC0xMDg4
LDcgKzEwODgsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVs
ZW1lbnQ+IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lcgogICAgIHJldHVybiBlbGVtZW50
LnJlbGVhc2UoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAppbmRl
eCBlNDUyYzMyLi4zOWM5OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudChE
b2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiB9OwogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NTYsNyArNDU2LDcgQEAgcHJpdmF0
ZToKIAogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQo
RG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+
IGNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgdGV4dFRyYWNrUmVwcmVzZW50YXRpb25Cb3VuZHNDaGFuZ2VkKGNvbnN0IEludFJl
Y3QmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
dGVyU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNo
YWRvd0VsZW1lbnQuY3BwCmluZGV4IDZlYzRlNTUuLjQwYmRlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcApAQCAtNzMsNyArNzMs
NyBAQCBib29sIE1ldGVySW5uZXJFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gcmVuZGVyICYmICFyZW5kZXItPnRoZW1lKCkuc3Vw
cG9ydHNNZXRlcihyZW5kZXItPnN0eWxlKCkuYXBwZWFyYW5jZSgpKSAmJiBIVE1MRGl2RWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1ldGVySW5uZXJFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZXRlcj4oKnRoaXMsIFdURjo6bW92ZShzdHls
ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFk
b3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1l
bnQuaAppbmRleCBkMWIwZTc4Li5lN2Q1ZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuaApAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgog
ICAgIE1ldGVySW5uZXJFbGVtZW50KERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJl
bmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiB9
OwogCiBpbmxpbmUgUGFzc1JlZlB0cjxNZXRlcklubmVyRWxlbWVudD4gTWV0ZXJJbm5lckVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAppbmRleCA5MDQxN2YxLi4zMjll
ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRv
d0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hh
ZG93RWxlbWVudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgUHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OlBy
b2dyZXNzSW5uZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKIH0KIAotUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
UHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclByb2dyZXNz
PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5oCmluZGV4IDE4ZGJjOTkuLjM0MDFmZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxl
bWVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUHJvZ3Jlc3NJ
bm5lckVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4
IDQ4M2ZhZTUuLmI0YzZhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNzcsNyArNzcsNyBAQCBpbmxpbmUgc3RhdGljIGJv
b2wgaGFzVmVydGljYWxBcHBlYXJhbmNlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZW5kZXJTbGlkZXJUaHVtYjo6UmVu
ZGVyU2xpZGVyVGh1bWIoU2xpZGVyVGh1bWJFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclNsaWRlclRodW1iOjpSZW5kZXJTbGlkZXJUaHVtYihTbGlk
ZXJUaHVtYkVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6
IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpAQCAtMTEx
LDcgKzExMSw3IEBAIGJvb2wgUmVuZGVyU2xpZGVyVGh1bWI6OmlzU2xpZGVyVGh1bWIoKSBjb25z
dAogLy8gaHR0cDovL3dlYmtpdC5vcmcvYi82MjUzNQogY2xhc3MgUmVuZGVyU2xpZGVyQ29udGFp
bmVyIGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJTbGlkZXJDb250YWluZXIoU2xpZGVyQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCisgICAgUmVuZGVyU2xpZGVyQ29udGFpbmVyKFNsaWRlckNv
bnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICAg
ICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgIHsK
ICAgICB9CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBv
c2l0aW9uRnJvbVZhbHVlKCkKICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQoKTsK
IH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyU2xpZGVyVGh1bWI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KQEAgLTYxNSw3ICs2
MTUsNyBAQCBQYXNzUmVmUHRyPFNsaWRlckNvbnRhaW5lckVsZW1lbnQ+IFNsaWRlckNvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2xpZGVyQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNsaWRl
ckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNsaWRlckNvbnRh
aW5lcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAppbmRleCBmM2VlZDMyLi43MjFjZWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApA
QCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNsaWRlclRodW1iRWxlbWVu
dChEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVm
PFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlZlB0cjxFbGVtZW50PiBj
bG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBtYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xhc3MoKSBjb25zdCBvdmVycmlk
ZTsKQEAgLTExNiw3ICsxMTYsNyBAQCBpbmxpbmUgUGFzc1JlZlB0cjxTbGlkZXJUaHVtYkVsZW1l
bnQ+IFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bQogCiBjbGFzcyBS
ZW5kZXJTbGlkZXJUaHVtYiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGlj
OgotICAgIFJlbmRlclNsaWRlclRodW1iKFNsaWRlclRodW1iRWxlbWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTbGlkZXJUaHVtYihTbGlkZXJUaHVtYkVsZW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZvaWQgdXBkYXRlQXBwZWFyYW5jZShSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUpOwogCiBwcml2YXRlOgpAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBTbGlkZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7Ci0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdCBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IGM3MjdkN2QuLmQzZGI5MzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcApAQCAtNTYsNyArNTYsNyBAQCBQYXNzUmVmUHRyPFRleHRDb250cm9s
SW5uZXJDb250YWluZXI+IFRleHRDb250cm9sSW5uZXJDb250YWluZXI6OmNyZWF0ZShEb2N1bWVu
dAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcihkb2N1
bWVudCkpOwogfQogICAgIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFRleHRDb250cm9sSW5u
ZXJDb250YWluZXI6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyQ29udGFpbmVy
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyPigq
dGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50
KQogICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9
CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jaz4oKnRoaXMsIFdURjo6bW92
ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuaAppbmRleCBkMzljZGI3Li5iMjQ3NTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
aApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dENv
bnRyb2xJbm5lckNvbnRhaW5lcj4gY3JlYXRlKERvY3VtZW50Jik7CiBwcm90ZWN0ZWQ6CiAgICAg
VGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcihEb2N1bWVudCYpOwotICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiB9OwogCiBj
bGFzcyBUZXh0Q29udHJvbElubmVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVu
dCB7CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBUZXh0Q29udHJv
bElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVm
UHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xz
QnV0dG9uRWxlbWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1h
Z2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCmluZGV4IGEzNWE3NjkuLjY5NzIzYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0lt
YWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckltYWdlQ29udHJvbHNCdXR0b24gZmluYWwgOiBw
dWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZUNvbnRyb2xz
QnV0dG9uKEhUTUxFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlcklt
YWdlQ29udHJvbHNCdXR0b24oSFRNTEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAg
IHZpcnR1YWwgflJlbmRlckltYWdlQ29udHJvbHNCdXR0b24oKTsKIAogcHJpdmF0ZToKQEAgLTU1
LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHls
ZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsK
IAotUmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbjo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbihI
VE1MRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJJ
bWFnZUNvbnRyb2xzQnV0dG9uOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50
JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zs
b3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCB2
b2lkIEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVu
dCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxl
bWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFj
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uPigqdGhpcywg
V1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oCmluZGV4IDU5
ODNhMjAuLjUzZDcyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21h
Yy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oCkBAIC00Miw3ICs0
Miw3IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMoRG9jdW1l
bnQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlQ29udHJvbHNCdXR0
b25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1l
bnRNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNS
b290RWxlbWVudE1hYy5jcHAKaW5kZXggZDk2NDgxMy4uZDUyNzFlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290
RWxlbWVudE1hYy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSZW5kZXJJbWFnZUNvbnRyb2xzIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJJbWFnZUNvbnRyb2xzKEhUTUxFbGVtZW50JiwgUmVm
PFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZUNvbnRyb2xzKCk7CiAK
IHByaXZhdGU6CkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIH07CiAKLVJlbmRlckltYWdlQ29udHJvbHM6OlJlbmRlckltYWdlQ29udHJv
bHMoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVySW1hZ2VDb250cm9sczo6UmVuZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1l
bnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CkBAIC0xMDIsNyArMTAyLDcgQEAgSW1hZ2VDb250
cm9sc1Jvb3RFbGVtZW50TWFjOjp+SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKCkKIHsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVySW1hZ2VDb250cm9scz4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29u
dHJvbHNSb290RWxlbWVudE1hYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0lt
YWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCmluZGV4IDY4ZDJmY2IuLjYwZWM1MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVs
ZW1lbnRNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250
cm9sc1Jvb3RFbGVtZW50TWFjLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMoRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVm
PFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1
ZS5jcHAKaW5kZXggMzgyNmYzZC4uYTY2MDE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRU
Q3VlLmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgVlRUQ3VlQm94
Ojp2dHRDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpCiAgICAgcmV0dXJuIHRyYWNrRGlzcGxheUJveFNo
YWRvd1BzZXVkb0lkOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVlRUQ3VlQm94Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gVlRUQ3VlQm94OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJW
VFRDdWU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZU
VEN1ZS5oCmluZGV4IDc2MTNmZDQuLmNjMWRmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgVlRUQ3VlQm94
KERvY3VtZW50JiwgVlRUQ3VlJik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
IGZpbmFsOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgVlRU
Q3VlJiBtX2N1ZTsKICAgICBpbnQgbV9mb250U2l6ZUZyb21DYXB0aW9uVXNlclByZWZzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CmluZGV4IGUzNzAxMzguLjFmNDVkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBQYXNz
UmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gQ2FjaGVkQ1NTU3R5bGVTaGVldDo6cmVzdG9yZVBh
cnNlZFN0eWxlU2hlZXQoY29ucwogICAgIHJldHVybiBtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZTsK
IH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzYXZlUGFyc2VkU3R5bGVTaGVldChQYXNz
UmVmPFN0eWxlU2hlZXRDb250ZW50cz4gc2hlZXQpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OnNhdmVQYXJzZWRTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQpCiB7
CiAgICAgQVNTRVJUKHNoZWV0LmdldCgpLmlzQ2FjaGVhYmxlKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA5NDBmZDFm
Li5iYTA3ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBjb25zdCBTdHJpbmcgc2hlZXRUZXh0KGJvb2wgZW5mb3JjZU1JTUVUeXBlID0gdHJ1ZSwg
Ym9vbCogaGFzVmFsaWRNSU1FVHlwZSA9IDApIGNvbnN0OwogCiAgICAgICAgIFBhc3NSZWZQdHI8
U3R5bGVTaGVldENvbnRlbnRzPiByZXN0b3JlUGFyc2VkU3R5bGVTaGVldChjb25zdCBDU1NQYXJz
ZXJDb250ZXh0Jik7Ci0gICAgICAgIHZvaWQgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoUGFzc1JlZjxT
dHlsZVNoZWV0Q29udGVudHM+KTsKKyAgICAgICAgdm9pZCBzYXZlUGFyc2VkU3R5bGVTaGVldChS
ZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wg
Y2FuVXNlU2hlZXQoYm9vbCBlbmZvcmNlTUlNRVR5cGUsIGJvb2wqIGhhc1ZhbGlkTUlNRVR5cGUp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaAppbmRleCAzYzBlYTU1Li5lYmUzZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtNjgsNyArNjgsNyBA
QCBmcmllbmQgY2xhc3MgSW1hZ2VMb2FkZXI7CiBmcmllbmQgY2xhc3MgUmVzb3VyY2VDYWNoZVZh
bGlkYXRpb25TdXBwcmVzc29yOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q2FjaGVk
UmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkUmVzb3VyY2VMb2FkZXIoZG9jdW1lbnRMb2FkZXIp
KTsgfQorICAgIHN0YXRpYyBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIoZG9jdW1lbnRMb2FkZXIpKTsgfQogICAgIH5DYWNoZWRSZXNvdXJjZUxvYWRl
cigpOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IHJlcXVlc3RJbWFn
ZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAppbmRleCBiZGI2YmY2Li5kOGRm
NGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2Up
CiAgICAgTWF0aE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAoaGFzVGFnTmFtZShh
bm5vdGF0aW9uX3htbFRhZykpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJN
YXRoTUxSb3c+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCmluZGV4IDM2MzZhYWIu
LjcwOWZlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKTsKIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJy
aWRlOwogfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxNYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1l
bnQuY3BwCmluZGV4IDM3OWEyZmYuLjM1MDQyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTE1hdGhFbGVtZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQCBQYXNzUmVmUHRyPE1hdGhN
TE1hdGhFbGVtZW50PiBNYXRoTUxNYXRoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWF0aE1MTWF0aEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTE1hdGhF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE1hdGg+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKaW5kZXggMmIxMjk0My4u
OWFmMjU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNYXRoTUxNYXRoRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIH07
CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xv
c2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1l
bnQuY3BwCmluZGV4IGQ1OTdlNGEuLmM3NTVkNzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFBhc3NSZWZQ
dHI8TWF0aE1MTWVuY2xvc2VFbGVtZW50PiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRoTUxNZW5jbG9zZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IE1hdGhNTE1lbmNsb3NlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTE1lbmNsb3Nl
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsgICAgCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTE1lbmNsb3NlPigq
dGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MTWVuY2xvc2VFbGVtZW50LmgKaW5kZXggZWU5NzMzNS4uMjJhMzNjZCAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWF0aE1MTWVuY2xvc2VFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlz
UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGls
ZHJlbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVs
ZW1lbnQuY3BwCmluZGV4IDVmZmE4NWMuLjZkNTI5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUGFzc1JlZlB0
cjxNYXRoTUxTZWxlY3RFbGVtZW50PiBNYXRoTUxTZWxlY3RFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hdGhNTFNlbGVjdEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1h
dGhNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxTZWxlY3RFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxSb3c+KCp0aGlzLCBXVEY6Om1vdmUo
c3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxl
Y3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5o
CmluZGV4IDAzYTg1MzQuLjM1NDAwZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxTZWxlY3RFbGVtZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIE1hdGhNTFNlbGVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmKTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRl
UmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAppbmRleCA1MDMxMmIzLi40NTZjODE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKQEAgLTc1LDcgKzc1
LDcgQEAgdm9pZCBNYXRoTUxUZXh0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRo
TUxUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTFRleHRFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIGlmICho
YXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptb1RhZykpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaAppbmRleCBiZWQ3NTkwLi5jNjg0
MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaApAQCAtNDIs
NyArNDIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1hdGhNTFRleHRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDJiMDQwMDQuLjQ5MDYxZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTY0NSw3ICsxNjQ1LDcgQEAgdm9pZCBQYWdlOjpzZXRV
c2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVyKiB1c2VyQ29udGVudENv
bnRyb2xsZXIKICAgICB9CiB9CiAKLXZvaWQgUGFnZTo6c2V0U3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyKFBhc3NSZWY8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBzdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIpCit2b2lkIFBhZ2U6OnNldFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihSZWY8U3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyPiYmIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcikKIHsKICAgICBt
X3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci0+cmVtb3ZlUGFnZSgqdGhpcyk7CiAgICAgbV9zdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBXVEY6Om1vdmUoc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
KTsKQEAgLTE2NTksNyArMTY1OSw3IEBAIFZpc2l0ZWRMaW5rU3RvcmUmIFBhZ2U6OnZpc2l0ZWRM
aW5rU3RvcmUoKQogICAgIHJldHVybiBtX3Zpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLXZvaWQgUGFn
ZTo6c2V0VmlzaXRlZExpbmtTdG9yZShQYXNzUmVmPFZpc2l0ZWRMaW5rU3RvcmU+IHZpc2l0ZWRM
aW5rU3RvcmUpCit2b2lkIFBhZ2U6OnNldFZpc2l0ZWRMaW5rU3RvcmUoUmVmPFZpc2l0ZWRMaW5r
U3RvcmU+JiYgdmlzaXRlZExpbmtTdG9yZSkKIHsKICAgICBtX3Zpc2l0ZWRMaW5rU3RvcmUtPnJl
bW92ZVBhZ2UoKnRoaXMpOwogICAgIG1fdmlzaXRlZExpbmtTdG9yZSA9IFdURjo6bW92ZSh2aXNp
dGVkTGlua1N0b3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNWYzOGNhMi4uOGVlMjYzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKQEAgLTQwMywxMyArNDAzLDEzIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsYXN0
U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFNw
YXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlc0NvdW50OyB9CiAKICAgICBTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXImIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpIHsgcmV0dXJuIG1fc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIoUGFzc1JlZjxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+KTsKKyAgICB2b2lkIHNldFN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihSZWY8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiYmKTsK
IAogICAgIFVzZXJDb250ZW50Q29udHJvbGxlciogdXNlckNvbnRlbnRDb250cm9sbGVyKCkgeyBy
ZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldFVzZXJD
b250ZW50Q29udHJvbGxlcihVc2VyQ29udGVudENvbnRyb2xsZXIqKTsKIAogICAgIFZpc2l0ZWRM
aW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUoKTsKLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rU3Rv
cmUoUGFzc1JlZjxWaXNpdGVkTGlua1N0b3JlPik7CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1N0
b3JlKFJlZjxWaXNpdGVkTGlua1N0b3JlPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlc3Np
b25JRChTZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVz
c2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgK
aW5kZXggMGZjNDg5Yy4uYjJjZGZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdl
SGFuZGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
VXNlck1lc3NhZ2VIYW5kbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVy
PiwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWY8VXNlck1lc3NhZ2VIYW5kbGVyPiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorICAgIHN0YXRpYyBSZWY8VXNlck1l
c3NhZ2VIYW5kbGVyPiBjcmVhdGUoRnJhbWUmIGZyYW1lLCBVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VXNlck1lc3NhZ2VIYW5kbGVyKGZyYW1lLCBkZXNjcmlwdG9yKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaAppbmRleCA4
MThmMTU1Li4zNmY5YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2UuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBET01XcmFwcGVy
V29ybGQ7CiAKIGNsYXNzIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlPiwgcHVibGljIEZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8VXNlck1lc3NhZ2VI
YW5kbGVyc05hbWVzcGFjZT4gY3JlYXRlKEZyYW1lJiBmcmFtZSkKKyAgICBzdGF0aWMgUmVmPFVz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U+IGNyZWF0ZShGcmFtZSYgZnJhbWUpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNl
KGZyYW1lKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA3M2JhMzYxLi5iYzQ5MDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVy
LmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6
OmFkZEV2ZW50VG9EaXNwYXRjaChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQsCiAgICAgc3Rh
cnRVcGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0Y2hlcigpOwogfQogCi12b2lkIEFuaW1hdGlvbkNv
bnRyb2xsZXJQcml2YXRlOjphZGRFbGVtZW50Q2hhbmdlVG9EaXNwYXRjaChQYXNzUmVmPEVsZW1l
bnQ+IGVsZW1lbnQpCit2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjphZGRFbGVtZW50
Q2hhbmdlVG9EaXNwYXRjaChSZWY8RWxlbWVudD4mJiBlbGVtZW50KQogewogICAgIG1fZWxlbWVu
dENoYW5nZXNUb0Rpc3BhdGNoLmFwcGVuZChXVEY6Om1vdmUoZWxlbWVudCkpOwogICAgIEFTU0VS
VCghbV9lbGVtZW50Q2hhbmdlc1RvRGlzcGF0Y2gubGFzdCgpLT5kb2N1bWVudCgpLmluUGFnZUNh
Y2hlKCkpOwpAQCAtNDkxLDIwICs0OTEsMjAgQEAgdm9pZCBBbmltYXRpb25Db250cm9sbGVyOjpj
YW5jZWxBbmltYXRpb25zKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgICAgICBlbGVtZW50
LT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKIH0KIAotUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyhSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUpCitSZWY8
UmVuZGVyU3R5bGU+IEFuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIFJlZjxSZW5kZXJTdHlsZT4mJiBuZXdTdHlsZSkKIHsKICAgICAv
LyBEb24ndCBkbyBhbnl0aGluZyBpZiB3ZSdyZSBpbiB0aGUgY2FjaGUKICAgICBpZiAocmVuZGVy
ZXIuZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKQotICAgICAgICByZXR1cm4gbmV3U3R5bGU7Cisg
ICAgICAgIHJldHVybiBXVEY6Om1vdmUobmV3U3R5bGUpOwogCiAgICAgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlID0gcmVuZGVyZXIuaGFzSW5pdGlhbGl6ZWRTdHlsZSgpID8gJnJlbmRlcmVyLnN0eWxl
KCkgOiBudWxscHRyOwogCiAgICAgaWYgKCghb2xkU3R5bGUgfHwgKCFvbGRTdHlsZS0+YW5pbWF0
aW9ucygpICYmICFvbGRTdHlsZS0+dHJhbnNpdGlvbnMoKSkpICYmICghbmV3U3R5bGUuZ2V0KCku
YW5pbWF0aW9ucygpICYmICFuZXdTdHlsZS5nZXQoKS50cmFuc2l0aW9ucygpKSkKLSAgICAgICAg
cmV0dXJuIG5ld1N0eWxlOworICAgICAgICByZXR1cm4gV1RGOjptb3ZlKG5ld1N0eWxlKTsKIAog
ICAgIC8vIERvbid0IHJ1biB0cmFuc2l0aW9ucyB3aGVuIHByaW50aW5nLgogICAgIGlmIChyZW5k
ZXJlci52aWV3KCkucHJpbnRpbmcoKSkKLSAgICAgICAgcmV0dXJuIG5ld1N0eWxlOworICAgICAg
ICByZXR1cm4gV1RGOjptb3ZlKG5ld1N0eWxlKTsKIAogICAgIC8vIEZldGNoIG91ciBjdXJyZW50
IHNldCBvZiBpbXBsaWNpdCBhbmltYXRpb25zIGZyb20gYSBoYXNodGFibGUuICBXZSB0aGVuIGNv
bXBhcmUgdGhlbQogICAgIC8vIGFnYWluc3QgdGhlIGFuaW1hdGlvbnMgaW4gdGhlIHN0eWxlIGFu
ZCBtYWtlIHN1cmUgd2UncmUgaW4gc3luYy4gIElmIGRlc3RpbmF0aW9uIHZhbHVlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oCmlu
ZGV4IDQ1YWJkMjUuLjM5NTgxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIH5BbmltYXRpb25Db250cm9sbGVyKCk7CiAKICAgICB2b2lkIGNhbmNlbEFuaW1hdGlvbnMo
UmVuZGVyRWxlbWVudCYpOwotICAgIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHVwZGF0ZUFuaW1hdGlv
bnMoUmVuZGVyRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IG5ld1N0eWxlKTsKKyAgICBS
ZWY8UmVuZGVyU3R5bGU+IHVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCYsIFJlZjxSZW5k
ZXJTdHlsZT4mJiBuZXdTdHlsZSk7CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gZ2V0QW5p
bWF0ZWRTdHlsZUZvclJlbmRlcmVyKFJlbmRlckVsZW1lbnQmKTsKIAogICAgIC8vIFRoaXMgaXMg
Y2FsbGVkIHdoZW4gYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9uIG9yIHRyYW5zaXRpb24gaGFzIGFj
dHVhbGx5IHN0YXJ0ZWQgdG8gYW5pbWF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCmluZGV4IGVmMWVk
ZDMuLmRiMDIxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1cGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0Y2hlckZpcmVkKCk7CiAgICAg
dm9pZCBzdGFydFVwZGF0ZVN0eWxlSWZOZWVkZWREaXNwYXRjaGVyKCk7CiAgICAgdm9pZCBhZGRF
dmVudFRvRGlzcGF0Y2goUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZWxhcHNlZFRpbWUp
OwotICAgIHZvaWQgYWRkRWxlbWVudENoYW5nZVRvRGlzcGF0Y2goUGFzc1JlZjxFbGVtZW50Pik7
CisgICAgdm9pZCBhZGRFbGVtZW50Q2hhbmdlVG9EaXNwYXRjaChSZWY8RWxlbWVudD4mJik7CiAK
ICAgICBib29sIGhhc0FuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiAhbV9jb21wb3NpdGVBbmlt
YXRpb25zLmlzRW1wdHkoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAppbmRleCBkZDU1YzI4Li43ZmY3ZTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlv
bi5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRl
S2V5ZnJhbWVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBSZW5kZQogICAgICAg
ICBtX2tleWZyYW1lQW5pbWF0aW9ucy5yZW1vdmUoYW5pbXNUb0JlUmVtb3ZlZFtqXSk7CiB9CiAK
LVBhc3NSZWY8UmVuZGVyU3R5bGU+IENvbXBvc2l0ZUFuaW1hdGlvbjo6YW5pbWF0ZShSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUm
IHRhcmdldFN0eWxlKQorUmVmPFJlbmRlclN0eWxlPiBDb21wb3NpdGVBbmltYXRpb246OmFuaW1h
dGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJl
bmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJlc3Vs
dFN0eWxlOwogCkBAIC0zMjIsNyArMzIyLDkgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gQ29tcG9z
aXRlQW5pbWF0aW9uOjphbmltYXRlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZW5kZXIKICAg
ICAgICAgICAgIGtleWZyYW1lQW5pbS0+YW5pbWF0ZSh0aGlzLCAmcmVuZGVyZXIsIGN1cnJlbnRT
dHlsZSwgJnRhcmdldFN0eWxlLCByZXN1bHRTdHlsZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHJl
c3VsdFN0eWxlID8gcmVzdWx0U3R5bGUucmVsZWFzZU5vbk51bGwoKSA6IHRhcmdldFN0eWxlOwor
ICAgIGlmIChyZXN1bHRTdHlsZSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdFN0eWxlLnJlbGVhc2VO
b25OdWxsKCk7CisgICAgcmV0dXJuIHRhcmdldFN0eWxlOwogfQogCiBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBDb21wb3NpdGVBbmltYXRpb246OmdldEFuaW1hdGVkU3R5bGUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaApp
bmRleCAyY2ExMzgwLi4xYzE0M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdm9pZCBjbGVhclJlbmRlcmVyKCk7CiAKLSAgICBQYXNzUmVmPFJlbmRlclN0eWxl
PiBhbmltYXRlKFJlbmRlckVsZW1lbnQmLCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5k
ZXJTdHlsZSYgdGFyZ2V0U3R5bGUpOworICAgIFJlZjxSZW5kZXJTdHlsZT4gYW5pbWF0ZShSZW5k
ZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUmIHRhcmdl
dFN0eWxlKTsKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBnZXRBbmltYXRlZFN0eWxlKCkg
Y29uc3Q7CiAKICAgICBkb3VibGUgdGltZVRvTmV4dFNlcnZpY2UoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggYjlkZmNhNi4uNjRj
MGNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmPENhbGN1
bGF0aW9uVmFsdWU+IENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2Fs
Y0V4cHJlc3Npb25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJh
bmdlKQorUmVmPENhbGN1bGF0aW9uVmFsdWU+IENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShzdGQ6
OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRpb25QZXJtaXR0
ZWRWYWx1ZVJhbmdlIHJhbmdlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhbGN1bGF0
aW9uVmFsdWUoV1RGOjptb3ZlKHZhbHVlKSwgcmFuZ2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCA0NDhhMzVhLi5iMjI4YTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC0xMzYsNyArMTM2LDcg
QEAgcHJpdmF0ZToKIAogY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVk
PENhbGN1bGF0aW9uVmFsdWU+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UGFzc1JlZjxDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHBy
ZXNzaW9uTm9kZT4sIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGUoc3RkOjp1bmlxdWVf
cHRyPENhbGNFeHByZXNzaW9uTm9kZT4sIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSk7
CiAgICAgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0OwogCiAgICAgYm9vbCBz
aG91bGRDbGFtcFRvTm9uTmVnYXRpdmUoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENsYW1wVG9O
b25OZWdhdGl2ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKaW5kZXggNmQ1YTY1Yy4u
NjJkMGI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCkBAIC0xNTcsNyArMTU3LDcg
QEAgY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZU1hcCB7CiBwdWJsaWM6CiAgICAgQ2FsY3VsYXRpb25W
YWx1ZU1hcCgpOwogCi0gICAgdW5zaWduZWQgaW5zZXJ0KFBhc3NSZWY8Q2FsY3VsYXRpb25WYWx1
ZT4pOworICAgIHVuc2lnbmVkIGluc2VydChSZWY8Q2FsY3VsYXRpb25WYWx1ZT4mJik7CiAgICAg
dm9pZCByZWYodW5zaWduZWQgaGFuZGxlKTsKICAgICB2b2lkIGRlcmVmKHVuc2lnbmVkIGhhbmRs
ZSk7CiAKQEAgLTE5Miw3ICsxOTIsNyBAQCBpbmxpbmUgQ2FsY3VsYXRpb25WYWx1ZU1hcDo6Q2Fs
Y3VsYXRpb25WYWx1ZU1hcCgpCiB7CiB9CiAgICAgCi1pbmxpbmUgdW5zaWduZWQgQ2FsY3VsYXRp
b25WYWx1ZU1hcDo6aW5zZXJ0KFBhc3NSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gdmFsdWUpCitpbmxp
bmUgdW5zaWduZWQgQ2FsY3VsYXRpb25WYWx1ZU1hcDo6aW5zZXJ0KFJlZjxDYWxjdWxhdGlvblZh
bHVlPiYmIHZhbHVlKQogewogICAgIEFTU0VSVChtX25leHRBdmFpbGFibGVIYW5kbGUpOwogCkBA
IC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIENhbGN1bGF0aW9uVmFsdWVNYXAmIGNhbGN1bGF0aW9u
VmFsdWVzKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1MZW5ndGg6Okxlbmd0aChQYXNzUmVmPENh
bGN1bGF0aW9uVmFsdWU+IHZhbHVlKQorTGVuZ3RoOjpMZW5ndGgoUmVmPENhbGN1bGF0aW9uVmFs
dWU+JiYgdmFsdWUpCiAgICAgOiBtX2hhc1F1aXJrKGZhbHNlKQogICAgICwgbV90eXBlKENhbGN1
bGF0ZWQpCiAgICAgLCBtX2lzRmxvYXQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCmlu
ZGV4IGI0YzY4ZjguLjBhZTVkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCkBAIC01Miw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICBMZW5ndGgoZmxvYXQgdmFsdWUsIExlbmd0aFR5cGUsIGJv
b2wgaGFzUXVpcmsgPSBmYWxzZSk7CiAgICAgTGVuZ3RoKGRvdWJsZSB2YWx1ZSwgTGVuZ3RoVHlw
ZSwgYm9vbCBoYXNRdWlyayA9IGZhbHNlKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IExlbmd0aChQYXNzUmVmPENhbGN1bGF0aW9uVmFsdWU+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBMZW5ndGgoUmVmPENhbGN1bGF0aW9uVmFsdWU+JiYpOwogCiAgICAgTGVuZ3RoKGNv
bnN0IExlbmd0aCYpOwogICAgIExlbmd0aChMZW5ndGgmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDM5MjMwYzguLjg5MGI2OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHRlbXBs
YXRlIDw+IHZvaWQgZGVsZXRlT3duZWRQdHI8V2ViQ29yZTo6VGV4dExheW91dD4oV2ViQ29yZTo6
VGV4dExheW91dCogcHRyKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVm
PEZvbnRHbHlwaHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250R2x5cGhzKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPik7CitzdGF0aWMgUmVmPEZvbnRHbHlw
aHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250R2x5cGhzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPik7CiAKIGNvbnN0IHVpbnQ4X3QgRm9udDo6c19yb3Vu
ZGluZ0hhY2tDaGFyYWN0ZXJUYWJsZVsyNTZdID0gewogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDEgLypcdCovLCAxIC8qXG4qLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKQEAgLTIxNSw3ICsyMTUsMTAgQEAgc3Ry
dWN0IEZvbnRHbHlwaHNDYWNoZUtleSB7CiBzdHJ1Y3QgRm9udEdseXBoc0NhY2hlRW50cnkgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEZvbnRHbHlwaHNDYWNo
ZUVudHJ5KEZvbnRHbHlwaHNDYWNoZUtleSYmIGssIFBhc3NSZWY8Rm9udEdseXBocz4gZykgOiBr
ZXkoV1RGOjptb3ZlKGspKSwgZ2x5cGhzKFdURjo6bW92ZShnKSkgeyB9CisgICAgRm9udEdseXBo
c0NhY2hlRW50cnkoRm9udEdseXBoc0NhY2hlS2V5JiYgaywgUmVmPEZvbnRHbHlwaHM+JiYgZykK
KyAgICAgICAgOiBrZXkoV1RGOjptb3ZlKGspKQorICAgICAgICAsIGdseXBocyhXVEY6Om1vdmUo
ZykpCisgICAgeyB9CiAgICAgRm9udEdseXBoc0NhY2hlS2V5IGtleTsKICAgICBSZWY8Rm9udEds
eXBocz4gZ2x5cGhzOwogfTsKQEAgLTI5Niw3ICsyOTksNyBAQCB2b2lkIHBydW5lVW5yZWZlcmVu
Y2VkRW50cmllc0Zyb21Gb250R2x5cGhzQ2FjaGUoKQogICAgICAgICBmb250R2x5cGhzQ2FjaGUo
KS5yZW1vdmUodG9SZW1vdmVbaV0pOwogfQogCi1zdGF0aWMgUGFzc1JlZjxGb250R2x5cGhzPiBy
ZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udEdseXBocyhjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbiwgUGFzc1JlZlB0cjxGb250U2VsZWN0b3I+IGZvbnRTZWxlY3RvcikKK3N0YXRp
YyBSZWY8Rm9udEdseXBocz4gcmV0cmlldmVPckFkZENhY2hlZEZvbnRHbHlwaHMoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPiBm
b250U2VsZWN0b3IpCiB7CiAgICAgRm9udEdseXBoc0NhY2hlS2V5IGtleTsKICAgICBtYWtlRm9u
dEdseXBoc0NhY2hlS2V5KGtleSwgZm9udERlc2NyaXB0aW9uLCBmb250U2VsZWN0b3IuZ2V0KCkp
OwpAQCAtMzA4LDcgKzMxMSw3IEBAIHN0YXRpYyBQYXNzUmVmPEZvbnRHbHlwaHM+IHJldHJpZXZl
T3JBZGRDYWNoZWRGb250R2x5cGhzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGb250R2x5cGhzQ2FjaGVFbnRyeT4mIG5ld0VudHJ5ID0gYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZTsKICAgICBuZXdFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udEdseXBo
c0NhY2hlRW50cnk+KFdURjo6bW92ZShrZXkpLCBGb250R2x5cGhzOjpjcmVhdGUoZm9udFNlbGVj
dG9yKSk7Ci0gICAgUGFzc1JlZjxGb250R2x5cGhzPiBnbHlwaHMgPSBuZXdFbnRyeS0+Z2x5cGhz
LmdldCgpOworICAgIFJlZjxGb250R2x5cGhzPiBnbHlwaHMgPSBuZXdFbnRyeS0+Z2x5cGhzLmdl
dCgpOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2
YWwgPSA1MDsKICAgICBzdGF0aWMgY29uc3QgaW50IG1heGltdW1FbnRyaWVzID0gNDAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5oCmluZGV4IDExZDNh
OWMuLmVkOWU3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRHbHlwaHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
R2x5cGhzLmgKQEAgLTY4LDggKzY4LDggQEAgcHVibGljOgogICAgICAgICBHbHlwaFBhZ2VUcmVl
Tm9kZSogbV9wYWdlWmVybzsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWY8Rm9udEdseXBo
cz4gY3JlYXRlKFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRm9udEdseXBocyhmb250U2VsZWN0b3IpKTsgfQotICAgIHN0YXRpYyBQ
YXNzUmVmPEZvbnRHbHlwaHM+IGNyZWF0ZUZvclBsYXRmb3JtRm9udChjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udEdseXBocyhw
bGF0Zm9ybURhdGEpKTsgfQorICAgIHN0YXRpYyBSZWY8Rm9udEdseXBocz4gY3JlYXRlKFBhc3NS
ZWZQdHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Rm9udEdseXBocyhmb250U2VsZWN0b3IpKTsgfQorICAgIHN0YXRpYyBSZWY8Rm9udEdseXBocz4g
Y3JlYXRlRm9yUGxhdGZvcm1Gb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250R2x5cGhzKHBsYXRmb3JtRGF0YSkpOyB9CiAK
ICAgICB+Rm9udEdseXBocygpIHsgcmVsZWFzZUZvbnREYXRhKCk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKaW5kZXggNDg0ZDYwNC4uYTQyMTM0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCkBAIC01Nywx
MSArNTcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgR3JhZGllbnQgOiBw
dWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWY8R3JhZGllbnQ+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxv
YXRQb2ludCYgcDEpCisgICAgICAgIHN0YXRpYyBSZWY8R3JhZGllbnQ+IGNyZWF0ZShjb25zdCBG
bG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdyYWRpZW50KHAwLCBwMSkpOwogICAgICAgICB9Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmPEdyYWRpZW50PiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYg
cDAsIGZsb2F0IHIwLCBjb25zdCBGbG9hdFBvaW50JiBwMSwgZmxvYXQgcjEsIGZsb2F0IGFzcGVj
dFJhdGlvID0gMSkKKyAgICAgICAgc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZs
b2F0UG9pbnQmIHAwLCBmbG9hdCByMCwgY29uc3QgRmxvYXRQb2ludCYgcDEsIGZsb2F0IHIxLCBm
bG9hdCBhc3BlY3RSYXRpbyA9IDEpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEdyYWRpZW50KHAwLCByMCwgcDEsIHIxLCBhc3BlY3RSYXRpbykpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAppbmRleCA3MzZiOGZkLi40NzQ5MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTMzNSwyNSAr
MzM1LDI1IEBAIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBHcmFwaGljc0NvbnRleHQ6OnN0
YXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9zdGF0ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFN0cm9rZVBhdHRlcm4oUGFzc1JlZjxQYXR0ZXJuPiBwYXR0ZXJuKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKIHsK
ICAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50LmNsZWFyKCk7CiAgICAgbV9zdGF0ZS5zdHJva2VQ
YXR0ZXJuID0gV1RGOjptb3ZlKHBhdHRlcm4pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0RmlsbFBhdHRlcm4oUGFzc1JlZjxQYXR0ZXJuPiBwYXR0ZXJuKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCiB7CiAgICAgbV9z
dGF0ZS5maWxsR3JhZGllbnQuY2xlYXIoKTsKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gV1RG
Ojptb3ZlKHBhdHRlcm4pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3Jh
ZGllbnQoUGFzc1JlZjxHcmFkaWVudD4gZ3JhZGllbnQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50KQogewogICAgIG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQgPSBXVEY6Om1vdmUoZ3JhZGllbnQpOwogICAgIG1fc3RhdGUuc3Ry
b2tlUGF0dGVybi5jbGVhcigpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdy
YWRpZW50KFBhc3NSZWY8R3JhZGllbnQ+IGdyYWRpZW50KQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQpCiB7CiAgICAgbV9zdGF0
ZS5maWxsR3JhZGllbnQgPSBXVEY6Om1vdmUoZ3JhZGllbnQpOwogICAgIG1fc3RhdGUuZmlsbFBh
dHRlcm4uY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMTNlM2E1ZC4uMGVmNGJlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTIzNCwx
MCArMjM0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ29sb3JTcGFjZSBzdHJv
a2VDb2xvclNwYWNlKCkgY29uc3Q7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ry
b2tlQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAotICAgICAgICB2b2lkIHNldFN0
cm9rZVBhdHRlcm4oUGFzc1JlZjxQYXR0ZXJuPik7CisgICAgICAgIHZvaWQgc2V0U3Ryb2tlUGF0
dGVybihSZWY8UGF0dGVybj4mJik7CiAgICAgICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBj
b25zdDsKIAotICAgICAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFBhc3NSZWY8R3JhZGllbnQ+
KTsKKyAgICAgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYpOwogICAg
ICAgICBHcmFkaWVudCogc3Ryb2tlR3JhZGllbnQoKSBjb25zdDsKIAogICAgICAgICBXaW5kUnVs
ZSBmaWxsUnVsZSgpIGNvbnN0OwpAQCAtMjQ2LDEwICsyNDYsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlKCkgY29uc3Q7CiAgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSk7CiAKLSAgICAgICAgdm9pZCBzZXRGaWxsUGF0dGVybihQYXNzUmVmPFBhdHRlcm4+KTsKKyAg
ICAgICAgdm9pZCBzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJik7CiAgICAgICAgIFBhdHRl
cm4qIGZpbGxQYXR0ZXJuKCkgY29uc3Q7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRGaWxsR3JhZGllbnQoUGFzc1JlZjxHcmFkaWVudD4pOworICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYpOwogICAgICAgICBHcmFkaWVu
dCogZmlsbEdyYWRpZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBzZXRTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtcyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmgKaW5kZXggZjIwNTM4Yy4uYmI1
Y2M1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFT
b3VyY2VQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgTWVk
aWFTb3VyY2VQcml2YXRlQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VQcml2YXRlQ2xp
ZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4oUGFzc1JlZjxN
ZWRpYVNvdXJjZVByaXZhdGU+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVBbmRP
cGVuKFJlZjxNZWRpYVNvdXJjZVByaXZhdGU+JiYpID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhVGlt
ZSBkdXJhdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKaW5kZXggOWUxMTRjNi4uYTlhY2NjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKQEAgLTMxLDcgKzMxLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNy
ZWF0ZShQYXNzUmVmUHRyPEltYWdlPiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBl
YXRZKQorUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0ZShQYXNzUmVmUHRyPEltYWdlPiB0aWxl
SW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFBhdHRlcm4odGlsZUltYWdlLCByZXBlYXRYLCByZXBlYXRZKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggZjQyNTI1ZC4uM2VkYWYy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtNTEs
NyArNTEsNyBAQCBjbGFzcyBJbWFnZTsKIAogY2xhc3MgUGF0dGVybiBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFBhdHRlcm4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxQYXR0ZXJu
PiBjcmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wg
cmVwZWF0WSk7CisgICAgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUGFzc1JlZlB0cjxJbWFn
ZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CiAgICAgflBhdHRlcm4o
KTsKIAogICAgIEltYWdlKiB0aWxlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaAppbmRleCA2NGVkNTQ2Li43
OTI2MmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaApAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbk1hYyA6IHB1YmxpYyBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMo
KTsKLSAgICBzdGF0aWMgUGFzc1JlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4g
Y3JlYXRlKGlkKTsKKyAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uPiBjcmVhdGUoaWQpOwogCiAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUo
SlNDOjpFeGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbk1hYy5tbQppbmRleCA4ZDYyYWI2Li5hNjc2MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uTWFjLm1tCkBAIC03MSw3ICs3MSw3IEBAIFNlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uTWFjOjp+U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoKQog
ewogfQogCi1QYXNzUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6Y3JlYXRlKGlkIG5hdGl2ZVZhbHVlKQorUmVm
PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBTZXJpYWxpemVkUGxhdGZvcm1SZXBy
ZXNlbnRhdGlvbk1hYzo6Y3JlYXRlKGlkIG5hdGl2ZVZhbHVlKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKG5hdGl2ZVZhbHVl
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1VzZXJNZWRp
YUNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svVXNlck1lZGlhQ2xp
ZW50TW9jay5oCmluZGV4IDkyN2FjNzcuLmNmMTY4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svVXNlck1lZGlhQ2xpZW50TW9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svVXNlck1lZGlhQ2xpZW50TW9jay5oCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVXNlck1lZGlhQ2xpZW50UmVxdWVzdE5vdGlm
aWVyIDogcHVibGljIE1vY2tOb3RpZmllciB7CiBwdWJsaWM6Ci0gICAgVXNlck1lZGlhQ2xpZW50
UmVxdWVzdE5vdGlmaWVyKFBhc3NSZWY8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCwgYm9vbCBy
ZXF1ZXN0U3VjY2VzcykKKyAgICBVc2VyTWVkaWFDbGllbnRSZXF1ZXN0Tm90aWZpZXIoUmVmPFVz
ZXJNZWRpYVJlcXVlc3Q+JiYgcmVxdWVzdCwgYm9vbCByZXF1ZXN0U3VjY2VzcykKICAgICAgICAg
OiBtX3JlcXVlc3QoV1RGOjptb3ZlKHJlcXVlc3QpKQogICAgICAgICAsIG1fcmVxdWVzdFN1Y2Nl
c3MocmVxdWVzdFN1Y2Nlc3MpCiAgICAgewpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZjxVc2VyTWVkaWFSZXF1
ZXN0PiByZXF1ZXN0KSBvdmVycmlkZQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihSZWY8VXNlck1lZGlhUmVxdWVzdD4mJiByZXF1ZXN0KSBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgUmVmUHRyPFVzZXJNZWRpYUNsaWVudFJlcXVlc3ROb3RpZmllcj4gbm90aWZpZXIgPSBhZG9w
dFJlZihuZXcgVXNlck1lZGlhQ2xpZW50UmVxdWVzdE5vdGlmaWVyKFdURjo6bW92ZShyZXF1ZXN0
KSwgdHJ1ZSkpOwogICAgICAgICBtX3RpbWVyRXZlbnRzLmFwcGVuZChhZG9wdFJlZihuZXcgVGlt
ZXJFdmVudCh0aGlzLCBub3RpZmllcikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Ns
aXBQYXRoT3BlcmF0aW9uLmgKaW5kZXggYzFiODI5OC4uYjkwOTA1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKQEAgLTk2LDcgKzk2LDcgQEAgcHJp
dmF0ZToKIAogY2xhc3MgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDbGlw
UGF0aE9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcGVDbGlw
UGF0aE9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWY8QmFzaWNTaGFwZT4gc2hhcGUpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRlKFJlZjxCYXNpY1No
YXBlPiYmIHNoYXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFwZUNs
aXBQYXRoT3BlcmF0aW9uKFdURjo6bW92ZShzaGFwZSkpKTsKICAgICB9CkBAIC0xMjIsNyArMTIy
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fc2hhcGUucHRyKCkgPT0gc2hhcGVDbGlw
Lm1fc2hhcGUucHRyKCk7CiAgICAgfQogCi0gICAgZXhwbGljaXQgU2hhcGVDbGlwUGF0aE9wZXJh
dGlvbihQYXNzUmVmPEJhc2ljU2hhcGU+IHNoYXBlKQorICAgIGV4cGxpY2l0IFNoYXBlQ2xpcFBh
dGhPcGVyYXRpb24oUmVmPEJhc2ljU2hhcGU+JiYgc2hhcGUpCiAgICAgICAgIDogQ2xpcFBhdGhP
cGVyYXRpb24oU2hhcGUpCiAgICAgICAgICwgbV9zaGFwZShXVEY6Om1vdmUoc2hhcGUpKQogICAg
ICAgICAsIG1fcmVmZXJlbmNlQm94KEJveE1pc3NpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCA3YjRhODQxLi43ZmU2YjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYWRWZXJ0aWNhbExheW91dE92ZXJmbG93OwogfTsKIAotUmVuZGVyQmxvY2s6
OlJlbmRlckJsb2NrKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQorUmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrKEVsZW1l
bnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVG
bGFncykKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlw
ZUZsYWdzIHwgUmVuZGVyQmxvY2tGbGFnKQogICAgICwgbV9saW5lSGVpZ2h0KC0xKQogICAgICwg
bV9oYXNNYXJnaW5CZWZvcmVRdWlyayhmYWxzZSkKQEAgLTE5Miw3ICsxOTIsNyBAQCBSZW5kZXJC
bG9jazo6UmVuZGVyQmxvY2soRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUsIHVuc2lnbmVkCiB7CiB9CiAKLVJlbmRlckJsb2NrOjpSZW5kZXJCbG9jayhEb2N1bWVu
dCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlw
ZUZsYWdzKQorUmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFJlbmRlclN0eWxlPiYmIHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVu
ZGVyQm94KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVy
QmxvY2tGbGFnKQogICAgICwgbV9saW5lSGVpZ2h0KC0xKQogICAgICwgbV9oYXNNYXJnaW5CZWZv
cmVRdWlyayhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXgg
ZjE4OWQ5ZC4uMDMyNzNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
QEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBMaW5lTGF5b3V0U3Rh
dGU7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJCbG9jayhFbGVtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOwotICAgIFJlbmRlckJsb2NrKERvY3Vt
ZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOworICAg
IFJlbmRlckJsb2NrKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYsIHVuc2lnbmVkIGJhc2VU
eXBlRmxhZ3MpOworICAgIFJlbmRlckJsb2NrKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYm
LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJCbG9jaygpOwog
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
CmluZGV4IGEyYzIwNzkuLjFhMzcwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC05MSw3ICs5MSw3IEBAIFJlbmRlckJsb2NrRmxvdzo6TWFy
Z2luSW5mbzo6TWFyZ2luSW5mbyhSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBMYXlvdXRVbml0IGJl
Zm9yCiAgICAgbV9uZWdhdGl2ZU1hcmdpbiA9IChtX2NhbkNvbGxhcHNlTWFyZ2luQmVmb3JlV2l0
aENoaWxkcmVuICYmICFibG9jay5tdXN0RGlzY2FyZE1hcmdpbkJlZm9yZSgpKSA/IGJsb2NrLm1h
eE5lZ2F0aXZlTWFyZ2luQmVmb3JlKCkgOiBMYXlvdXRVbml0KCk7CiB9CiAKLVJlbmRlckJsb2Nr
Rmxvdzo6UmVuZGVyQmxvY2tGbG93KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3coRWxlbWVudCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2soZWxlbWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSwgUmVuZGVyQmxvY2tGbG93RmxhZykKICNpZiBFTkFCTEUoSU9T
X1RFWFRfQVVUT1NJWklORykKICAgICAsIG1fd2lkdGhGb3JUZXh0QXV0b3NpemluZygtMSkKQEAg
LTEwMSw3ICsxMDEsNyBAQCBSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvdyhFbGVtZW50
JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICBzZXRDaGlsZHJlbklu
bGluZSh0cnVlKTsKIH0KIAotUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3coRG9jdW1l
bnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckJsb2NrRmxv
dzo6UmVuZGVyQmxvY2tGbG93KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2soZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIFJl
bmRlckJsb2NrRmxvd0ZsYWcpCiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCiAgICAg
LCBtX3dpZHRoRm9yVGV4dEF1dG9zaXppbmcoLTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmgKaW5kZXggZjYyMDM2Ni4uYzQwNTI1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtNTQsOCArNTQsOCBAQCBlbnVtIExp
bmVDb3VudCB7CiAKIGNsYXNzIFJlbmRlckJsb2NrRmxvdyA6IHB1YmxpYyBSZW5kZXJCbG9jayB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyQmxvY2tGbG93KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0
eWxlPik7Ci0gICAgUmVuZGVyQmxvY2tGbG93KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlckJsb2NrRmxvdyhFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsK
KyAgICBSZW5kZXJCbG9ja0Zsb3coRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAg
IHZpcnR1YWwgflJlbmRlckJsb2NrRmxvdygpOwogICAgICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2Fs
SGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CmluZGV4IGU0ZTAwMWIuLmYzMTRlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIGJvb2wgc2tpcEJvZHlCYWNrZ3JvdW5k
KGNvbnN0IFJlbmRlckJveCogYm9keUVsZW1lbnRSZW5kZXJlcikKICAgICAgICAgJiYgKGRvY3Vt
ZW50RWxlbWVudFJlbmRlcmVyID09IGJvZHlFbGVtZW50UmVuZGVyZXItPnBhcmVudCgpKTsKIH0K
IAotUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJCb3g6OlJlbmRlckJv
eChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIHVuc2lnbmVkIGJh
c2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChlbGVtZW50LCBXVEY6Om1v
dmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQogICAgICwgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGgoLTEpCiAgICAgLCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKQEAgLTEyMCw3ICsx
MjAsNyBAQCBSZW5kZXJCb3g6OlJlbmRlckJveChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZQogICAgIHNldElzQm94KCk7CiB9CiAKLVJl
bmRlckJveDo6UmVuZGVyQm94KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJCb3g6OlJlbmRlckJveChE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgdW5zaWduZWQgYmFz
ZVR5cGVGbGFncykKICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KGRvY3VtZW50LCBXVEY6Om1v
dmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQogICAgICwgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGgoLTEpCiAgICAgLCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBjNzk3Njk0Li5iNTQ4ZGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC02MTUsOCArNjE1LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBuZWVkc0xheW91dEFmdGVyUmVnaW9uUmFuZ2VDaGFuZ2UoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyQm94KEVsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7Ci0gICAgUmVuZGVyQm94
KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3Mp
OworICAgIFJlbmRlckJveChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCB1bnNpZ25lZCBi
YXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCb3goRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
JiYsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2ls
bENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGZiZGQ3ZjIuLmRk
ZGU2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcApAQCAtMTcyLDEyICsxNzIsMTIgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBJbWEK
ICAgICByZXR1cm4gdmlldygpLmltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKS5zaG91bGRQYWludEF0
TG93UXVhbGl0eShjb250ZXh0LCB0aGlzLCBpbWFnZSwgbGF5ZXIsIHNpemUpOwogfQogCi1SZW5k
ZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoRWxlbWVudCYgZWxlbWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCitSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoRWxlbWVudCYgZWxlbWVudCwg
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDog
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlw
ZUZsYWdzIHwgUmVuZGVyQm94TW9kZWxPYmplY3RGbGFnKQogewogfQogCi1SZW5kZXJCb3hNb2Rl
bE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKK1JlbmRlckJveE1v
ZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxh
Z3MgfCBSZW5kZXJCb3hNb2RlbE9iamVjdEZsYWcpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDRmMGNkNTIwLi4yNGMwODAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aApAQCAtMjUxLDggKzI1MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25z
KGRvdWJsZSB0aW1lID0gMCk7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVj
dChFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3Mp
OwotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KEVs
ZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOworICAg
IFJlbmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCB1bnNp
Z25lZCBiYXNlVHlwZUZsYWdzKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQo
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcApp
bmRleCA4ZDNhMTBlLi4yZWZjZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QnV0dG9uLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckJ1dHRvbjo6UmVuZGVyQnV0dG9uKEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyQnV0dG9uOjpSZW5kZXJCdXR0b24oSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxleGlibGVCb3goZWxl
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fYnV0dG9uVGV4dCgwKQogICAgICwgbV9p
bm5lcigwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCmluZGV4IDcwMTA3
YTkuLmZkNzgyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
dXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKQEAg
LTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50OwogLy8gdG8gZGF0ZSBhcyB0
aGUgYnV0dG9uIGNoYW5nZXMuCiBjbGFzcyBSZW5kZXJCdXR0b24gZmluYWwgOiBwdWJsaWMgUmVu
ZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlckJ1dHRvbihIVE1MRm9ybUNvbnRy
b2xFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckJ1dHRvbihIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5S
ZW5kZXJCdXR0b24oKTsKIAogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIGZvcm1Db250cm9s
RWxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCAwMTQ1NWJiLi41ZGJhYTE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1f
b3JkaW5hbEl0ZXJhdGlvbjsKIH07CiAKLVJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6UmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3goRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKIHsKICAg
ICBzZXRDaGlsZHJlbklubGluZShmYWxzZSk7IC8vIEFsbCBvZiBvdXIgY2hpbGRyZW4gbXVzdCBi
ZSBibG9jay1sZXZlbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oCmluZGV4IDA1YTliMGYuLjhhZGQyMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgRmxleEJveEl0ZXJhdG9yOwogCiBjbGFzcyBS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewog
cHVibGljOgotICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChFbGVtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChFbGVtZW50
JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3goKTsKIAogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3du
Y2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKaW5kZXggYWU1ODgwYS4uY2Vm
MzRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNN
YXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFy
a2VyLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckRldGFpbHNNYXJrZXI6OlJlbmRlckRldGFpbHNN
YXJrZXIoRGV0YWlsc01hcmtlckNvbnRyb2wmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyRGV0YWlsc01hcmtlcjo6UmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxz
TWFya2VyQ29udHJvbCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDog
UmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAppbmRleCBkM2FlYWJl
Li5jNzgxZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0
YWlsc01hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxz
TWFya2VyLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBS
ZW5kZXJEZXRhaWxzTWFya2VyIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxzTWFya2VyQ29udHJvbCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJEZXRhaWxzTWFya2VyKERldGFpbHNNYXJrZXJD
b250cm9sJiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICBEZXRhaWxzTWFya2VyQ29udHJvbCYg
ZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNNYXJrZXJDb250cm9s
Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiAgICAgZW51bSBPcmllbnRhdGlvbiB7IFVw
LCBEb3duLCBMZWZ0LCBSaWdodCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCmluZGV4IDhkYjY4MzUuLjIyNWExMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIEhhc2hNYXA8
Y29uc3QgUmVuZGVyT2JqZWN0KiwgQ29udHJvbFN0YXRlcyo+JiBjb250cm9sU3RhdGVzUmVuZGVy
ZXJNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLWlubGluZSBSZW5kZXJFbGVtZW50OjpSZW5k
ZXJFbGVtZW50KENvbnRhaW5lck5vZGUmIGVsZW1lbnRPckRvY3VtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKK2lubGluZSBSZW5kZXJFbGVt
ZW50OjpSZW5kZXJFbGVtZW50KENvbnRhaW5lck5vZGUmIGVsZW1lbnRPckRvY3VtZW50LCBSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5k
ZXJPYmplY3QoZWxlbWVudE9yRG9jdW1lbnQpCiAgICAgLCBtX2Jhc2VUeXBlRmxhZ3MoYmFzZVR5
cGVGbGFncykKICAgICAsIG1fYW5jZXN0b3JMaW5lQm94RGlydHkoZmFsc2UpCkBAIC05NywxMiAr
OTcsMTIgQEAgaW5saW5lIFJlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoQ29udGFpbmVyTm9k
ZSYgZWxlbWVudE9yRG9jdW1lbnQsIFBhc3NSZWY8UmUKIHsKIH0KIAotUmVuZGVyRWxlbWVudDo6
UmVuZGVyRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKK1JlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCB1bnNpZ25lZCBiYXNl
VHlwZUZsYWdzKQogICAgIDogUmVuZGVyRWxlbWVudChzdGF0aWNfY2FzdDxDb250YWluZXJOb2Rl
Jj4oZWxlbWVudCksIFdURjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MpCiB7CiB9CiAKLVJl
bmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKK1JlbmRlckVsZW1lbnQ6
OlJlbmRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJFbGVtZW50KHN0YXRpY19j
YXN0PENvbnRhaW5lck5vZGUmPihkb2N1bWVudCksIFdURjo6bW92ZShzdHlsZSksIGJhc2VUeXBl
RmxhZ3MpCiB7CiB9CkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVyRWxlbWVudDo6flJlbmRlckVs
ZW1lbnQoKQogICAgICAgICB2aWV3KCkucmVtb3ZlUmVuZGVyZXJXaXRoUGF1c2VkSW1hZ2VBbmlt
YXRpb25zKCp0aGlzKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1l
bnQ6OmNyZWF0ZUZvcihFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoRWxl
bWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIC8vIE1pbmlt
YWwgc3VwcG9ydCBmb3IgY29udGVudCBwcm9wZXJ0aWVzIHJlcGxhY2luZyBhbiBlbnRpcmUgZWxl
bWVudC4KICAgICAvLyBXb3JrcyBvbmx5IGlmIHdlIGhhdmUgZXhhY3RseSBvbmUgcGllY2Ugb2Yg
Y29udGVudCBhbmQgaXQncyBhIFVSTC4KQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIFJlbmRlckVs
ZW1lbnQ6OmluaXRpYWxpemVTdHlsZSgpCiAgICAgLy8gaGF2ZSB0aGVpciBwYXJlbnQgc2V0IGJl
Zm9yZSBnZXR0aW5nIGEgY2FsbCB0byBpbml0aWFsaXplU3R5bGUoKSA6fAogfQogCi12b2lkIFJl
bmRlckVsZW1lbnQ6OnNldFN0eWxlKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQordm9pZCBS
ZW5kZXJFbGVtZW50OjpzZXRTdHlsZShSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAg
Ly8gRklYTUU6IFNob3VsZCBjaGFuZ2UgUmVuZGVyVmlldyBzbyBpdCBjYW4gdXNlIGluaXRpYWxp
emVTdHlsZSB0b28uCiAgICAgLy8gSWYgd2UgZG8gdGhhdCwgd2UgY2FuIGFzc2VydCBtX2hhc0lu
aXRpYWxpemVkU3R5bGUgdW5jb25kaXRpb25hbGx5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmgKaW5kZXggNjY0YWMzYi4uYzMwY2NkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFJlbmRlckVs
ZW1lbnQgOiBwdWJsaWMgUmVuZGVyT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5k
ZXJFbGVtZW50KCk7CiAKLSAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUZvcihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHN0YXRpYyBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRm9yKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYp
OwogCiAgICAgYm9vbCBoYXNJbml0aWFsaXplZFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNJ
bml0aWFsaXplZFN0eWxlOyB9CiAKQEAgLTQzLDkgKzQzLDkgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBpbml0aWFsaXplU3R5bGUoKTsKIAotICAgIHZvaWQgc2V0U3R5bGUoUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOworICAgIHZvaWQgc2V0U3R5bGUoUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICAvLyBD
YWxsZWQgdG8gdXBkYXRlIGEgc3R5bGUgdGhhdCBpcyBhbGxvd2VkIHRvIHRyaWdnZXIgYW5pbWF0
aW9ucy4KLSAgICB2b2lkIHNldEFuaW1hdGFibGVTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgdm9pZCBzZXRBbmltYXRhYmxlU3R5bGUoUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogICAg
IC8vIFRoZSBwc2V1ZG8gZWxlbWVudCBzdHlsZSBjYW4gYmUgY2FjaGVkIG9yIHVuY2FjaGVkLiAg
VXNlIHRoZSBjYWNoZWQgbWV0aG9kIGlmIHRoZSBwc2V1ZG8gZWxlbWVudCBkb2Vzbid0IHJlc3Bl
Y3QKICAgICAvLyBhbnkgcHNldWRvIGNsYXNzZXMgKGFuZCB0aGVyZWZvcmUgaGFzIG5vIGNvbmNl
cHQgb2YgY2hhbmdpbmcgc3RhdGUpLgpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFVwZGF0ZXMgb25seSB0aGUgbG9jYWwgc3R5bGUgcHRyIG9mIHRoZSBvYmplY3QuIERvZXMg
bm90IHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIG9iamVjdCwKICAgICAvLyBhbmQgc28gb25seSBz
aG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHN0eWxlIGlzIGtub3duIG5vdCB0byBoYXZlIGNoYW5n
ZWQgKG9yIGZyb20gc2V0U3R5bGUpLgotICAgIHZvaWQgc2V0U3R5bGVJbnRlcm5hbChQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkgeyBtX3N0eWxlID0gV1RGOjptb3ZlKHN0eWxlKTsgfQorICAg
IHZvaWQgc2V0U3R5bGVJbnRlcm5hbChSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpIHsgbV9zdHls
ZSA9IFdURjo6bW92ZShzdHlsZSk7IH0KIAogICAgIC8vIFJlcGFpbnQgb25seSBpZiBvdXIgb2xk
IGJvdW5kcyBhbmQgbmV3IGJvdW5kcyBhcmUgZGlmZmVyZW50LiBUaGUgY2FsbGVyIG1heSBwYXNz
IGluIG5ld0JvdW5kcyBhbmQgbmV3T3V0bGluZUJveCBpZiB0aGV5IGFyZSBrbm93bi4KICAgICBi
b29sIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIG9sZEJvdW5kcywgY29uc3Qg
TGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwgY29uc3QgTGF5b3V0UmVjdCogbmV3Qm91bmRzUHRy
ID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0bGluZUJveFB0ciA9IG51bGxwdHIp
OwpAQCAtMjAxLDggKzIwMSw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgUmVuZGVyQmxvY2tGbG93
RmxhZyA9IDEgPDwgNSwKICAgICB9OwogCi0gICAgUmVuZGVyRWxlbWVudChFbGVtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOwotICAgIFJlbmRlckVs
ZW1lbnQoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVG
bGFncyk7CisgICAgUmVuZGVyRWxlbWVudChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCB1
bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJFbGVtZW50KERvY3VtZW50JiwgUmVm
PFJlbmRlclN0eWxlPiYmLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKIAogICAgIGJvb2wgbGF5
ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkgY29uc3Q7CiAKQEAgLTIzNSw3ICsyMzUsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgYWRkQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlck9iamVjdCosIENvbnRyb2xTdGF0ZXMqKTsKIAogcHJpdmF0ZToKLSAgICBS
ZW5kZXJFbGVtZW50KENvbnRhaW5lck5vZGUmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgdW5zaWdu
ZWQgYmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyRWxlbWVudChDb250YWluZXJOb2RlJiwgUmVm
PFJlbmRlclN0eWxlPiYmLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKICAgICB2b2lkIG5vZGUo
KSBjb25zdCA9IGRlbGV0ZTsKICAgICB2b2lkIG5vblBzZXVkb05vZGUoKSBjb25zdCA9IGRlbGV0
ZTsKICAgICB2b2lkIGdlbmVyYXRpbmdOb2RlKCkgY29uc3QgPSBkZWxldGU7CkBAIC0yOTAsNyAr
MjkwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzX25vTG9uZ2VyQWZmZWN0c1BhcmVu
dEJsb2NrOwogfTsKIAotaW5saW5lIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0QW5pbWF0YWJsZVN0
eWxlKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQoraW5saW5lIHZvaWQgUmVuZGVyRWxlbWVu
dDo6c2V0QW5pbWF0YWJsZVN0eWxlKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBz
ZXRTdHlsZShhbmltYXRpb24oKS51cGRhdGVBbmltYXRpb25zKCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmNwcAppbmRleCA1NTRhMDgzLi5iMTlhMjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAg
c3RhdGljIGNvbnN0IENvbG9yJiB1bmF2YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yKCkKICAgICBy
ZXR1cm4gc3RhbmRhcmQ7CiB9CiAKLVJlbmRlckVtYmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJlZGRl
ZE9iamVjdChIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyRW1iZWRkZWRPYmplY3Q6OlJlbmRlckVtYmVkZGVkT2JqZWN0KEhU
TUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQog
ICAgIDogUmVuZGVyV2lkZ2V0KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2lz
UGx1Z2luVW5hdmFpbGFibGUoZmFsc2UpCiAgICAgLCBtX2lzVW5hdmFpbGFibGVQbHVnaW5JbmRp
Y2F0b3JIaWRkZW4oZmFsc2UpCkBAIC0xMTIsNyArMTEyLDcgQEAgUmVuZGVyRW1iZWRkZWRPYmpl
Y3Q6On5SZW5kZXJFbWJlZGRlZE9iamVjdCgpCiAgICAgdmlldygpLmZyYW1lVmlldygpLnJlbW92
ZUVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoKnRoaXMpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRW1i
ZWRkZWRPYmplY3Q+IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpjcmVhdGVGb3JBcHBsZXQoSFRNTEFw
cGxldEVsZW1lbnQmIGFwcGxldCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQ
dHI8UmVuZGVyRW1iZWRkZWRPYmplY3Q+IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpjcmVhdGVGb3JB
cHBsZXQoSFRNTEFwcGxldEVsZW1lbnQmIGFwcGxldCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogewogICAgIGF1dG8gcmVuZGVyZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJFbWJlZGRlZE9i
amVjdD4oYXBwbGV0LCBXVEY6Om1vdmUoc3R5bGUpKTsKICAgICByZW5kZXJlci0+c2V0SW5saW5l
KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVk
ZGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuaAppbmRleCAxNGYwYTM4Li44MjE2ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaApAQCAtMzUsMTAgKzM1LDEwIEBAIGNsYXNzIFRl
eHRSdW47CiAvLyBGb3IgZXhhbXBsZSwgPGVtYmVkIHNyYz0iZm9vLmh0bWwiPiBkb2VzIG5vdCBp
bnZva2UgYSBwbHVnLWluLgogY2xhc3MgUmVuZGVyRW1iZWRkZWRPYmplY3QgOiBwdWJsaWMgUmVu
ZGVyV2lkZ2V0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJFbWJlZGRlZE9iamVjdChIVE1MRnJhbWVP
d25lckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRW1iZWRkZWRP
YmplY3QoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2
aXJ0dWFsIH5SZW5kZXJFbWJlZGRlZE9iamVjdCgpOwogCi0gICAgc3RhdGljIFJlbmRlclB0cjxS
ZW5kZXJFbWJlZGRlZE9iamVjdD4gY3JlYXRlRm9yQXBwbGV0KEhUTUxBcHBsZXRFbGVtZW50Jiwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyRW1iZWRk
ZWRPYmplY3Q+IGNyZWF0ZUZvckFwcGxldChIVE1MQXBwbGV0RWxlbWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJik7CiAKICAgICBlbnVtIFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHsKICAgICAg
ICAgUGx1Z2luTWlzc2luZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRz
ZXQuY3BwCmluZGV4IDI4MWQzYWYuLmY5ZGExYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZpZWxkc2V0LmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckZpZWxkc2V0OjpSZW5k
ZXJGaWVsZHNldChIVE1MRmllbGRTZXRFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlckZpZWxkc2V0OjpSZW5kZXJGaWVsZHNldChIVE1MRmllbGRTZXRF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJC
bG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKaW5kZXggMTM4NmNjZS4uNmY4OTMyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKQEAgLTMzLDcgKzMzLDcgQEAg
Y2xhc3MgSFRNTEZpZWxkU2V0RWxlbWVudDsKIAogY2xhc3MgUmVuZGVyRmllbGRzZXQgZmluYWwg
OiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGaWVsZHNldChI
VE1MRmllbGRTZXRFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZp
ZWxkc2V0KEhUTUxGaWVsZFNldEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAg
ZW51bSBGaW5kTGVnZW5kT3B0aW9uIHsgSWdub3JlRmxvYXRpbmdPck91dE9mRmxvdywgSW5jbHVk
ZUZsb2F0aW5nT3JPdXRPZkZsb3cgfTsKICAgICBSZW5kZXJCb3gqIGZpbmRMZWdlbmQoRmluZExl
Z2VuZE9wdGlvbiA9IElnbm9yZUZsb2F0aW5nT3JPdXRPZkZsb3cpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5k
ZXggZmFmNTQxMS4uYWUyMWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGNvbnN0IGlu
dCBkZWZhdWx0V2lkdGhOdW1DaGFycyA9IDM4OwogI2VuZGlmCiBjb25zdCBpbnQgYnV0dG9uU2hh
ZG93SGVpZ2h0ID0gMjsKIAotUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OlJlbmRlckZpbGVVcGxv
YWRDb250cm9sKEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChI
VE1MSW5wdXRFbGVtZW50JiBpbnB1dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDog
UmVuZGVyQmxvY2tGbG93KGlucHV0LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9jYW5SZWNl
aXZlRHJvcHBlZEZpbGVzKGlucHV0LmNhblJlY2VpdmVEcm9wcGVkRmlsZXMoKSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKaW5k
ZXggNjY0NjM0Mi4uMTA4ZGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgSFRNTElu
cHV0RWxlbWVudDsKIAogY2xhc3MgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wgZmluYWwgOiBwdWJs
aWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGaWxlVXBsb2FkQ29udHJv
bChIVE1MSW5wdXRFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZp
bGVVcGxvYWRDb250cm9sKEhUTUxJbnB1dEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlckZpbGVVcGxvYWRDb250cm9sKCk7CiAKICAgICBTdHJpbmcgYnV0
dG9uVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwCmluZGV4IDM2YWQ3MWUuLjVmMzJlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgUmVu
ZGVyRmxleGlibGVCb3g6OlZpb2xhdGlvbiB7CiB9OwogCiAKLVJlbmRlckZsZXhpYmxlQm94OjpS
ZW5kZXJGbGV4aWJsZUJveChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50
LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9vcmRlckl0ZXJhdG9yKCp0aGlzKQogICAg
ICwgbV9udW1iZXJPZkluRmxvd0NoaWxkcmVuT25GaXJzdExpbmUoLTEpCkBAIC03NCw3ICs3NCw3
IEBAIFJlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChFbGVtZW50JiBlbGVtZW50
LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsCiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUoZmFsc2Up
OyAvLyBBbGwgb2Ygb3VyIGNoaWxkcmVuIG11c3QgYmUgYmxvY2stbGV2ZWwuCiB9CiAKLVJlbmRl
ckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxl
Qm94KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDog
UmVuZGVyQmxvY2soZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDApCiAgICAgLCBtX29yZGVy
SXRlcmF0b3IoKnRoaXMpCiAgICAgLCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGlu
ZSgtMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKaW5k
ZXggMmI2ZWZhYy4uNjM5MjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmgKQEAgLTM4LDggKzM4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSZW5kZXJGbGV4aWJsZUJveCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyRmxleGlibGVCb3goRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAg
ICBSZW5kZXJGbGV4aWJsZUJveChEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJGbGV4aWJsZUJveChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKKyAgICBS
ZW5kZXJGbGV4aWJsZUJveChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmly
dHVhbCB+UmVuZGVyRmxleGlibGVCb3goKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IGMwZjAxM2UuLmJjMzZhNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhy
ZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEY6
Om1vdmUoc3R5bGUpKQogICAgICwgbV9wcmV2aW91c1JlZ2lvbkNvdW50KDApCiAgICAgLCBtX2F1
dG9Mb2dpY2FsSGVpZ2h0UmVnaW9uc0NvdW50KDApCkBAIC02OCw3ICs2OCw3IEBAIFJlbmRlckZs
b3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsCiAgICAgc2V0Rmxvd1RocmVhZFN0YXRlKEluc2lkZU91dE9mRmxvd1Ro
cmVhZCk7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0
ZUZsb3dUaHJlYWRTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCitSZWY8UmVuZGVyU3R5
bGU+IFJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0ZUZsb3dUaHJlYWRTdHlsZShSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUpCiB7CiAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUo
KTsKICAgICBuZXdTdHlsZS5nZXQoKS5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCA2MjNlYmZhLi44NjNh
YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAg
LTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBkZXNjZW5kYW50
IGJveCdzIGxheW91dCBpcyBmaW5pc2hlZCBhbmQgaXQgaGFzIGJlZW4gcG9zaXRpb25lZCB3aXRo
aW4gaXRzIGNvbnRhaW5lci4KICAgICB2aXJ0dWFsIHZvaWQgZmxvd1RocmVhZERlc2NlbmRhbnRC
b3hMYWlkT3V0KFJlbmRlckJveCopIHsgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IGNyZWF0ZUZsb3dUaHJlYWRTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOworICAg
IHN0YXRpYyBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUZsb3dUaHJlYWRTdHlsZShSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIApAQCAt
MjQ0LDcgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIo
KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAg
ICBSZW5kZXJGbG93VGhyZWFkKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlckZsb3dUaHJlYWQoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAg
dmlydHVhbCBSZW5kZXJGbG93VGhyZWFkKiBsb2NhdGVGbG93VGhyZWFkQ29udGFpbmluZ0Jsb2Nr
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJGbG93VGhyZWFkKj4o
dGhpcyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHAKaW5kZXgg
MzBhMmU2My4uMzA0NDg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUu
Y3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRnJh
bWU6OlJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQmIGZyYW1lLCBQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlckZyYW1lOjpSZW5kZXJGcmFtZShIVE1MRnJhbWVFbGVtZW50JiBm
cmFtZSwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhbWVCYXNlKGZy
YW1lLCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhbWUuaAppbmRleCA3NGY2ODhmLi45NTZiNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWUuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBIVE1MRnJhbWVFbGVtZW50Owog
CiBjbGFzcyBSZW5kZXJGcmFtZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGcmFtZUJhc2UgewogcHVi
bGljOgotICAgIFJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVyRnJhbWUoSFRNTEZyYW1lRWxlbWVudCYsIFJlZjxSZW5kZXJTdHls
ZT4mJik7CiAKICAgICBIVE1MRnJhbWVFbGVtZW50JiBmcmFtZUVsZW1lbnQoKSBjb25zdDsKICAg
ICBGcmFtZUVkZ2VJbmZvIGVkZ2VJbmZvKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCmluZGV4IDNhZTQ0YmEuLjkyNWEwNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRnJhbWVCYXNlOjpSZW5kZXJGcmFt
ZUJhc2UoSFRNTEZyYW1lRWxlbWVudEJhc2UmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyRnJhbWVCYXNlOjpSZW5kZXJGcmFtZUJhc2UoSFRNTEZyYW1lRWxlbWVu
dEJhc2UmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlcldp
ZGdldChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCmluZGV4IDE3YzlkOGYuLmU3ZGQ2YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmgKQEAgLTM2LDcgKzM2LDcgQEAg
Y2xhc3MgSFRNTEZyYW1lRWxlbWVudEJhc2U7CiAvLyBCYXNlIGNsYXNzIGZvciBSZW5kZXJGcmFt
ZSBhbmQgUmVuZGVySUZyYW1lCiBjbGFzcyBSZW5kZXJGcmFtZUJhc2UgOiBwdWJsaWMgUmVuZGVy
V2lkZ2V0IHsKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJGcmFtZUJhc2UoSFRNTEZyYW1lRWxlbWVu
dEJhc2UmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRnJhbWVCYXNlKEhUTUxG
cmFtZUVsZW1lbnRCYXNlJiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogcHVibGljOgogICAgIEZy
YW1lVmlldyogY2hpbGRWaWV3KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RnJhbWVWaWV3PihS
ZW5kZXJXaWRnZXQ6OndpZGdldCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5jcHAKaW5kZXggMmExYzFkMi4uYzI5MGRiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRnJhbWVTZXQ6OlJlbmRlckZyYW1lU2V0KEhUTUxGcmFt
ZVNldEVsZW1lbnQmIGZyYW1lU2V0LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
ckZyYW1lU2V0OjpSZW5kZXJGcmFtZVNldChIVE1MRnJhbWVTZXRFbGVtZW50JiBmcmFtZVNldCwg
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGZyYW1lU2V0LCBXVEY6
Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9pc1Jlc2l6aW5nKGZhbHNlKQogICAgICwgbV9pc0No
aWxkUmVzaXppbmcoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNl
dC5oCmluZGV4IGIwZWU4OWEuLmRkNzc5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZVNldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFJlbmRl
ckZyYW1lU2V0IGZpbmFsIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
RnJhbWVTZXQoSFRNTEZyYW1lU2V0RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAg
ICBSZW5kZXJGcmFtZVNldChIVE1MRnJhbWVTZXRFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJGcmFtZVNldCgpOwogCiAgICAgSFRNTEZyYW1lU2V0RWxl
bWVudCYgZnJhbWVTZXRFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKaW5kZXggZTExNWY3Zi4uYjU2MzE3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhv
bGRlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRl
ckZ1bGxTY3JlZW5QbGFjZWhvbGRlcihSZW5kZXJGdWxsU2NyZWVuJiBvd25lciwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCisgICAgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyKFJlbmRl
ckZ1bGxTY3JlZW4mIG93bmVyLCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgICAgIDog
UmVuZGVyQmxvY2tGbG93KG93bmVyLmRvY3VtZW50KCksIFdURjo6bW92ZShzdHlsZSkpCiAgICAg
ICAgICwgbV9vd25lcihvd25lcikgCiAgICAgewpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFJlbmRl
ckZ1bGxTY3JlZW5QbGFjZWhvbGRlcjo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBSZW5kZXJCbG9j
a0Zsb3c6OndpbGxCZURlc3Ryb3llZCgpOwogfQogCi1SZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJG
dWxsU2NyZWVuKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiBkb2N1bWVudCwg
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxleGlibGVCb3goZG9jdW1l
bnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3BsYWNlaG9sZGVyKDApCiB7CkBAIC03OCw3
ICs3OCw3IEBAIHZvaWQgUmVuZGVyRnVsbFNjcmVlbjo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBS
ZW5kZXJGbGV4aWJsZUJveDo6d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
PFJlbmRlclN0eWxlPiBjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKQorc3RhdGljIFJlZjxSZW5kZXJT
dHlsZT4gY3JlYXRlRnVsbFNjcmVlblN0eWxlKCkKIHsKICAgICBhdXRvIGZ1bGxzY3JlZW5TdHls
ZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUoKTsKIApAQCAtMTg1LDcgKzE4NSw3
IEBAIHZvaWQgUmVuZGVyRnVsbFNjcmVlbjo6c2V0UGxhY2Vob2xkZXIoUmVuZGVyQmxvY2sqIHBs
YWNlaG9sZGVyKQogICAgIG1fcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjsKIH0KIAotdm9pZCBS
ZW5kZXJGdWxsU2NyZWVuOjpjcmVhdGVQbGFjZWhvbGRlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZnJhbWVSZWN0KQordm9pZCBSZW5kZXJGdWxsU2NyZWVu
OjpjcmVhdGVQbGFjZWhvbGRlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IExheW91
dFJlY3QmIGZyYW1lUmVjdCkKIHsKICAgICBpZiAoc3R5bGUuZ2V0KCkud2lkdGgoKS5pc0F1dG8o
KSkKICAgICAgICAgc3R5bGUuZ2V0KCkuc2V0V2lkdGgoTGVuZ3RoKGZyYW1lUmVjdC53aWR0aCgp
LCBGaXhlZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1
bGxTY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgK
aW5kZXggOWI2YzhkYi4uNzI4ZmQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZ1bGxTY3JlZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnVsbFNjcmVlbi5oCkBAIC0zNCwxMyArMzQsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSZW5kZXJGdWxsU2NyZWVuIGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5
bGU+JiYpOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlckZ1bGxTY3JlZW4iOyB9CiAKICAgICB2b2lkIHNldFBsYWNl
aG9sZGVyKFJlbmRlckJsb2NrKik7CiAgICAgUmVuZGVyQmxvY2sqIHBsYWNlaG9sZGVyKCkgeyBy
ZXR1cm4gbV9wbGFjZWhvbGRlcjsgfQotICAgIHZvaWQgY3JlYXRlUGxhY2Vob2xkZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4sIGNvbnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCk7CisgICAgdm9pZCBj
cmVhdGVQbGFjZWhvbGRlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IExheW91dFJlY3QmIGZy
YW1lUmVjdCk7CiAKICAgICBzdGF0aWMgUmVuZGVyRnVsbFNjcmVlbiogd3JhcFJlbmRlcmVyKFJl
bmRlck9iamVjdCosIFJlbmRlckVsZW1lbnQqLCBEb2N1bWVudCYpOwogICAgIHZvaWQgdW53cmFw
UmVuZGVyZXIoYm9vbCYgcmVxdWlyZXNSZW5kZXJUcmVlUmVidWlsZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggMDEyYmFjNi4uYzBjMjM1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1Ymxp
YzoKICAgICBWZWN0b3I8dW5zaWduZWQ+IGdyb3dBYm92ZU1heEJyZWFkdGhUcmFja0luZGV4ZXM7
CiB9OwogCi1SZW5kZXJHcmlkOjpSZW5kZXJHcmlkKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyR3JpZDo6UmVuZGVyR3JpZChFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50
LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9vcmRlckl0ZXJhdG9yKCp0aGlzKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggNTU2ZGViZS4uYzg0NjQzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC00Miw3ICs0Miw3IEBAIGNs
YXNzIEdyaWRJdGVtV2l0aFNwYW47CiAKIGNsYXNzIFJlbmRlckdyaWQgZmluYWwgOiBwdWJsaWMg
UmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckdyaWQoRWxlbWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJHcmlkKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
JiYpOwogICAgIHZpcnR1YWwgflJlbmRlckdyaWQoKTsKIAogICAgIEVsZW1lbnQmIGVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZh
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKaW5k
ZXggNjIxY2YyOC4uZTIxODU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckhUTUxDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJIVE1MQ2FudmFzLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckhUTUxDYW52YXM6OlJlbmRlckhU
TUxDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVySFRNTENhbnZhczo6UmVuZGVySFRNTENhbnZhcyhIVE1MQ2FudmFzRWxl
bWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyUmVw
bGFjZWQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgZWxlbWVudC5zaXplKCkpCiB7CiAgICAg
Ly8gQWN0dWFsIHNpemUgaXMgbm90IGtub3duIHlldCwgcmVwb3J0IHRoZSBkZWZhdWx0IGludHJp
bnNpYyBzaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgK
aW5kZXggZDI1YzFjNy4uMDNlMmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckhUTUxDYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySFRNTENhbnZhcy5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50
OwogCiBjbGFzcyBSZW5kZXJIVE1MQ2FudmFzIGZpbmFsIDogcHVibGljIFJlbmRlclJlcGxhY2Vk
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJIVE1MQ2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckhUTUxDYW52YXMoSFRNTENhbnZhc0VsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZh
c0VsZW1lbnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmNwcAppbmRleCA5MGM2MzU3Li4zYTM5YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySUZyYW1lLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAgICAgCi1SZW5kZXJJRnJhbWU6OlJlbmRlcklG
cmFtZShIVE1MSUZyYW1lRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJJRnJhbWU6OlJlbmRlcklGcmFtZShIVE1MSUZyYW1lRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhbWVCYXNlKGVsZW1l
bnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SUZyYW1lLmgKaW5kZXggNDIwOTY1Yi4uN2EyZTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJRnJhbWUuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBSZW5kZXJWaWV3OwogCiBj
bGFzcyBSZW5kZXJJRnJhbWUgZmluYWwgOiBwdWJsaWMgUmVuZGVyRnJhbWVCYXNlIHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJJRnJhbWUoSFRNTElGcmFtZUVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0
eWxlPik7CisgICAgUmVuZGVySUZyYW1lKEhUTUxJRnJhbWVFbGVtZW50JiwgUmVmPFJlbmRlclN0
eWxlPiYmKTsKIAogICAgIEhUTUxJRnJhbWVFbGVtZW50JiBpZnJhbWVFbGVtZW50KCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IGZhNTc0MjQu
LjE4OTc4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAt
MTE4LDcgKzExOCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhW
ZWN0b3I8U2VsZWN0aW9uUmVjdD4mIHJlY3RzLCB1bnNpZ25lZCwKIAogdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAotUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjb25z
dCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8pCitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2Uo
RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBTdHlsZUltYWdlKiBz
dHlsZUltYWdlLCBjb25zdCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8pCiAgICAgOiBSZW5k
ZXJSZXBsYWNlZChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCiAgICAgLCBt
X2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
SW1hZ2VSZXNvdXJjZT4oKSkKICAgICAsIG1fbmVlZHNUb1NldFNpemVGb3JBbHRUZXh0KGZhbHNl
KQpAQCAtMTM0LDcgKzEzNCw3IEBAIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgU3R5bGVJbWFnCiAgICAgICAgIG1f
aGFzU2hhZG93Q29udHJvbHMgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KS5o
YXNTaGFkb3dDb250cm9scygpOwogfQogCi1SZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9jdW1l
bnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5
bGVJbWFnZSkKK1JlbmRlckltYWdlOjpSZW5kZXJJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQsIFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAgICA6IFJl
bmRlclJlcGxhY2VkKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCiAgICAg
LCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVySW1hZ2VSZXNvdXJjZT4oKSkKICAgICAsIG1fbmVlZHNUb1NldFNpemVGb3JBbHRUZXh0KGZh
bHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCA0YThjNjlmLi5h
MTJkY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMzUsOCAr
MzUsOCBAQCBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIAogY2xhc3MgUmVuZGVySW1hZ2UgOiBwdWJs
aWMgUmVuZGVyUmVwbGFjZWQgewogcHVibGljOgotICAgIFJlbmRlckltYWdlKEVsZW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiwgU3R5bGVJbWFnZSogPSBudWxscHRyLCBjb25zdCBmbG9hdCA9
IDEuMGYpOwotICAgIFJlbmRlckltYWdlKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4s
IFN0eWxlSW1hZ2UqID0gbnVsbHB0cik7CisgICAgUmVuZGVySW1hZ2UoRWxlbWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4mJiwgU3R5bGVJbWFnZSogPSBudWxscHRyLCBjb25zdCBmbG9hdCA9IDEuMGYp
OworICAgIFJlbmRlckltYWdlKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCBTdHlsZUlt
YWdlKiA9IG51bGxwdHIpOwogICAgIHZpcnR1YWwgflJlbmRlckltYWdlKCk7CiAKICAgICBSZW5k
ZXJJbWFnZVJlc291cmNlJiBpbWFnZVJlc291cmNlKCkgeyByZXR1cm4gKm1faW1hZ2VSZXNvdXJj
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA1Mzc2
MDE2Li40MDNjZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cApAQCAtNTEsMTMgKzUxLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVySW5s
aW5lOjpSZW5kZXJJbmxpbmUoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJJbmxpbmU6OlJlbmRlcklubGluZShFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChlbGVtZW50
LCBXVEY6Om1vdmUoc3R5bGUpLCBSZW5kZXJJbmxpbmVGbGFnKQogewogICAgIHNldENoaWxkcmVu
SW5saW5lKHRydWUpOwogfQogCi1SZW5kZXJJbmxpbmU6OlJlbmRlcklubGluZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVySW5saW5lOjpSZW5k
ZXJJbmxpbmUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgUmVu
ZGVySW5saW5lRmxhZykKIHsKICAgICBzZXRDaGlsZHJlbklubGluZSh0cnVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCBjNGIzYmIxLi4xM2M1MmUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC0zNCw4ICszNCw4IEBAIGNs
YXNzIFJlbmRlclJlZ2lvbjsKIAogY2xhc3MgUmVuZGVySW5saW5lIDogcHVibGljIFJlbmRlckJv
eE1vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbmxpbmUoRWxlbWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJJbmxpbmUoRG9jdW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVySW5saW5lKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
JiYpOworICAgIFJlbmRlcklubGluZShEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBlZTEwYjBlLi45MDI1NTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTY2MDcsNyArNjYwNyw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnJlbW92ZVJlZmxlY3Rpb24oKQogICAgIG1fcmVmbGVjdGlvbiA9IG51bGxw
dHI7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRlckxheWVyOjpjcmVhdGVSZWZsZWN0
aW9uU3R5bGUoKQorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJMYXllcjo6Y3JlYXRlUmVmbGVjdGlv
blN0eWxlKCkKIHsKICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwog
ICAgIG5ld1N0eWxlLmdldCgpLmluaGVyaXRGcm9tKCZyZW5kZXJlcigpLnN0eWxlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBkMTZjN2JlLi4yMjYzMGEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMTEyMCw3ICsxMTIwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVJlZmxlY3Rpb24oKTsKICAgICB2b2lkIHJlbW92
ZVJlZmxlY3Rpb24oKTsKIAotICAgIFBhc3NSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZVJlZmxlY3Rp
b25TdHlsZSgpOworICAgIFJlZjxSZW5kZXJTdHlsZT4gY3JlYXRlUmVmbGVjdGlvblN0eWxlKCk7
CiAgICAgYm9vbCBwYWludGluZ0luc2lkZVJlZmxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Bh
aW50aW5nSW5zaWRlUmVmbGVjdGlvbjsgfQogICAgIHZvaWQgc2V0UGFpbnRpbmdJbnNpZGVSZWZs
ZWN0aW9uKGJvb2wgYikgeyBtX3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbiA9IGI7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3Bw
CmluZGV4IDcyZWZmOWIuLjVmMjgyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTM1LDEyICszNSwxMiBAQCBib29s
IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNfaGFkTGF5ZXIgPSBmYWxzZTsKIGJvb2wgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdDo6c19oYWRUcmFuc2Zvcm0gPSBmYWxzZTsKIGJvb2wgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdDo6c19sYXllcldhc1NlbGZQYWludGluZyA9IGZhbHNlOwogCi1SZW5kZXJM
YXllck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQorUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCiAg
ICAgOiBSZW5kZXJFbGVtZW50KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxh
Z3MgfCBSZW5kZXJMYXllck1vZGVsT2JqZWN0RmxhZykKIHsKIH0KIAotUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQorUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKICAgICA6
IFJlbmRlckVsZW1lbnQoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3Mg
fCBSZW5kZXJMYXllck1vZGVsT2JqZWN0RmxhZykKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCmluZGV4IGMzNjg3MGUuLjM0YTM4
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVs
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuaApAQCAtNTIsOCArNTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU2Ny
b2xsYWJsZU9yUnViYmVyYmFuZGFibGVCb3goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOwotICAgIFJlbmRlckxheWVyTW9k
ZWxPYmplY3QoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5
cGVGbGFncyk7CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCB1bnNpZ25lZCBiYXNlVHlwZUZs
YWdzKTsKIAogICAgIHZvaWQgY3JlYXRlTGF5ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCAxNmU2N2VjLi5kMzA5YjE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcApAQCAtNDAsNyArNDAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgaW52YWxpZExpbmVI
ZWlnaHQgPSAtMTsKIAotUmVuZGVyTGluZUJyZWFrOjpSZW5kZXJMaW5lQnJlYWsoSFRNTEVsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTGluZUJyZWFr
OjpSZW5kZXJMaW5lQnJlYWsoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KGVsZW1lbnQsIFdURjo6bW92ZShz
dHlsZSksIDApCiAgICAgLCBtX2lubGluZUJveFdyYXBwZXIobnVsbHB0cikKICAgICAsIG1fY2Fj
aGVkTGluZUhlaWdodChpbnZhbGlkTGluZUhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuaAppbmRleCBmNWY5NjQzLi5jMjZlMTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNz
IFBvc2l0aW9uOwogCiBjbGFzcyBSZW5kZXJMaW5lQnJlYWsgZmluYWwgOiBwdWJsaWMgUmVuZGVy
Qm94TW9kZWxPYmplY3QgewogcHVibGljOgotICAgIFJlbmRlckxpbmVCcmVhayhIVE1MRWxlbWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJMaW5lQnJlYWsoSFRNTEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlckxpbmVCcmVhaygp
OwogCiAgICAgLy8gRklYTUU6IFRoZSBsaWVzIGhlcmUga2VlcCByZW5kZXIgdHJlZSBkdW1wIGJh
c2VkIHRlc3QgcmVzdWx0cyB1bmNoYW5nZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHAKaW5kZXggOWIyMGUwNC4uYTA0YWVhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtODEsNyArODEsNyBAQCBjb25zdCBpbnQg
ZGVmYXVsdFNpemUgPSA0OwogLy8gd2lkZ2V0LCBidXQgSSdtIG5vdCBzdXJlIHRoaXMgaXMgcmln
aHQgZm9yIHRoZSBuZXcgY29udHJvbC4KIGNvbnN0IGludCBiYXNlbGluZUFkanVzdG1lbnQgPSA3
OwogCi1SZW5kZXJMaXN0Qm94OjpSZW5kZXJMaXN0Qm94KEhUTUxTZWxlY3RFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckxpc3RCb3g6OlJlbmRlckxp
c3RCb3goSFRNTFNlbGVjdEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAg
ICwgbV9vcHRpb25zQ2hhbmdlZCh0cnVlKQogICAgICwgbV9zY3JvbGxUb1JldmVhbFNlbGVjdGlv
bkFmdGVyTGF5b3V0KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmgKaW5kZXggOGFlNjlkYi4uYzVkZjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50Owog
CiBjbGFzcyBSZW5kZXJMaXN0Qm94IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdywgcHVi
bGljIFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaXN0Qm94KEhUTUxTZWxl
Y3RFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckxpc3RCb3goSFRN
TFNlbGVjdEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRl
ckxpc3RCb3goKTsKIAogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3RFbGVtZW50KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAppbmRleCA4
Yzk5Y2UwLi5kMmU3ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
SXRlbS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJMaXN0SXRlbTo6UmVuZGVyTGlzdEl0ZW0oRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJMaXN0SXRl
bTo6UmVuZGVyTGlzdEl0ZW0oRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAg
ICAgLCBtX21hcmtlcihudWxscHRyKQogICAgICwgbV9oYXNFeHBsaWNpdFZhbHVlKGZhbHNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAppbmRleCA5YTVjOTQwLi40
NDUzZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0
ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaApAQCAt
MzMsNyArMzMsNyBAQCBjbGFzcyBSZW5kZXJMaXN0TWFya2VyOwogCiBjbGFzcyBSZW5kZXJMaXN0
SXRlbSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRl
ckxpc3RJdGVtKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTGlz
dEl0ZW0oRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVy
TGlzdEl0ZW0oKTsKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggOWVhNzUwZC4uMTliYjI2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAt
MTExNyw3ICsxMTE3LDcgQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KEVMaXN0U3R5bGVUeXBlIHR5
cGUsIGludCB2YWx1ZSkKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1SZW5k
ZXJMaXN0TWFya2VyOjpSZW5kZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJiBsaXN0SXRlbSwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJMaXN0TWFya2VyOjpSZW5kZXJMaXN0
TWFya2VyKFJlbmRlckxpc3RJdGVtJiBsaXN0SXRlbSwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogICAgIDogUmVuZGVyQm94KGxpc3RJdGVtLmRvY3VtZW50KCksIFdURjo6bW92ZShzdHlsZSks
IDApCiAgICAgLCBtX2xpc3RJdGVtKGxpc3RJdGVtKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmgKaW5kZXggMWE3ZmI3MC4uYzM0YzVmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCkBAIC0zNSw3ICszNSw3IEBA
IFN0cmluZyBsaXN0TWFya2VyVGV4dChFTGlzdFN0eWxlVHlwZSwgaW50IHZhbHVlKTsKIC8vIFRo
ZSBSZW5kZXJMaXN0TWFya2VyIGFsd2F5cyBoYXMgdG8gYmUgYSBjaGlsZCBvZiBhIFJlbmRlckxp
c3RJdGVtLgogY2xhc3MgUmVuZGVyTGlzdE1hcmtlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3gg
ewogcHVibGljOgotICAgIFJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0mLCBQYXNzUmVm
PFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSYsIFJl
ZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyTGlzdE1hcmtlcigpOwogCiAg
ICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAppbmRleCAwMDU0NmEwLi5hZmViYzlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKQEAgLTM0LDEzICszNCwx
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck1lZGlhOjpSZW5kZXJNZWRpYShI
VE1MTWVkaWFFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlck1lZGlhOjpSZW5kZXJNZWRpYShIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVu
ZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJJbWFnZShlbGVtZW50LCBXVEY6Om1vdmUo
c3R5bGUpKQogewogICAgIHNldEhhc1NoYWRvd0NvbnRyb2xzKHRydWUpOwogfQogCi1SZW5kZXJN
ZWRpYTo6UmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIGNvbnN0IEludFNpemUmIGludHJpbnNpY1NpemUpCitSZW5kZXJNZWRp
YTo6UmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlLCBjb25zdCBJbnRTaXplJiBpbnRyaW5zaWNTaXplKQogICAgIDogUmVuZGVySW1h
Z2UoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKICAgICBzZXRJbnRyaW5zaWNTaXplKGlu
dHJpbnNpY1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lZGlhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAppbmRleCBj
MzY2ODAwLi41NTg0ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVkaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaApA
QCAtMzUsOCArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1lZGlh
IDogcHVibGljIFJlbmRlckltYWdlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYShIVE1MTWVk
aWFFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlck1lZGlhKEhUTUxN
ZWRpYUVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgY29uc3QgSW50U2l6ZSYgaW50cmlu
c2ljU2l6ZSk7CisgICAgUmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJik7CisgICAgUmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJiwgY29uc3QgSW50U2l6ZSYgaW50cmluc2ljU2l6ZSk7CiAgICAgdmlydHVhbCB+UmVu
ZGVyTWVkaWEoKTsKIAogICAgIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGRvd25jYXN0PEhUTUxNZWRpYUVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMo
KSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCmluZGV4IDk1ZmZjNzguLmIyZTFiMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck1lZGlh
Vm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihF
bGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1lZGlh
Vm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJC
bG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTU5LDcgKzU5LDcg
QEAgdm9pZCBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KCkKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGlu
ZUNvbnRhaW5lcjo6UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVudCYg
ZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lcjo6UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxl
bWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxl
eGlibGVCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTgxLDcgKzgxLDcg
QEAgdm9pZCBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcjo6bGF5b3V0KCkKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKIAotUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dDo6UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
OlJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IDdhNjVjMjkuLmFmM2E4ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVu
ZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tG
bG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihFbGVt
ZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVy
Q29udGFpbmVyKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0
ZToKIAogY2xhc3MgUmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIgZmluYWwgOiBw
dWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlck1lZGlhQ29udHJv
bFRpbWVsaW5lQ29udGFpbmVyKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRl
OwpAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBSZW5kZXJUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRWxlbWVudCYs
IFJlZjxSZW5kZXJTdHlsZT4mJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAKaW5kZXggODEzMDFkNC4uYTc5ZDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBzaXplX3Qgc2VsZWN0
ZWRPcHRpb25Db3VudChjb25zdCBSZW5kZXJNZW51TGlzdCYgcmVuZGVyTWVudUxpc3QpCiB9CiAj
ZW5kaWYKIAotUmVuZGVyTWVudUxpc3Q6OlJlbmRlck1lbnVMaXN0KEhUTUxTZWxlY3RFbGVtZW50
JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1lbnVMaXN0OjpS
ZW5kZXJNZW51TGlzdChIVE1MU2VsZWN0RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxleGlibGVCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKICAgICAsIG1fYnV0dG9uVGV4dChudWxscHRyKQogICAgICwgbV9pbm5lckJsb2NrKG51
bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCmluZGV4IDNk
OWI1ZjQuLjU3MWQyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBSZW5kZXJNZW51
TGlzdCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCwgcHJpdmF0ZSBQb3B1cE1lbnVD
bGllbnQgewogCiBwdWJsaWM6Ci0gICAgUmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVs
ZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlck1lbnVMaXN0
KCk7CiAKICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0RWxlbWVudCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAKaW5kZXggZDNjNDI5MS4uMDFmOWI0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCkBAIC0zMCw3ICsz
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAotUmVuZGVyTWV0ZXI6OlJlbmRlck1ldGVyKEhUTUxFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1ldGVyOjpSZW5kZXJNZXRlcihIVE1MRWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tG
bG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZXRlci5oCmluZGV4IGM2ZTI2MGEuLmY4Y2QwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZXRlci5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEhUTUxNZXRlckVs
ZW1lbnQ7CiAKIGNsYXNzIFJlbmRlck1ldGVyIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxv
dyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWV0ZXIoSFRNTEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyTWV0ZXIoSFRNTEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
JiYpOwogICAgIHZpcnR1YWwgflJlbmRlck1ldGVyKCk7CiAKICAgICBIVE1MTWV0ZXJFbGVtZW50
KiBtZXRlckVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKaW5kZXggOGRmMzMxZC4uMjY2
ODA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBib29sIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6Z1NoaWZ0aW5nU3Bhbm5l
ciA9IGZhbHNlOwogCi1SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OlJlbmRlck11bHRpQ29s
dW1uRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3dU
aHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9s
YXN0U2V0V29ya2VkT24obnVsbHB0cikKICAgICAsIG1fY29sdW1uQ291bnQoMSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQu
aAppbmRleCBmOTU1ZmEyLi4wYTA5YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyOwogCiBjbGFzcyBSZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxvd1RocmVhZCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKERvY3VtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1
bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgflJlbmRlck11bHRpQ29sdW1uRmxvd1Ro
cmVhZCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUZsb3dDaGlsZEluZm8oUmVuZGVyT2Jq
ZWN0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU2V0LmNwcAppbmRleCAyOWZiNmZhLi4yY2ZlNGE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJNdWx0aUNvbHVtblNldDo6UmVu
ZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYgZmxvd1RocmVhZCwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNdWx0aUNvbHVtblNldDo6UmVuZGVyTXVsdGlDb2x1
bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYgZmxvd1RocmVhZCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQogICAgIDogUmVuZGVyUmVnaW9uU2V0KGZsb3dUaHJlYWQuZG9jdW1lbnQoKSwgV1RGOjpt
b3ZlKHN0eWxlKSwgZmxvd1RocmVhZCkKICAgICAsIG1fY29tcHV0ZWRDb2x1bW5Db3VudCgxKQog
ICAgICwgbV9jb21wdXRlZENvbHVtbldpZHRoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCmluZGV4IDhjYWMwNTAuLjk2MjE2OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCkBAIC00
NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGNvbWUgYmVmb3JlIGFuZCBhZnRl
ciB0aGUgc3Bhbi4KIGNsYXNzIFJlbmRlck11bHRpQ29sdW1uU2V0IGZpbmFsIDogcHVibGljIFJl
bmRlclJlZ2lvblNldCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVy
Rmxvd1RocmVhZCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNdWx0aUNvbHVt
blNldChSZW5kZXJGbG93VGhyZWFkJiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogICAgIFJlbmRl
ckJsb2NrRmxvdyogbXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxSZW5kZXJCbG9ja0Zsb3c+KHBhcmVudCgpKTsgfQogICAgIFJlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZCogbXVsdGlDb2x1bW5GbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKj4oZmxvd1RocmVhZCgpKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBs
YWNlaG9sZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
blNwYW5uZXJQbGFjZWhvbGRlci5jcHAKaW5kZXggZWFhMWYzNy4uNmQ3ZTlmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNl
aG9sZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFJlbmRlck11bHRpQ29s
dW1uU3Bhbm5lclBsYWNlaG9sZGVyKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRl
cjo6Y3JlYXRlCiAgICAgcmV0dXJuIHBsYWNlaG9sZGVyOwogfQogCi1SZW5kZXJNdWx0aUNvbHVt
blNwYW5uZXJQbGFjZWhvbGRlcjo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIo
UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkLCBSZW5kZXJCb3gqIHNwYW5u
ZXIsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVy
UGxhY2Vob2xkZXI6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKFJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCwgUmVuZGVyQm94KiBzcGFubmVyLCBSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZmxvd1RocmVhZC0+ZG9jdW1l
bnQoKSwgV1RGOjptb3ZlKHN0eWxlKSwgUmVuZGVyQm94TW9kZWxPYmplY3RGbGFnKQogICAgICwg
bV9zcGFubmVyKHNwYW5uZXIpCiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyLmgKaW5kZXggY2Y5ZDFiMy4uNjM4MWUwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bh
bm5lclBsYWNlaG9sZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd1Ro
cmVhZDsgfQogCiBwcml2YXRlOgotICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bhbm5lciwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9s
ZGVyKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCosIFJlbmRlckJveCogc3Bhbm5lciwgUmVm
PFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVtblNw
YW5uZXJQbGFjZWhvbGRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC5jcHAKaW5kZXggZjc4YjNiMi4uNzM1YzU4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCkBAIC00NCw3
ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQ6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6UmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJSZWdpb24oZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIG51bGxwdHIp
CiAgICAgLCBtX2hhc0N1c3RvbVJlZ2lvblN0eWxlKGZhbHNlKQogICAgICwgbV9oYXNBdXRvTG9n
aWNhbEhlaWdodChmYWxzZSkKQEAgLTU3LDcgKzU3LDcgQEAgUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQ6On5SZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpCiB7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5
bGU+IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpjcmVhdGVTdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYgcGFyZW50U3R5bGUpCitSZWY8UmVuZGVyU3R5bGU+IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
OjpjcmVhdGVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCiB7CiAgICAgYXV0
byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZw
YXJlbnRTdHlsZSwgQkxPQ0spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oCmluZGV4IDJjMjQ2OWYuLjllYjU2MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oCkBA
IC00OSwxMCArNDksMTAgQEAgY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50IGZpbmFsIDogcHVibGljIFJlbmRlclJlZ2lvbiB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
JiYpOwogICAgIHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7CiAKLSAgICBzdGF0
aWMgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBh
cmVudFN0eWxlKTsKKyAgICBzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
VGhyZWFkLmNwcAppbmRleCBmNWU4ODI1Li45NzgyMjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAtNDYsNyArNDYsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVuZGVy
TmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUsIFBhc3NSZWY8V2ViS2l0TmFtZWRGbG93PiBuYW1lZEZsb3cpCitSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSwgUmVmPFdlYktpdE5hbWVkRmxvdz4mJiBuYW1lZEZsb3cpCiAg
ICAgOiBSZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwg
bV9oYXNSZWdpb25zV2l0aFN0eWxpbmcoZmFsc2UpCiAgICAgLCBtX2Rpc3BhdGNoUmVnaW9uT3Zl
cnNldENoYW5nZUV2ZW50KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd1RocmVhZC5oCmluZGV4IGI1ZjE2NGIuLjQxYWFhZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgdHlwZWRlZiBMaXN0SGFzaFNldDxFbGVtZW50Kj4gTmFtZWRGbG93Q29udGVudEVs
ZW1lbnRzOwogCiBjbGFzcyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyRmxvd1RocmVhZCwgcHVibGljIFNlbGVjdGlvblN1YnRyZWVSb290IHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwg
UGFzc1JlZjxXZWJLaXROYW1lZEZsb3c+KTsKKyAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQoRG9j
dW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYsIFJlZjxXZWJLaXROYW1lZEZsb3c+JiYpOwogICAg
IHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd1RocmVhZCgpOwogCiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBmbG93VGhyZWFkTmFtZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJQcm9ncmVzcy5jcHAKaW5kZXggYjI1YWEwMS4uYTRkMDQ5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUHJvZ3Jlc3M6OlJlbmRlclByb2dyZXNzKEhUTUxF
bGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclByb2dy
ZXNzOjpSZW5kZXJQcm9ncmVzcyhIVE1MRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHls
ZSkpCiAgICAgLCBtX3Bvc2l0aW9uKEhUTUxQcm9ncmVzc0VsZW1lbnQ6OkludmFsaWRQb3NpdGlv
bikKICAgICAsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJQcm9ncmVzcy5oCmluZGV4IDc3Y2I0NGMuLjMyYzVhNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5oCkBAIC0yOSw3ICsyOSw3IEBAIGNsYXNzIEhU
TUxQcm9ncmVzc0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclByb2dyZXNzIGZpbmFsIDogcHVibGlj
IFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUHJvZ3Jlc3MoSFRNTEVsZW1l
bnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUHJvZ3Jlc3MoSFRNTEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclByb2dyZXNzKCk7
CiAKICAgICBkb3VibGUgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcAppbmRleCA1NWZmNmZkLi4xZjAy
Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZW5kZXJRdW90ZTo6UmVuZGVyUXVvdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgUXVvdGVUeXBlIHF1b3RlKQorUmVuZGVyUXVvdGU6OlJl
bmRlclF1b3RlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBR
dW90ZVR5cGUgcXVvdGUpCiAgICAgOiBSZW5kZXJJbmxpbmUoZG9jdW1lbnQsIFdURjo6bW92ZShz
dHlsZSkpCiAgICAgLCBtX3R5cGUocXVvdGUpCiAgICAgLCBtX2RlcHRoKC0xKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAppbmRleCAzYmI1MGRmLi4wNjYyNWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclF1b3RlIGZpbmFsIDogcHVibGljIFJlbmRlcklu
bGluZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUXVvdGUoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRl
clN0eWxlPiwgUXVvdGVUeXBlKTsKKyAgICBSZW5kZXJRdW90ZShEb2N1bWVudCYsIFJlZjxSZW5k
ZXJTdHlsZT4mJiwgUXVvdGVUeXBlKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJRdW90ZSgpOwogCiAg
ICAgdm9pZCBhdHRhY2hRdW90ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmNwcAppbmRleCBhNTc0MTE0Li5kMjlkNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtNDgsNyArNDgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQorUmVu
ZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24oRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQogICAgIDogUmVuZGVyQmxv
Y2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxv
d1RocmVhZCkKICAgICAsIG1fcGFyZW50TmFtZWRGbG93VGhyZWFkKG51bGxwdHIpCkBAIC01Niw3
ICs1Niw3IEBAIFJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKEVsZW1lbnQmIGVsZW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBSZW5kZXJGCiB7CiB9CiAKLVJlbmRlclJlZ2lvbjo6
UmVuZGVyUmVnaW9uKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCitSZW5kZXJSZWdpb246OlJlbmRlclJl
Z2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgUmVuZGVy
Rmxvd1RocmVhZCogZmxvd1RocmVhZCkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQogICAgICwg
bV9wYXJlbnROYW1lZEZsb3dUaHJlYWQobnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uaAppbmRleCBiM2YzMWI4Li5jYWUxMmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlZ2lvbi5oCkBAIC0xMjksOCArMTI5LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzRm9yQm94SW5SZWdpb24oVmVjdG9yPEZsb2F0UXVhZD4m
LCBib29sKiwgY29uc3QgUmVuZGVyQm94KiwgZmxvYXQsIGZsb2F0KSB7IH0KIAogcHJvdGVjdGVk
OgotICAgIFJlbmRlclJlZ2lvbihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIFJlbmRl
ckZsb3dUaHJlYWQqKTsKLSAgICBSZW5kZXJSZWdpb24oRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRl
clN0eWxlPiwgUmVuZGVyRmxvd1RocmVhZCopOworICAgIFJlbmRlclJlZ2lvbihFbGVtZW50Jiwg
UmVmPFJlbmRlclN0eWxlPiYmLCBSZW5kZXJGbG93VGhyZWFkKik7CisgICAgUmVuZGVyUmVnaW9u
KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCBSZW5kZXJGbG93VGhyZWFkKik7CiAKICAg
ICB2b2lkIGVuc3VyZU92ZXJmbG93Rm9yQm94KGNvbnN0IFJlbmRlckJveCosIFJlZlB0cjxSZW5k
ZXJPdmVyZmxvdz4mLCBib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVnaW9uU2V0LmNwcAppbmRleCBhZTA3M2IxLi5hOTExNTJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJlZ2lvblNldDo6UmVuZGVyUmVnaW9uU2V0KERvY3Vt
ZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIFJlbmRlckZsb3dUaHJl
YWQmIGZsb3dUaHJlYWQpCitSZW5kZXJSZWdpb25TZXQ6OlJlbmRlclJlZ2lvblNldChEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgUmVuZGVyRmxvd1RocmVhZCYg
Zmxvd1RocmVhZCkKICAgICA6IFJlbmRlclJlZ2lvbihkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxl
KSwgJmZsb3dUaHJlYWQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVn
aW9uU2V0LmgKaW5kZXggOTE2OWI2MC4uNTU1ODdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb25TZXQuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBleHBhbmRUb0VuY29tcGFzc0Zsb3dUaHJlYWRDb250ZW50c0lmTmVlZGVkKCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICBSZW5kZXJSZWdpb25TZXQoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
PiwgUmVuZGVyRmxvd1RocmVhZCYpOworICAgIFJlbmRlclJlZ2lvblNldChEb2N1bWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4mJiwgUmVuZGVyRmxvd1RocmVhZCYpOwogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBpbnN0YWxsRmxvd1RocmVhZCgpIG92ZXJyaWRlIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggYjI3ZGYyYy4uMDg1MzMz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC00
NiwyMSArNDYsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3QgaW50IGNEZWZhdWx0V2lk
dGggPSAzMDA7CiBjb25zdCBpbnQgY0RlZmF1bHRIZWlnaHQgPSAxNTA7CiAKLVJlbmRlclJlcGxh
Y2VkOjpSZW5kZXJSZXBsYWNlZChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RG
Ojptb3ZlKHN0eWxlKSwgUmVuZGVyUmVwbGFjZWRGbGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXpl
KGNEZWZhdWx0V2lkdGgsIGNEZWZhdWx0SGVpZ2h0KQogewogICAgIHNldFJlcGxhY2VkKHRydWUp
OwogfQogCi1SZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1Np
emUpCitSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgUmVm
PFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQog
ICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIFJlbmRlclJlcGxhY2Vk
RmxhZykKICAgICAsIG1faW50cmluc2ljU2l6ZShpbnRyaW5zaWNTaXplKQogewogICAgIHNldFJl
cGxhY2VkKHRydWUpOwogfQogCi1SZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRG9jdW1l
bnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgTGF5b3V0U2l6
ZSYgaW50cmluc2ljU2l6ZSkKK1JlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYg
aW50cmluc2ljU2l6ZSkKICAgICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxl
KSwgUmVuZGVyUmVwbGFjZWRGbGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXplKGludHJpbnNpY1Np
emUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IDU1
MDFjZDMuLjQwMTc0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5oCkBAIC0zOSw5ICszOSw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1JlcGxhY2VkTG9naWNh
bEhlaWdodCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyUmVwbGFjZWQoRWxlbWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJSZXBsYWNlZChFbGVtZW50Jiwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4sIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpOwot
ICAgIFJlbmRlclJlcGxhY2VkKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIGNvbnN0
IExheW91dFNpemUmIGludHJpbnNpY1NpemUpOworICAgIFJlbmRlclJlcGxhY2VkKEVsZW1lbnQm
LCBSZWY8UmVuZGVyU3R5bGU+JiYpOworICAgIFJlbmRlclJlcGxhY2VkKEVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+JiYsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpOworICAgIFJl
bmRlclJlcGxhY2VkKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBMYXlvdXRT
aXplJiBpbnRyaW5zaWNTaXplKTsKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2Eu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCmluZGV4IDM2
YWQ5ZDUuLjM3NzIwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsaWNhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGlj
YS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJS
ZXBsaWNhOjpSZW5kZXJSZXBsaWNhKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJSZXBsaWNhOjpSZW5kZXJSZXBsaWNhKERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGRvY3VtZW50
LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogewogICAgIC8vIFRoaXMgaXMgYSBoYWNrLiBSZXBsaWNh
cyBhcmUgc3ludGhldGljLCBhbmQgZG9uJ3QgcGljayB1cCB0aGUgYXR0cmlidXRlcyBvZiB0aGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCmluZGV4IDVmNGE1YWUuLjg0
YTBiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclJlcGxpY2EgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSZXBsaWNhKERvY3Vt
ZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJlcGxpY2EoRG9jdW1lbnQm
LCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJlcGxpY2EoKTsKIAog
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJSZXBsaWNhIjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1Ynku
Y3BwCmluZGV4IDQ0NTZkYmYuLjZhYjczNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlclJ1YnlS
dW4mIGZpbmRSdWJ5UnVuUGFyZW50KFJlbmRlck9iamVjdCYgY2hpbGQpCiAKIC8vPT09IHJ1Ynkg
YXMgaW5saW5lIG9iamVjdCA9PT0KIAotUmVuZGVyUnVieUFzSW5saW5lOjpSZW5kZXJSdWJ5QXNJ
bmxpbmUoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJSdWJ5QXNJbmxpbmU6OlJlbmRlclJ1YnlBc0lubGluZShFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJJbmxpbmUoZWxlbWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFJlbmRlclJ1YnlBc0lu
bGluZTo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGlsZCkKIAogLy89PT0gcnVieSBhcyBi
bG9jayBvYmplY3QgPT09CiAKLVJlbmRlclJ1YnlBc0Jsb2NrOjpSZW5kZXJSdWJ5QXNCbG9jayhF
bGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclJ1YnlB
c0Jsb2NrOjpSZW5kZXJSdWJ5QXNCbG9jayhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oCmluZGV4IGYzYTg2
ZDcuLjBiMWIxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuaApAQCAtNTMs
NyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyA8cnVieT4gd2hlbiB1c2VkIGFzICdk
aXNwbGF5OmlubGluZScKIGNsYXNzIFJlbmRlclJ1YnlBc0lubGluZSBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJJbmxpbmUgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlBc0lubGluZShFbGVtZW50Jiwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlBc0lubGluZShFbGVtZW50Jiwg
UmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QXNJbmxpbmUoKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CkBAIC03MSw3ICs3MSw3IEBAIHByaXZh
dGU6CiAvLyA8cnVieT4gd2hlbiB1c2VkIGFzICdkaXNwbGF5OmJsb2NrJyBvciAnZGlzcGxheTpp
bmxpbmUtYmxvY2snCiBjbGFzcyBSZW5kZXJSdWJ5QXNCbG9jayBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlBc0Jsb2NrKEVsZW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieUFzQmxvY2soRWxlbWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUFzQmxvY2soKTsKIAog
ICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihu
b2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJ1YnlCYXNlLmNwcAppbmRleCAzMTMyOTk4Li45YTdmOGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZW5kZXJSdWJ5QmFzZTo6UmVuZGVyUnVieUJhc2UoRG9jdW1lbnQm
IGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclJ1YnlCYXNlOjpS
ZW5kZXJSdWJ5QmFzZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsK
ICAgICBzZXRJbmxpbmUoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnlCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eUJhc2UuaAppbmRleCBmYjc1YjYzLi4yYTYyYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUnVieUJhc2UuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBSZW5kZXJSdWJ5UnVu
OwogCiBjbGFzcyBSZW5kZXJSdWJ5QmFzZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cg
ewogcHVibGljOgotICAgIFJlbmRlclJ1YnlCYXNlKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlclJ1YnlCYXNlKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QmFzZSgpOwogICAgIAogICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5
QmFzZSAoYW5vbnltb3VzKSI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5UnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
UnVuLmNwcAppbmRleCAyNWQ5MDBjLi4yMDVlYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnlSdW4uY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotUmVuZGVyUnVieVJ1bjo6UmVuZGVyUnVieVJ1
bihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
UnVieVJ1bjo6UmVuZGVyUnVieVJ1bihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKIHsKICAgICBzZXRSZXBsYWNlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVJ1bi5oCmluZGV4IDA5Njg1YjYuLmE3NzM0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSZW5kZXJS
dWJ5VGV4dDsKIAogY2xhc3MgUmVuZGVyUnVieVJ1biBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9j
a0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlSdW4oRG9jdW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieVJ1bihEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHls
ZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieVJ1bigpOwogCiAgICAgYm9vbCBoYXNSdWJ5
VGV4dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJ1YnlUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5j
cHAKaW5kZXggZGM3NmY3Ny4uODk3YmNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVRleHQuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVuZGVyUnVieVRleHQ6OlJlbmRlclJ1YnlUZXh0KEVsZW1lbnQmIGVsZW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUnVieVRleHQ6OlJlbmRlclJ1YnlUZXh0
KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRl
ckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAppbmRleCA4ZmQzYzIzLi5lZmU4MTkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaApAQCAtMzcsNyArMzcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclJ1YnlUZXh0IGZpbmFsIDogcHVi
bGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieVRleHQoRWxlbWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5VGV4dChFbGVtZW50Jiwg
UmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5VGV4dCgpOwogCiAg
ICAgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5v
ZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAppbmRleCA2NmRmZDJmLi41OGUyNGNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU2Nyb2xsYmFyUGFydDo6
UmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlLCBSZW5kZXJTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
KQorUmVuZGVyU2Nyb2xsYmFyUGFydDo6UmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgUmVuZGVyU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCkKICAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEY6
Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9zY3JvbGxiYXIoc2Nyb2xsYmFyKQogICAgICwgbV9w
YXJ0KHBhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuaAppbmRleCBlZTY0MjJiLi5lNGI4ZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVuZGVy
U2Nyb2xsYmFyOwogCiBjbGFzcyBSZW5kZXJTY3JvbGxiYXJQYXJ0IGZpbmFsIDogcHVibGljIFJl
bmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KERvY3VtZW50Jiwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4sIFJlbmRlclNjcm9sbGJhciogPSAwLCBTY3JvbGxiYXJQYXJ0
ID0gTm9QYXJ0KTsKKyAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KERvY3VtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmLCBSZW5kZXJTY3JvbGxiYXIqID0gMCwgU2Nyb2xsYmFyUGFydCA9IE5vUGFydCk7
CiAgICAgCiAgICAgdmlydHVhbCB+UmVuZGVyU2Nyb2xsYmFyUGFydCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRleCBkODI0ODY1Li4y
MDhmNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNo
RmllbGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVs
ZC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJTZWFyY2hGaWVsZDo6UmVuZGVyU2VhcmNoRmllbGQo
SFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJTZWFyY2hGaWVsZDo6UmVuZGVyU2VhcmNoRmllbGQoSFRNTElucHV0RWxlbWVudCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3NlYXJjaFBvcHVw
SXNWaXNpYmxlKGZhbHNlKQogICAgICwgbV9zZWFyY2hQb3B1cCgwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAppbmRleCBmOTNlNWY1Li43YjVmMzUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaApAQCAtMzMs
NyArMzMsNyBAQCBjbGFzcyBTZWFyY2hQb3B1cE1lbnU7CiAKIGNsYXNzIFJlbmRlclNlYXJjaEZp
ZWxkIGZpbmFsIDogcHVibGljIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSwgcHJpdmF0ZSBQ
b3B1cE1lbnVDbGllbnQgewogcHVibGljOgotICAgIFJlbmRlclNlYXJjaEZpZWxkKEhUTUxJbnB1
dEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU2VhcmNoRmllbGQo
SFRNTElucHV0RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVu
ZGVyU2VhcmNoRmllbGQoKTsKIAogICAgIHZvaWQgdXBkYXRlQ2FuY2VsQnV0dG9uVmlzaWJpbGl0
eSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNs
aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAppbmRl
eCAxMDc5NzllLi44YjZkNDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2xpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xp
ZGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGlu
dCBSZW5kZXJTbGlkZXI6OmRlZmF1bHRUcmFja0xlbmd0aCA9IDEyOTsKIAotUmVuZGVyU2xpZGVy
OjpSZW5kZXJTbGlkZXIoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJTbGlkZXI6OlJlbmRlclNsaWRlcihIVE1MSW5wdXRFbGVtZW50
JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJs
ZUJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogICAgIC8vIFdlIGFzc3VtZSBSZW5k
ZXJTbGlkZXIgd29ya3Mgb25seSB3aXRoIDxpbnB1dCB0eXBlPXJhbmdlPi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaAppbmRleCA4NmRhMjI1Li4yODMxOTI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNz
IFJlbmRlclNsaWRlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VHJhY2tMZW5ndGg7CiAKLSAgICBSZW5kZXJT
bGlkZXIoSFRNTElucHV0RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5k
ZXJTbGlkZXIoSFRNTElucHV0RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmly
dHVhbCB+UmVuZGVyU2xpZGVyKCk7CiAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcAppbmRleCA1Njk3MjEyLi40NTVmY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTQ4LDcg
KzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVudCwg
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3QoZWxl
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fc25hcHNob3RSZXNvdXJjZShzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX2lzUG90ZW50aWFsTW91
c2VBY3RpdmF0aW9uKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uaAppbmRleCA2OWI1YTYxLi4wYjZjM2QxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaApAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogCiBjbGFzcyBSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJFbWJlZGRlZE9iamVjdCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxl
bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbigpOwogCiAgICAgSFRNTFBsdWdJbkltYWdlRWxl
bWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcAppbmRleCA5MGU0NDUwLi45ZTg1NWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJUYWJsZTo6UmVu
ZGVyVGFibGUoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwg
MCkKICAgICAsIG1faGVhZChudWxscHRyKQogICAgICwgbV9mb290KG51bGxwdHIpCkBAIC03Myw3
ICs3Myw3IEBAIFJlbmRlclRhYmxlOjpSZW5kZXJUYWJsZShFbGVtZW50JiBlbGVtZW50LCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICBtX2NvbHVtblBvcy5maWxsKDAsIDEpOwogfQog
Ci1SZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlOjpSZW5kZXJUYWJsZShEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGRvY3Vt
ZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9oZWFkKG51bGxwdHIpCiAgICAgLCBt
X2Zvb3QobnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKaW5kZXgg
OTRkMWNiZC4uZTAxZjdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgK
QEAgLTQ0LDggKzQ0LDggQEAgZW51bSBTa2lwRW1wdHlTZWN0aW9uc1ZhbHVlIHsgRG9Ob3RTa2lw
RW1wdHlTZWN0aW9ucywgU2tpcEVtcHR5U2VjdGlvbnMgfTsKIAogY2xhc3MgUmVuZGVyVGFibGUg
OiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlclRhYmxlKEVsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGUoRG9jdW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGUoRWxlbWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJik7CisgICAgUmVuZGVyVGFibGUoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYp
OwogICAgIHZpcnR1YWwgflJlbmRlclRhYmxlKCk7CiAKICAgICAvLyBQZXIgQ1NTIDMgd3JpdGlu
Zy1tb2RlOiAiVGhlIGZpcnN0IGFuZCBzZWNvbmQgdmFsdWVzIG9mIHRoZSAnYm9yZGVyLXNwYWNp
bmcnIHByb3BlcnR5IHJlcHJlc2VudCBzcGFjaW5nIGJldHdlZW4gY29sdW1ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmNwcAppbmRleCBjZTMyNDFj
Li40NDI5NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDYXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
YXB0aW9uLmNwcApAQCAtMjQsNyArMjQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
bmRlclRhYmxlQ2FwdGlvbjo6UmVuZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVDYXB0aW9uOjpSZW5kZXJUYWJs
ZUNhcHRpb24oRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAg
IDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmgKaW5kZXggYTc2M2Y4
My4uNDY1MDYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2FwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNh
cHRpb24uaApAQCAtMjgsNyArMjgsNyBAQCBjbGFzcyBSZW5kZXJUYWJsZTsKIAogY2xhc3MgUmVu
ZGVyVGFibGVDYXB0aW9uIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6
Ci0gICAgUmVuZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlclRhYmxlQ2FwdGlvbigpOwogCiAgICAgRWxlbWVudCYgZWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMo
KSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5k
ZXggMTI4MjA4OS4uZWIzM2Q5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RydWN0IFNhbWVTaXplQXNSZW5kZXJU
YWJsZUNlbGwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihSZW5kZXJUYWJsZUNlbGwpID09IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVyVGFibGVDZWxsKSwg
UmVuZGVyVGFibGVDZWxsX3Nob3VsZF9zdGF5X3NtYWxsKTsKIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihDb2xsYXBzZWRCb3JkZXJWYWx1ZSkgPT0gOCwgQ29sbGFwc2VkQm9yZGVyVmFsdWVfc2hvdWxk
X3N0YXlfc21hbGwpOwogCi1SZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChFbGVtZW50
JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlQ2VsbDo6
UmVuZGVyVGFibGVDZWxsKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAg
ICwgbV9jb2x1bW4odW5zZXRDb2x1bW5JbmRleCkKICAgICAsIG1fY2VsbFdpZHRoQ2hhbmdlZChm
YWxzZSkKQEAgLTY2LDcgKzY2LDcgQEAgUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwo
RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgdXBkYXRl
Q29sQW5kUm93U3BhbkZsYWdzKCk7CiB9CiAKLVJlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFibGVD
ZWxsKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKICAgICAsIG1fY29sdW1uKHVuc2V0Q29sdW1uSW5kZXgpCiAgICAgLCBtX2Nl
bGxXaWR0aENoYW5nZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmgKaW5kZXggNjUxMzM0Yy4uOWNiNGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMzgsOCArMzgsOCBAQCBlbnVtIEluY2x1ZGVCb3Jk
ZXJDb2xvck9yTm90IHsgRG9Ob3RJbmNsdWRlQm9yZGVyQ29sb3IsIEluY2x1ZGVCb3JkZXJDb2xv
ciB9OwogCiBjbGFzcyBSZW5kZXJUYWJsZUNlbGwgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tG
bG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZUNlbGwoRWxlbWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyVGFibGVDZWxsKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
JiYpOworICAgIFJlbmRlclRhYmxlQ2VsbChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7
CiAgICAgCiAgICAgdW5zaWduZWQgY29sU3BhbigpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKaW5kZXggYmMxODQ5OC4uZjdhOWVlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAotUmVuZGVyVGFibGVDb2w6OlJlbmRlclRhYmxlQ29sKEVsZW1lbnQmIGVsZW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVDb2w6OlJlbmRlclRhYmxlQ29s
KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRl
ckJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9zcGFuKDEpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCmluZGV4IDBmM2NkOTcuLmM2
MWUxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNv
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCkBAIC0z
NSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclRhYmxlQ2VsbDsKIAogY2xhc3MgUmVuZGVyVGFibGVD
b2wgZmluYWwgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZUNv
bChFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlQ29sKEVs
ZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAK
ICAgICB2b2lkIGNsZWFyUHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5Qml0cygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKaW5kZXggMmQ1ODlkMy4uYzQy
NmE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCkBA
IC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCi1SZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3coRWxlbWVudCYgZWxl
bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZVJvdzo6UmVuZGVy
VGFibGVSb3coRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAg
IDogUmVuZGVyQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDApCiAgICAgLCBtX3Jvd0lu
ZGV4KHVuc2V0Um93SW5kZXgpCiB7CiAgICAgc2V0SW5saW5lKGZhbHNlKTsKIH0KIAotUmVuZGVy
VGFibGVSb3c6OlJlbmRlclRhYmxlUm93KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3coRG9jdW1lbnQm
IGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3goZG9j
dW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDApCiAgICAgLCBtX3Jvd0luZGV4KHVuc2V0Um93SW5k
ZXgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCmluZGV4IDVk
MDExNDk5Li5lZjE3ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuaApAQCAtMzQsOCArMzQsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Um93SW5kZXgg
PSAweDdGRkZGRkZFOyAvLyAyLDE0Nyw0ODMsNjQ2CiAKIGNsYXNzIFJlbmRlclRhYmxlUm93IGZp
bmFsIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVSb3coRWxl
bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJUYWJsZVJvdyhEb2N1bWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUYWJsZVJvdyhFbGVtZW50Jiwg
UmVmPFJlbmRlclN0eWxlPiYmKTsKKyAgICBSZW5kZXJUYWJsZVJvdyhEb2N1bWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4mJik7CiAKICAgICBSZW5kZXJUYWJsZVJvdyogbmV4dFJvdygpIGNvbnN0Owog
ICAgIFJlbmRlclRhYmxlUm93KiBwcmV2aW91c1JvdygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBkYTQzMTA0Li4yNmRk
NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcApAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlTG9naWNhbEhl
aWdodEZvckNlbGwoUmVuZGVyVGFibGVTZWN0aW9uOjpSb3dTdHJ1Y3QmIHJvdwogICAgIH0KIH0K
IAotUmVuZGVyVGFibGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNlY3Rpb24oRWxlbWVudCYgZWxlbWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZVNlY3Rpb246OlJlbmRl
clRhYmxlU2VjdGlvbihFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1f
Y0NvbCgwKQogICAgICwgbV9jUm93KDApCkBAIC05Niw3ICs5Niw3IEBAIFJlbmRlclRhYmxlU2Vj
dGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0CiAgICAgc2V0SW5saW5lKGZhbHNlKTsKIH0KIAotUmVuZGVyVGFibGVTZWN0aW9u
OjpSZW5kZXJUYWJsZVNlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94
KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9jQ29sKDApCiAgICAgLCBt
X2NSb3coMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
aAppbmRleCBlZTg1OTI5Li5lODgwODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5oCkBAIC02NCw4ICs2NCw4IEBAIGNsYXNzIFJlbmRlclRhYmxl
Um93OwogCiBjbGFzcyBSZW5kZXJUYWJsZVNlY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVuZGVyQm94
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24oRWxlbWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24oRG9jdW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQmLCBSZWY8UmVuZGVy
U3R5bGU+JiYpOworICAgIFJlbmRlclRhYmxlU2VjdGlvbihEb2N1bWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGFibGVTZWN0aW9uKCk7CiAKICAgICBSZW5k
ZXJUYWJsZVJvdyogZmlyc3RSb3coKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDFkMWIzZTUuLjRmNzFlZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtMzcsNyAr
MzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclRleHRDb250cm9sOjpSZW5k
ZXJUZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVudCwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRy
b2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUp
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaApp
bmRleCBlYWM1NWU1Li4xMjczOTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
UmVuZGVyVGV4dENvbnRyb2woKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50JiB0ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSogc3RhcnRTdHlsZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmPFJlbmRlclN0eWxl
PiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29u
c3QgPSAwOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgY2FuU2Nyb2xsKCkgY29uc3Q7
CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVu
ZGVyVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAgLy8gVGhpcyBjb252ZW5pZW5jZSBmdW5j
dGlvbiBzaG91bGQgbm90IGJlIG1hZGUgcHVibGljIGJlY2F1c2UgaW5uZXJUZXh0RWxlbWVudCBt
YXkgb3V0bGl2ZSB0aGUgcmVuZGVyIHRyZWUuCiAgICAgVGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3Q7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6
CiAvLyBhbnltb3JlLgogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lciBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVu
ZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcihFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKKyAgICBleHBsaWNpdCBSZW5kZXJUZXh0Q29udHJvbElubmVyQ29u
dGFpbmVyKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICAg
ICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgIHsg
fQogICAgIHZpcnR1YWwgflJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXIoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuY3BwCmluZGV4IDgyZmIzNWIuLjU2YmIyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtMzIs
NyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50JiBl
bGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJUZXh0Q29udHJv
bChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpAQCAtODcsNyArODcsNyBAQCBpbnQg
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
IGJhc2VsaW5lVHlwZSwgYm9vbAogICAgIHJldHVybiBSZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRp
b24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSk7
CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpj
cmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QK
K1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmNyZWF0ZUlubmVy
VGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdAogewogICAgIGF1
dG8gdGV4dEJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAgdGV4dEJsb2Nr
U3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20oc3RhcnRTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCmluZGV4IDA2Nzlh
MGYuLjE5MmI3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCkBAIC0zMCw3ICszMCw3IEBAIGNsYXNzIEhUTUxUZXh0
QXJlYUVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lIGZpbmFsIDog
cHVibGljIFJlbmRlclRleHRDb250cm9sIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwor
ICAgIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKEhUTUxUZXh0QXJlYUVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
KCk7CiAKICAgICBIVE1MVGV4dEFyZWFFbGVtZW50JiB0ZXh0QXJlYUVsZW1lbnQoKSBjb25zdDsK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0
ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5b3V0VW5pdCBu
b25Db250ZW50SGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCBiYXNlbGlu
ZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
LCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikg
b3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGNkZWNiMzMuLjJiZDM1YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
OjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6
OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBS
ZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJUZXh0Q29udHJvbChlbGVtZW50
LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9zaG91bGREcmF3Q2Fwc0xvY2tJbmRpY2F0b3Io
ZmFsc2UpCiAgICAgLCBtX2Rlc2lyZWRJbm5lclRleHRMb2dpY2FsSGVpZ2h0KC0xKQpAQCAtMzY0
LDcgKzM2NCw3IEBAIExheW91dFVuaXQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjb21w
dXRlQ29udHJvbExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsCiAgICAgcmV0dXJuIGxpbmVIZWln
aHQgKyBub25Db250ZW50SGVpZ2h0OwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlKiBzdGFydFN0eWxlKSBjb25zdAorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFy
dFN0eWxlKSBjb25zdAogewogICAgIGF1dG8gdGV4dEJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlKCk7CiAgICAgdGV4dEJsb2NrU3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20oc3RhcnRTdHls
ZSk7CkBAIC0zODcsNyArMzg3LDcgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW4KICAgICByZXR1
cm4gdGV4dEJsb2NrU3R5bGU7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6Y3JlYXRlSW5uZXJCbG9ja1N0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdGFydFN0eWxlKSBjb25zdAorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmU6OmNyZWF0ZUlubmVyQmxvY2tTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRT
dHlsZSkgY29uc3QKIHsKICAgICBhdXRvIGlubmVyQmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpj
cmVhdGUoKTsKICAgICBpbm5lckJsb2NrU3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20oc3RhcnRTdHls
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmgKaW5kZXggOTA2M2M0My4uYjMzM2I3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaApAQCAt
MzIsMTEgKzMyLDExIEBAIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZSA6IHB1YmxpYyBSZW5kZXJUZXh0Q29udHJvbCB7CiBwdWJsaWM6
Ci0gICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJ
bnB1dEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZSgpOwogICAgIC8vIEZJWE1FOiBNb3ZlIGNyZWF0ZSpTdHlsZSgp
IHRvIHRoZWlyIGNsYXNzZXMuCi0gICAgdmlydHVhbCBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVh
dGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJCbG9ja1N0eWxlKGNv
bnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlZjxSZW5k
ZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5
bGUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJCbG9j
a1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdDsKIAogICAgIHZvaWQg
Y2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBpbmxp
bmUgSFRNTEVsZW1lbnQqIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6aW5uZXJCbG9ja0Vs
ZW1lbnQoKSBjb25zdAogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sgZmluYWwg
OiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0Q29udHJv
bElubmVyQmxvY2soRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CisgICAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVlRUQ3VlLmNwcAppbmRleCBkNDNmOTk2Li44N2NiMWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlbmRlclZUVEN1ZTo6UmVuZGVyVlRUQ3VlKFZUVEN1ZUJveCYgZWxl
bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJWVFRDdWU6OlJlbmRlclZU
VEN1ZShWVFRDdWVCb3gmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6
IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9jdWUo
ZWxlbWVudC5nZXRDdWUoKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUu
aAppbmRleCAzMDZiMjU4Li5hOTkxMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZUVEN1ZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFZUVEN1ZUJveDsKIAogY2xhc3MgUmVu
ZGVyVlRUQ3VlIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyVlRUQ3VlKFZUVEN1ZUJveCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5k
ZXJWVFRDdWUoVlRUQ3VlQm94JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZGVvLmNwcAppbmRleCBmN2VjZmNhLi41NzA0NTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJWaWRlbzo6UmVu
ZGVyVmlkZW8oSFRNTFZpZGVvRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJWaWRlbzo6UmVuZGVyVmlkZW8oSFRNTFZpZGVvRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyTWVkaWEoZWxlbWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKIHsKICAgICBzZXRJbnRyaW5zaWNTaXplKGNhbGN1bGF0ZUludHJp
bnNpY1NpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VmlkZW8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCmluZGV4IDc0
ODI0YjcuLjBiZjkxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWRlby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclZp
ZGVvIGZpbmFsIDogcHVibGljIFJlbmRlck1lZGlhIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJWaWRl
byhIVE1MVmlkZW9FbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclZp
ZGVvKEhUTUxWaWRlb0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwg
flJlbmRlclZpZGVvKCk7CiAKICAgICBIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAzZGU4OTYx
Li4yYWFiMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC05
Myw3ICs5Myw3IEBAIHN0cnVjdCBTZWxlY3Rpb25JdGVyYXRvciB7CiAgICAgfQogfTsKIAotUmVu
ZGVyVmlldzo6UmVuZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyVmlldzo6UmVuZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fZnJhbWVWaWV3KCpkb2N1bWVudC52aWV3KCkpCiAg
ICAgLCBtX3NlbGVjdGlvblVuc3BsaXRTdGFydCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKaW5kZXggZTc1YzllNC4uOWIxNTAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJlbmRlclF1b3RlOwogCiBjbGFz
cyBSZW5kZXJWaWV3IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdywgcHVibGljIFNlbGVj
dGlvblN1YnRyZWVSb290IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJWaWV3KERvY3VtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclZpZXcoRG9jdW1lbnQmLCBSZWY8UmVuZGVy
U3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclZpZXcoKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggZjU0OTllOS4u
MDFkYWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAg
LTgwLDcgKzgwLDcgQEAgc3RhdGljIHZvaWQgbW92ZVdpZGdldFRvUGFyZW50U29vbihXaWRnZXQq
IGNoaWxkLCBGcmFtZVZpZXcqIHBhcmVudCkKICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3Vz
cGVuc2lvblNjb3BlOjpzY2hlZHVsZVdpZGdldFRvTW92ZShjaGlsZCwgcGFyZW50KTsKIH0KIAot
UmVuZGVyV2lkZ2V0OjpSZW5kZXJXaWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50
LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlcldpZGdldDo6UmVuZGVyV2lkZ2V0
KEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAs
IG1fd2Vha1B0ckZhY3RvcnkodGhpcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJXaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuaAppbmRleCBhNTU1NzhhLi5lODQ4ZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBXZWFrUHRyPFJl
bmRlcldpZGdldD4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3Jl
YXRlV2Vha1B0cigpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJXaWRnZXQoSFRNTEZyYW1l
T3duZXJFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlcldpZGdldChI
VE1MRnJhbWVPd25lckVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAgdmlydHVh
bCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suY3BwCmluZGV4IDNlOWE1NDIuLmM2YzBhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC00
MywxMiArNDMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogdXNpbmcgbmFtZXNwYWNl
IE1hdGhNTE5hbWVzOwogICAgIAotUmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2Nr
KEVsZW1lbnQmIGNvbnRhaW5lciwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJN
YXRoTUxCbG9jazo6UmVuZGVyTWF0aE1MQmxvY2soRWxlbWVudCYgY29udGFpbmVyLCBSZWY8UmVu
ZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGbGV4aWJsZUJveChjb250YWluZXIsIFdU
Rjo6bW92ZShzdHlsZSkpCiB7CiB9CiAKLVJlbmRlck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxC
bG9jayhEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxleGlibGVCb3goZG9jdW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggZjhmMTJhOC4uYjQ5NDAxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suaApAQCAtNDEsOCArNDEsOCBAQCBjbGFzcyBSZW5kZXJNYXRoTUxPcGVyYXRvcjsKIAogY2xh
c3MgUmVuZGVyTWF0aE1MQmxvY2sgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGlj
OgotICAgIFJlbmRlck1hdGhNTEJsb2NrKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
Ci0gICAgUmVuZGVyTWF0aE1MQmxvY2soRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyTWF0aE1MQmxvY2soRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7Cisg
ICAgUmVuZGVyTWF0aE1MQmxvY2soRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAg
ICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCkBAIC03MSw3ICs3MSw3IEBAIHBy
aXZhdGU6CiAKIGNsYXNzIFJlbmRlck1hdGhNTFRhYmxlIGZpbmFsIDogcHVibGljIFJlbmRlclRh
YmxlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZW5kZXJNYXRoTUxUYWJsZShFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKKyAgICBleHBsaWNpdCBSZW5kZXJN
YXRoTUxUYWJsZShFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAg
ICAgICAgIDogUmVuZGVyVGFibGUoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICB7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGZW5jZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGZW5jZWQuY3BwCmluZGV4IGE4NDkzNWEuLjM2M2UzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogc3RhdGljIGNvbnN0
IGNoYXIqIGdPcGVuaW5nQnJhY2VDaGFyID0gIigiOwogc3RhdGljIGNvbnN0IGNoYXIqIGdDbG9z
aW5nQnJhY2VDaGFyID0gIikiOwogCi1SZW5kZXJNYXRoTUxGZW5jZWQ6OlJlbmRlck1hdGhNTEZl
bmNlZChNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKE1h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBz
dHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQog
ICAgICwgbV9jbG9zZUZlbmNlUmVuZGVyZXIobnVsbHB0cikKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCmluZGV4IDM3MDNh
OWMuLjE0OWQwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRmVuY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGZW5jZWQuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxGZW5jZWQgZmluYWwgOiBwdWJsaWMgUmVuZGVy
TWF0aE1MUm93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxGZW5jZWQoTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRo
TUxGZW5jZWQoTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4m
Jik7CiAgICAgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmPihub2RlRm9yTm9uQW5v
bnltb3VzKCkpOyB9CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCA1Y2QzYTYw
Li41OWZmYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgY29u
c3QgZmxvYXQgZ0xpbmVNZWRpdW0gPSAxLmY7CiBzdGF0aWMgY29uc3QgZmxvYXQgZ0xpbmVUaGlj
ayA9IDMuZjsKIHN0YXRpYyBjb25zdCBmbG9hdCBnRnJhY3Rpb25CYXJXaWR0aCA9IDAuMDVmOwog
Ci1SZW5kZXJNYXRoTUxGcmFjdGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24oTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJNYXRoTUxGcmFjdGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24oTWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDog
UmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fbGlu
ZVRoaWNrbmVzcyhnTGluZU1lZGl1bSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCA4ZjJjNzE3Li4zNmY1
NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVuZGVyTWF0aE1MRnJhY3Rpb24gZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1M
QmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1M
RnJhY3Rpb24oTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4m
Jik7CiAKICAgICBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCY+KG5vZGVGb3JOb25B
bm9ueW1vdXMoKSk7IH0KICAgICBmbG9hdCBsaW5lVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lVGhpY2tuZXNzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE1hdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcAppbmRleCA0N2UwMGMyLi4yZDhlMTVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgTWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTE1hdGg6OlJlbmRlck1hdGhNTE1hdGgoRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxN
YXRoOjpSZW5kZXJNYXRoTUxNYXRoKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUp
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxNYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE1hdGguaAppbmRleCBjNTFiYjBiLi5jMzRmMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguaApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxNYXRoIGZpbmFs
IDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MTWF0
aChFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTE1hdGgo
RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyTWF0aE1MTWF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWVuY2xvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNZW5jbG9zZS5jcHAKaW5kZXggNmZhZDIyZS4uMTc0NjhjMSAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
TWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTE1lbmNsb3NlOjpSZW5kZXJNYXRoTUxNZW5jbG9z
ZShFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1h
dGhNTE1lbmNsb3NlOjpSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RG
Ojptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuaAppbmRleCA3Njk4NDg5Li5kNDIzMWU1IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1l
bmNsb3NlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxNZW5jbG9zZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
IGNsYXNzIFJlbmRlck1hdGhNTE1lbmNsb3NlIGZpbmFsOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTE1lbmNsb3NlKEVsZW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+JiYpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxNZW5jbG9zZSI7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
T3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAKaW5kZXggODVlMWVmZS4uODM5NzRjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAK
QEAgLTExMzUsNyArMTEzNSw3IEBAIHN0YXRpYyBjb25zdCBVQ2hhciBob3Jpem9udGFsT3BlcmF0
b3JzW10gPSB7CiAKIH0KIAotUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJh
dG9yKE1hdGhNTEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKE1hdGhNTEVsZW1lbnQm
IGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFRv
a2VuKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3N0cmV0Y2hIZWlnaHRBYm92
ZUJhc2VsaW5lKDApCiAgICAgLCBtX3N0cmV0Y2hEZXB0aEJlbG93QmFzZWxpbmUoMCkKQEAgLTEx
NDUsNyArMTE0NSw3IEBAIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cihNYXRoTUxFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlCiAgICAgdXBkYXRlVG9rZW5D
b250ZW50KCk7CiB9CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRv
cihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBT
dHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0gZm9y
bSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpCitSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0
aE1MT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUs
IGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6
Rm9ybSBmb3JtLCB1bnNpZ25lZCBzaG9ydCBmbGFncykKICAgICA6IFJlbmRlck1hdGhNTFRva2Vu
KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9zdHJldGNoSGVpZ2h0QWJvdmVC
YXNlbGluZSgwKQogICAgICwgbV9zdHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5lKDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmgKaW5kZXggZTg3MWNlMC4uMzllOWQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAtNjAsOCArNjAsOCBA
QCBzdHJ1Y3QgRW50cnkgewogCiBjbGFzcyBSZW5kZXJNYXRoTUxPcGVyYXRvciA6IHB1YmxpYyBS
ZW5kZXJNYXRoTUxUb2tlbiB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoTWF0
aE1MRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxPcGVy
YXRvcihEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCBjb25zdCBTdHJpbmcmIG9wZXJh
dG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0sIHVuc2lnbmVkIHNob3J0
IGZsYWdzID0gMCk7CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoTWF0aE1MRWxlbWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4mJik7CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoRG9jdW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsIE1hdGhNTE9w
ZXJhdG9yRGljdGlvbmFyeTo6Rm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MgPSAwKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzdHJldGNoVG8oTGF5b3V0VW5pdCBoZWlnaHRBYm92ZUJhc2VsaW5lLCBM
YXlvdXRVbml0IGRlcHRoQmVsb3dCYXNlbGluZSk7CiAgICAgdm9pZCBzdHJldGNoVG8oTGF5b3V0
VW5pdCB3aWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKaW5kZXggYjY4YzI5Mi4u
Yzk0OTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcApAQCAtNTYsNyArNTYsNyBA
QCBjb25zdCBmbG9hdCBnUmFkaWNhbExpbmVUaGlja25lc3NFbXMgPSAwLjAyZjsKIC8vIFJhZGlj
YWwgdGhpY2sgbGluZSB0aGlja25lc3MgKGVtKQogY29uc3QgZmxvYXQgZ1JhZGljYWxUaGlja0xp
bmVUaGlja25lc3NFbXMgPSAwLjFmOwogCi1SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OlJl
bmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpSZW5kZXJNYXRo
TUxSYWRpY2FsT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxPcGVyYXRvcihkb2N1bWVudCwgV1RGOjptb3ZlKHN0
eWxlKSwgU3RyaW5nKCZnUmFkaWNhbENoYXJhY3RlciwgMSksIE1hdGhNTE9wZXJhdG9yRGljdGlv
bmFyeTo6UHJlZml4KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgKaW5kZXggNWEyYTc5
Zi4uZjJiMWRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9y
IGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTE9wZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKERvY3VtZW50JiwgUmVmPFJlbmRlclN0
eWxlPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvKExheW91dFVuaXQgaGVpZ2h0QWJv
dmVCYXNlbGluZSwgTGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVz
JikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAppbmRleCBhZjJkOTBhLi5lNmJhNTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5j
cHAKQEAgLTU1LDEyICs1NSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBJbiBvcmRlciB0
byBhY2NlcHQgaW52YWxpZCBtYXJrdXAgYW5kIHRvIGhhbmRsZSA8bXJvb3Q+IGFuZCA8bXNxcnQ+
IGNvbnNpc3RlbnRseSwgd2Ugd2lsbCBhbGxvdyBhbnkgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRo
ZSBCYXNlV3JhcHBlciBvZiA8bXJvb3Q+IHRvby4KIC8vIFdlIHdpbGwgYWxsb3cgdGhlIEluZGV4
V3JhcHBlciB0byBiZSBlbXB0eSBhbmQgaXQgd2lsbCBhbHdheXMgY29udGFpbiB0aGUgbGFzdCBj
aGlsZCBvZiB0aGUgPG1yb290PiBpZiB0aGVyZSBhcmUgYXQgbGVhc3QgMiBlbGVtZW50cy4KIAot
UmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdChFbGVtZW50JiBlbGVtZW50LCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhNTFJv
b3QoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVu
ZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KIAotUmVuZGVy
TWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdChE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRl
ck1hdGhNTEJsb2NrKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAppbmRleCBl
Y2E1NzUxLi5hYTRjODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvb3QuaApAQCAtNDIsOCArNDIsOCBAQCBjbGFzcyBSZW5kZXJNYXRo
TUxSb290IDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIGZyaWVuZCBjbGFzcyBSZW5kZXJN
YXRoTUxSb290V3JhcHBlcjsKIAogcHVibGljOgotICAgIFJlbmRlck1hdGhNTFJvb3QoRWxlbWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxSb290KERvY3VtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFJvb3QoRWxlbWVudCYs
IFJlZjxSZW5kZXJTdHlsZT4mJik7CisgICAgUmVuZGVyTWF0aE1MUm9vdChEb2N1bWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4mJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFJl
bmRlck1hdGhNTFJvb3RXcmFwcGVyIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CiBm
cmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdDsKIAogcHVibGljOgotICAgIFJlbmRlck1hdGhN
TFJvb3RXcmFwcGVyKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCisgICAgUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgICAgIDogUmVuZGVyTWF0aE1MUm93KGRvY3VtZW50
LCBXVEY6Om1vdmUoc3R5bGUpKSB7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAppbmRleCBjZjA0OWFkLi42
NjkzZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTFJvdzo6UmVuZGVy
TWF0aE1MUm93KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coRWxlbWVudCYgZWxlbWVudCwgUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RG
Ojptb3ZlKHN0eWxlKSkKIHsKIH0KIAotUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3co
RG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1h
dGhNTFJvdzo6UmVuZGVyTWF0aE1MUm93KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZG9jdW1lbnQsIFdURjo6bW92
ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxSb3cuaAppbmRleCBiODdkOTY0Li4wNjQwOGI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKQEAgLTM2LDggKzM2
LDggQEAgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdDsKIAogY2xhc3MgUmVuZGVyTWF0aE1MUm93IDog
cHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb3co
RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNYXRoTUxSb3coRG9j
dW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MUm93KEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOworICAgIFJlbmRlck1hdGhNTFJvdyhEb2N1bWVudCYs
IFJlZjxSZW5kZXJTdHlsZT4mJik7CiAKICAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRlck1hdGhN
TFJvdz4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKFJlbmRlck1hdGhNTFJvb3Qm
KTsKICAgICB2b2lkIHVwZGF0ZU9wZXJhdG9yUHJvcGVydGllcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKaW5k
ZXggYjVhZGMyMy4uMDU2NjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0
YXRpYyBib29sIGlzUHJlc2NyaXB0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0KQog
ICAgIHJldHVybiByZW5kZXJPYmplY3Qubm9kZSgpICYmIHJlbmRlck9iamVjdC5ub2RlKCktPmhh
c1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1wcmVzY3JpcHRzVGFnKTsKIH0KIAotUmVuZGVyTWF0aE1M
U2NyaXB0czo6UmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFNjcmlwdHM6OlJlbmRlck1hdGhNTFNjcmlw
dHMoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVu
ZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fYmFzZVdy
YXBwZXIoMCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU2NyaXB0cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmgKaW5kZXggMTc5YzRiMi4uYTg2ZjE3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChS
ZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBSZW5kZXJNYXRoTUxTY3Jp
cHRzV3JhcHBlcihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
LCBXcmFwcGVyVHlwZSBraW5kKQorICAgIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBXcmFwcGVyVHlwZSBraW5k
KQogICAgICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUp
KQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgIHsKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3Mg
UmVuZGVyTWF0aE1MU2NyaXB0cyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBm
cmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXI7CiAKIHB1YmxpYzoKLSAgICBS
ZW5kZXJNYXRoTUxTY3JpcHRzKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAg
UmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChS
ZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKaW5kZXggMjg0NGEwMy4uZWJh
NjhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTcGFjZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxTcGFjZTo6
UmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MU3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKE1h
dGhNTFRleHRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV93
aWR0aCgwKQogICAgICwgbV9oZWlnaHQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAppbmRleCBjZGZjNTcxLi42NGU0OWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNw
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
cGFjZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNz
IFJlbmRlck1hdGhNTFNwYWNlIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxTcGFjZShNYXRoTUxUZXh0RWxlbWVudCYs
IFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgTWF0aE1MVGV4dEVsZW1lbnQmIGVsZW1lbnQoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxUZXh0RWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1v
dXMoKSk7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwCmluZGV4IDRiZTc2MjAuLjUw
N2FkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU3F1YXJlUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLVJlbmRlck1hdGhNTFNxdWFyZVJvb3Q6OlJlbmRlck1hdGhN
TFNxdWFyZVJvb3QoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpSZW5kZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQm
IGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJv
b3QoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KIAotUmVuZGVyTWF0aE1MU3F1YXJl
Um9vdDo6UmVuZGVyTWF0aE1MU3F1YXJlUm9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MU3F1YXJlUm9vdDo6UmVuZGVyTWF0aE1M
U3F1YXJlUm9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
ICAgICA6IFJlbmRlck1hdGhNTFJvb3QoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFNxdWFyZVJvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU3F1YXJlUm9vdC5oCmluZGV4IDYxNDAwNTguLjllOTU1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5o
CkBAIC0zOCw4ICszOCw4IEBAIGNsYXNzIFJlbmRlck1hdGhNTE1lbmNsb3NlOwogLy8gUmVuZGVy
IHNxcnQoYmFzZSksIHVzaW5nIHJhZGljYWwgbm90YXRpb24uCiBjbGFzcyBSZW5kZXJNYXRoTUxT
cXVhcmVSb290IGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJvb3QgewogcHVibGljOgotICAg
IFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsK
LSAgICBSZW5kZXJNYXRoTUxTcXVhcmVSb290KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHls
ZT4mJik7CisgICAgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdChEb2N1bWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJik7CiAgICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJNYXRoTUxTcXVhcmVSb290PiBj
cmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoUmVuZGVyTWF0aE1MTWVuY2xvc2UmKTsK
ICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IDk5YTVlYjEuLmQyNjc3ZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4u
Y3BwCkBAIC0zNiwxMyArMzYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgTWF0aE1MTmFtZXM7CiAKLVJlbmRlck1hdGhNTFRva2VuOjpSZW5kZXJNYXRoTUxUb2tl
bihFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1h
dGhNTFRva2VuOjpSZW5kZXJNYXRoTUxUb2tlbihFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEY6Om1v
dmUoc3R5bGUpKQogICAgICwgbV9jb250YWluc0VsZW1lbnQoZmFsc2UpCiB7CiB9CiAKLVJlbmRl
ck1hdGhNTFRva2VuOjpSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0aE1MVG9rZW46OlJlbmRlck1hdGhNTFRv
a2VuKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDog
UmVuZGVyTWF0aE1MQmxvY2soZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2Nv
bnRhaW5zRWxlbWVudChmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAppbmRleCAwYTRkNjRhLi40ZDU2YjA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tl
bi5oCkBAIC0zNiw4ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJl
bmRlck1hdGhNTFRva2VuIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJNYXRoTUxUb2tlbihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwotICAg
IFJlbmRlck1hdGhNTFRva2VuKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlck1hdGhNTFRva2VuKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOworICAgIFJl
bmRlck1hdGhNTFRva2VuKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogICAgIE1h
dGhNTFRleHRFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MVGV4
dEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcApp
bmRleCBkZTQ2OTMxLi43OWE3MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwog
ICAgIAotUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVu
dCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxVbmRl
ck92ZXI6OlJlbmRlck1hdGhNTFVuZGVyT3ZlcihFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEY6Om1v
dmUoc3R5bGUpKQogewogICAgIC8vIERldGVybWluZSB3aGF0IGtpbmQgb2YgdW5kZXIvb3ZlciBl
eHByZXNzaW9uIHdlIGhhdmUgYnkgZWxlbWVudCBuYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAppbmRleCA2ZjY1
M2Q1Li5kNDY5NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MVW5kZXJPdmVyIGZpbmFsIDogcHVi
bGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxVbmRlck92
ZXIoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxVbmRl
ck92ZXIoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgCiAgICAgdmlydHVhbCBS
ZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4
IDZjOTg1NjguLmIzMTJjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVzLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgQmFzaWNTaGFwZUNpcmNs
ZTo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQogICAgICkp
OwogfQogCi1QYXNzUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVDaXJjbGU6OmJsZW5kKGNvbnN0
IEJhc2ljU2hhcGUmIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CitSZWY8QmFzaWNTaGFw
ZT4gQmFzaWNTaGFwZUNpcmNsZTo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJs
ZSBwcm9ncmVzcykgY29uc3QKIHsKICAgICBBU1NFUlQodHlwZSgpID09IG90aGVyLnR5cGUoKSk7
CiAgICAgY29uc3QgYXV0byYgb3RoZXJDaXJjbGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlQ2lyY2xl
PihvdGhlcik7CkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBCYXNpY1NoYXBlRWxsaXBzZTo6cGF0
aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQogICAgICAgICByYWRp
dXNZICogMikpOwogfQogCi1QYXNzUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVFbGxpcHNlOjpi
bGVuZChjb25zdCBCYXNpY1NoYXBlJiBvdGhlciwgZG91YmxlIHByb2dyZXNzKSBjb25zdAorUmVm
PEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVFbGxpcHNlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBv
dGhlciwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogewogICAgIEFTU0VSVCh0eXBlKCkgPT0gb3Ro
ZXIudHlwZSgpKTsKICAgICBjb25zdCBhdXRvJiBvdGhlckVsbGlwc2UgPSBkb3duY2FzdDxCYXNp
Y1NoYXBlRWxsaXBzZT4ob3RoZXIpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgQmFzaWNTaGFw
ZVBvbHlnb246OnBhdGgoUGF0aCYgcGF0aCwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkK
ICAgICBwYXRoLmNsb3NlU3VicGF0aCgpOwogfQogCi1QYXNzUmVmPEJhc2ljU2hhcGU+IEJhc2lj
U2hhcGVQb2x5Z29uOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBvdGhlciwgZG91YmxlIHByb2dy
ZXNzKSBjb25zdAorUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVQb2x5Z29uOjpibGVuZChjb25z
dCBCYXNpY1NoYXBlJiBvdGhlciwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogewogICAgIEFTU0VS
VCh0eXBlKCkgPT0gb3RoZXIudHlwZSgpKTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgQmFz
aWNTaGFwZUluc2V0OjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gpCiAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyKTsKIH0KIAotUGFzc1JlZjxCYXNpY1NoYXBl
PiBCYXNpY1NoYXBlSW5zZXQ6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyLCBkb3VibGUg
cHJvZ3Jlc3MpIGNvbnN0CitSZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZUluc2V0OjpibGVuZChj
b25zdCBCYXNpY1NoYXBlJiBvdGhlciwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogewogICAgIEFT
U0VSVCh0eXBlKCkgPT0gb3RoZXIudHlwZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuaAppbmRleCA0OTQ4ZGYxLi44MDdhNzRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaApAQCAtNjAsNyArNjAsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCB7IHJldHVybiBS
VUxFX05PTlpFUk87IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29u
c3QgQmFzaWNTaGFwZSYsIGRvdWJsZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmPEJhc2lj
U2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwogfTsKQEAgLTE1OSw3ICsxNTksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRSYWRpdXMoQmFzaWNTaGFwZVJhZGl1cyByYWRpdXMpIHsgbV9y
YWRpdXMgPSBXVEY6Om1vdmUocmFkaXVzKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0
aCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZjxCYXNp
Y1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlJiwgZG91YmxlKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlJiwgZG91
YmxlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gQmFzaWNTaGFwZUNpcmNsZVR5cGU7IH0KIHByaXZhdGU6CkBAIC0xODYs
NyArMTg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmFkaXVzWShCYXNpY1NoYXBlUmFkaXVz
IHJhZGl1c1kpIHsgbV9yYWRpdXNZID0gV1RGOjptb3ZlKHJhZGl1c1kpOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBQYXNzUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3VibGUp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0
IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBUeXBl
IHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCYXNpY1NoYXBlRWxsaXBzZVR5cGU7IH0K
IHByaXZhdGU6CkBAIC0yMTAsNyArMjEwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kUG9p
bnQoTGVuZ3RoIHgsIExlbmd0aCB5KSB7IG1fdmFsdWVzLmFwcGVuZChXVEY6Om1vdmUoeCkpOyBt
X3ZhbHVlcy5hcHBlbmQoV1RGOjptb3ZlKHkpKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhdGgo
UGF0aCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZjxC
YXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlJiwgZG91YmxlKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFJlZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlJiwg
ZG91YmxlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgV2luZFJ1bGUgd2luZFJ1bGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3dpbmRSdWxlOyB9CiAKQEAgLTI0OSw3ICsyNDks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCb3R0b21MZWZ0UmFkaXVzKExlbmd0aFNpemUgcmFk
aXVzKSB7IG1fYm90dG9tTGVmdFJhZGl1cyA9IFdURjo6bW92ZShyYWRpdXMpOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3Vi
bGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNv
bnN0IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCYXNpY1NoYXBlSW5zZXRUeXBlOyB9
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Rh
dGFSZWYuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmgKaW5kZXgg
OTI0NDUzNy4uZmI4ZmQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0RhdGFSZWYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJl
Zi5oCkBAIC0yNCwxNCArMjQsMTMgQEAKICNpZm5kZWYgRGF0YVJlZl9oCiAjZGVmaW5lIERhdGFS
ZWZfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERhdGFS
ZWYgewogcHVibGljOgotICAgIERhdGFSZWYoUGFzc1JlZjxUPiBkYXRhKSA6IG1fZGF0YShXVEY6
Om1vdmUoZGF0YSkpIHsgfQorICAgIERhdGFSZWYoUmVmPFQ+JiYgZGF0YSkgOiBtX2RhdGEoV1RG
Ojptb3ZlKGRhdGEpKSB7IH0KICAgICBEYXRhUmVmKGNvbnN0IERhdGFSZWYmIG90aGVyKSA6IG1f
ZGF0YShjb25zdF9jYXN0PFQmPihvdGhlci5tX2RhdGEuZ2V0KCkpKSB7IH0KICAgICBEYXRhUmVm
JiBvcGVyYXRvcj0oY29uc3QgRGF0YVJlZiYgb3RoZXIpIHsgbV9kYXRhID0gY29uc3RfY2FzdDxU
Jj4ob3RoZXIubV9kYXRhLmdldCgpKTsgcmV0dXJuICp0aGlzOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCmluZGV4IDA0MTRjNzgu
LjU3ZWNkMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5l
UGllY2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQ
aWVjZUltYWdlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBpbmxpbmUgTmluZVBpZWNlSW1hZ2VEYXRh
OjpOaW5lUGllY2VJbWFnZURhdGEoY29uc3QgTmluZVBpZWNlSW1hZ2VEYXRhJiBvdGhlcikKIHsK
IH0KIAotUGFzc1JlZjxOaW5lUGllY2VJbWFnZURhdGE+IE5pbmVQaWVjZUltYWdlRGF0YTo6Y29w
eSgpIGNvbnN0CitSZWY8TmluZVBpZWNlSW1hZ2VEYXRhPiBOaW5lUGllY2VJbWFnZURhdGE6OmNv
cHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5pbmVQaWVjZUltYWdlRGF0
YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBp
ZWNlSW1hZ2UuaAppbmRleCBkNjg2OGZmLi41YmFiMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaApAQCAtMzcsOCArMzcsOCBAQCBlbnVt
IEVOaW5lUGllY2VJbWFnZVJ1bGUgewogCiBjbGFzcyBOaW5lUGllY2VJbWFnZURhdGEgOiBwdWJs
aWMgUmVmQ291bnRlZDxOaW5lUGllY2VJbWFnZURhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZjxOaW5lUGllY2VJbWFnZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTmluZVBpZWNlSW1hZ2VEYXRhKTsgfQotICAgIFBhc3NSZWY8TmluZVBpZWNlSW1hZ2VEYXRh
PiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxOaW5lUGllY2VJbWFnZURhdGE+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmluZVBpZWNlSW1hZ2VEYXRhKTsgfQorICAgIFJl
ZjxOaW5lUGllY2VJbWFnZURhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBOaW5lUGllY2VJbWFnZURhdGEmKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTmluZVBpZWNlSW1hZ2VEYXRhJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8p
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApp
bmRleCBmN2I4OWZjLi41NmVjZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTg2LDE3ICs4NiwxNyBAQCBpbmxpbmUgUmVuZGVyU3R5
bGUmIGRlZmF1bHRTdHlsZSgpCiAgICAgcmV0dXJuIHN0eWxlOwogfQogCi1QYXNzUmVmPFJlbmRl
clN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlKCkKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5
bGU6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVuZGVyU3R5bGUoZGVm
YXVsdFN0eWxlKCkpKTsKIH0KIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNy
ZWF0ZURlZmF1bHRTdHlsZSgpCitSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVE
ZWZhdWx0U3R5bGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRlclN0eWxlKHRy
dWUpKTsKIH0KIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBFRGlz
cGxheSBkaXNwbGF5KQorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnlt
b3VzU3R5bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIEVEaXNw
bGF5IGRpc3BsYXkpCiB7CiAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUo
KTsKICAgICBuZXdTdHlsZS5nZXQoKS5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7CkBAIC0xMDUs
MTIgKzEwNSwxMiBAQCBQYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJTdAogICAgIHJldHVybiBuZXdTdHls
ZTsKIH0KIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNsb25lKGNvbnN0IFJl
bmRlclN0eWxlKiBvdGhlcikKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNsb25lKGNv
bnN0IFJlbmRlclN0eWxlKiBvdGhlcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5k
ZXJTdHlsZSgqb3RoZXIpKTsKIH0KIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6
OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYg
cHNldWRvU3R5bGUpCitSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVhdGVTdHlsZUlu
aGVyaXRpbmdGcm9tUHNldWRvU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKQog
ewogICAgIEFTU0VSVChwc2V1ZG9TdHlsZS5zdHlsZVR5cGUoKSA9PSBCRUZPUkUgfHwgcHNldWRv
U3R5bGUuc3R5bGVUeXBlKCkgPT0gQUZURVIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDlhYTQyNTkuLjdjMGNlYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC00ODIsMTMgKzQ4Miwx
MyBAQCBwcml2YXRlOgogICAgIEFMV0FZU19JTkxJTkUgUmVuZGVyU3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmKTsKIAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVh
dGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlRGVmYXVsdFN0eWxl
KCk7Ci0gICAgc3RhdGljIFBhc3NSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBFRGlzcGxheSk7Ci0g
ICAgc3RhdGljIFBhc3NSZWY8UmVuZGVyU3R5bGU+IGNsb25lKGNvbnN0IFJlbmRlclN0eWxlKik7
CisgICAgc3RhdGljIFJlZjxSZW5kZXJTdHlsZT4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxS
ZW5kZXJTdHlsZT4gY3JlYXRlRGVmYXVsdFN0eWxlKCk7CisgICAgc3RhdGljIFJlZjxSZW5kZXJT
dHlsZT4gY3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUsIEVEaXNwbGF5KTsKKyAgICBzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjbG9u
ZShjb25zdCBSZW5kZXJTdHlsZSopOwogCiAgICAgLy8gQ3JlYXRlIGEgUmVuZGVyU3R5bGUgZm9y
IGdlbmVyYXRlZCBjb250ZW50IGJ5IGluaGVyaXRpbmcgZnJvbSBhIHBzZXVkbyBzdHlsZS4KLSAg
ICBzdGF0aWMgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBz
ZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwc2V1ZG9TdHlsZSk7CisgICAgc3RhdGljIFJl
ZjxSZW5kZXJTdHlsZT4gY3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBwc2V1ZG9TdHlsZSk7CiAKICAgICBlbnVtIElzQXRTaGFkb3dCb3VuZGFy
eSB7CiAgICAgICAgIEF0U2hhZG93Qm91bmRhcnksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcAppbmRleCA3ZDI5Y2E4Li5hODY0OTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBkZWZhdWx0
U1ZHU3R5bGUoKQogICAgIHJldHVybiAqc3R5bGUuZ2V0KCkuZ2V0KCk7CiB9CiAKLVBhc3NSZWY8
U1ZHUmVuZGVyU3R5bGU+IFNWR1JlbmRlclN0eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUoKQorUmVm
PFNWR1JlbmRlclN0eWxlPiBTVkdSZW5kZXJTdHlsZTo6Y3JlYXRlRGVmYXVsdFN0eWxlKCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdSZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0KSk7
CiB9CkBAIC05Miw3ICs5Miw3IEBAIGlubGluZSBTVkdSZW5kZXJTdHlsZTo6U1ZHUmVuZGVyU3R5
bGUoY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKQogewogfQogCi1QYXNzUmVmPFNWR1JlbmRl
clN0eWxlPiBTVkdSZW5kZXJTdHlsZTo6Y29weSgpIGNvbnN0CitSZWY8U1ZHUmVuZGVyU3R5bGU+
IFNWR1JlbmRlclN0eWxlOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTVkdSZW5kZXJTdHlsZSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAppbmRleCAwMTQzMmZlLi5iZGRhZmY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtNDEs
OSArNDEsOSBAQCBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKIGNsYXNzIFNWR1JlbmRlclN0eWxlIDog
cHVibGljIFJlZkNvdW50ZWQ8U1ZHUmVuZGVyU3R5bGU+IHsgICAgCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWY8U1ZHUmVuZGVyU3R5bGU+IGNyZWF0ZURlZmF1bHRTdHlsZSgpOwotICAgIHN0
YXRpYyBQYXNzUmVmPFNWR1JlbmRlclN0eWxlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR1JlbmRlclN0eWxlKTsgfQotICAgIFBhc3NSZWY8U1ZHUmVuZGVyU3R5bGU+IGNvcHko
KSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFNWR1JlbmRlclN0eWxlPiBjcmVhdGVEZWZhdWx0U3R5
bGUoKTsKKyAgICBzdGF0aWMgUmVmPFNWR1JlbmRlclN0eWxlPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR1JlbmRlclN0eWxlKTsgfQorICAgIFJlZjxTVkdSZW5kZXJTdHlsZT4g
Y29weSgpIGNvbnN0OwogICAgIH5TVkdSZW5kZXJTdHlsZSgpOwogCiAgICAgYm9vbCBpbmhlcml0
ZWROb3RFcXVhbChjb25zdCBTVkdSZW5kZXJTdHlsZSopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAppbmRleCA3
ZGE2MGQ5Li4zZDIwNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcApAQCAtNTcsNyArNTcsNyBAQCBpbmxpbmUgU3R5
bGVGaWxsRGF0YTo6U3R5bGVGaWxsRGF0YShjb25zdCBTdHlsZUZpbGxEYXRhJiBvdGhlcikKIHsK
IH0KIAotUGFzc1JlZjxTdHlsZUZpbGxEYXRhPiBTdHlsZUZpbGxEYXRhOjpjb3B5KCkgY29uc3QK
K1JlZjxTdHlsZUZpbGxEYXRhPiBTdHlsZUZpbGxEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZpbGxEYXRhKCp0aGlzKSk7CiB9CkBAIC0xMDQsNyAr
MTA0LDcgQEAgaW5saW5lIFN0eWxlU3Ryb2tlRGF0YTo6U3R5bGVTdHJva2VEYXRhKGNvbnN0IFN0
eWxlU3Ryb2tlRGF0YSYgb3RoZXIpCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVTdHJva2VEYXRhPiBT
dHlsZVN0cm9rZURhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlU3Ryb2tlRGF0YT4gU3R5bGVT
dHJva2VEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVN0cm9rZURhdGEoKnRoaXMpKTsKIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBpbmxpbmUgU3R5bGVT
dG9wRGF0YTo6U3R5bGVTdG9wRGF0YShjb25zdCBTdHlsZVN0b3BEYXRhJiBvdGhlcikKIHsKIH0K
IAotUGFzc1JlZjxTdHlsZVN0b3BEYXRhPiBTdHlsZVN0b3BEYXRhOjpjb3B5KCkgY29uc3QKK1Jl
ZjxTdHlsZVN0b3BEYXRhPiBTdHlsZVN0b3BEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVN0b3BEYXRhKCp0aGlzKSk7CiB9CkBAIC0xNTksNyArMTU5
LDcgQEAgaW5saW5lIFN0eWxlVGV4dERhdGE6OlN0eWxlVGV4dERhdGEoY29uc3QgU3R5bGVUZXh0
RGF0YSYgb3RoZXIpCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVUZXh0RGF0YT4gU3R5bGVUZXh0RGF0
YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVUZXh0RGF0YT4gU3R5bGVUZXh0RGF0YTo6Y29weSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVUZXh0RGF0YSgqdGhpcykp
OwogfQpAQCAtMTg2LDcgKzE4Niw3IEBAIGlubGluZSBTdHlsZU1pc2NEYXRhOjpTdHlsZU1pc2NE
YXRhKGNvbnN0IFN0eWxlTWlzY0RhdGEmIG90aGVyKQogewogfQogCi1QYXNzUmVmPFN0eWxlTWlz
Y0RhdGE+IFN0eWxlTWlzY0RhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlTWlzY0RhdGE+IFN0
eWxlTWlzY0RhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlTWlzY0RhdGEoKnRoaXMpKTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbmxpbmUgU3R5bGVT
aGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRh
JiBvdGhlcikKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IFN0eWxlU2hhZG93
U1ZHRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVTaGFkb3dTVkdEYXRhPiBTdHlsZVNoYWRv
d1NWR0RhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
U2hhZG93U1ZHRGF0YSgqdGhpcykpOwogfQpAQCAtMjM4LDcgKzIzOCw3IEBAIGlubGluZSBTdHls
ZVJlc291cmNlRGF0YTo6U3R5bGVSZXNvdXJjZURhdGEoY29uc3QgU3R5bGVSZXNvdXJjZURhdGEm
IG90aGVyKQogewogfQogCi1QYXNzUmVmPFN0eWxlUmVzb3VyY2VEYXRhPiBTdHlsZVJlc291cmNl
RGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVSZXNvdXJjZURhdGE+IFN0eWxlUmVzb3VyY2VE
YXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJlc291
cmNlRGF0YSgqdGhpcykpOwogfQpAQCAtMjY1LDcgKzI2NSw3IEBAIGlubGluZSBTdHlsZUluaGVy
aXRlZFJlc291cmNlRGF0YTo6U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGEoY29uc3QgU3R5bGVJ
bmhlcml0CiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IFN0eWxl
SW5oZXJpdGVkUmVzb3VyY2VEYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZUluaGVyaXRlZFJl
c291cmNlRGF0YT4gU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE6OmNvcHkoKSBjb25zdAogewog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhKCp0aGlz
KSk7CiB9CkBAIC0zMDAsNyArMzAwLDcgQEAgaW5saW5lIFN0eWxlTGF5b3V0RGF0YTo6U3R5bGVM
YXlvdXREYXRhKGNvbnN0IFN0eWxlTGF5b3V0RGF0YSYgb3RoZXIpCiB7CiB9CiAKLVBhc3NSZWY8
U3R5bGVMYXlvdXREYXRhPiBTdHlsZUxheW91dERhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxl
TGF5b3V0RGF0YT4gU3R5bGVMYXlvdXREYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdHlsZUxheW91dERhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaAppbmRleCAxZTUx
ZWUxLi43NmMxYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U1ZHUmVuZGVyU3R5bGVEZWZzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlRGVmcy5oCkBAIC0xMTcsOCArMTE3LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIC8vIEluaGVyaXRlZC9Ob24tSW5oZXJpdGVkIFN0eWxlIERhdGFzdHJ1Y3R1cmVz
CiAgICAgY2xhc3MgU3R5bGVGaWxsRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlRmlsbERh
dGE+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlRmlsbERhdGE+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVGaWxsRGF0YSk7IH0KLSAgICAg
ICAgUGFzc1JlZjxTdHlsZUZpbGxEYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgICAgIHN0YXRpYyBS
ZWY8U3R5bGVGaWxsRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZp
bGxEYXRhKTsgfQorICAgICAgICBSZWY8U3R5bGVGaWxsRGF0YT4gY29weSgpIGNvbnN0OwogCiAg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUZpbGxEYXRhJikgY29uc3Q7CiAgICAg
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUZpbGxEYXRhJiBvdGhlcikgY29uc3QKQEAg
LTE0MSw4ICsxNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTdHlsZVN0
cm9rZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVN0cm9rZURhdGE+IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlU3Ryb2tlRGF0YT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVN0cm9rZURhdGEpOyB9Ci0gICAgICAgIFBhc3NSZWY8
U3R5bGVTdHJva2VEYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgICAgIHN0YXRpYyBSZWY8U3R5bGVT
dHJva2VEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU3Ryb2tlRGF0
YSk7IH0KKyAgICAgICAgUmVmPFN0eWxlU3Ryb2tlRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVN0cm9rZURhdGEmKSBjb25zdDsKICAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU3Ryb2tlRGF0YSYgb3RoZXIpIGNvbnN0CkBA
IC0xNzEsOCArMTcxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU3R5bGVT
dG9wRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU3RvcERhdGE+IHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlU3RvcERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVTdG9wRGF0YSk7IH0KLSAgICAgICAgUGFzc1JlZjxTdHlsZVN0
b3BEYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgICAgIHN0YXRpYyBSZWY8U3R5bGVTdG9wRGF0YT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVN0b3BEYXRhKTsgfQorICAgICAg
ICBSZWY8U3R5bGVTdG9wRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTdHlsZVN0b3BEYXRhJikgY29uc3Q7CiAgICAgICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHlsZVN0b3BEYXRhJiBvdGhlcikgY29uc3QKQEAgLTE5MCw4ICsxOTAsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTdHlsZVRleHREYXRhIDogcHVibGljIFJl
ZkNvdW50ZWQ8U3R5bGVUZXh0RGF0YT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBh
c3NSZWY8U3R5bGVUZXh0RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVRleHREYXRhKTsgfQotICAgICAgICBQYXNzUmVmPFN0eWxlVGV4dERhdGE+IGNvcHkoKSBjb25z
dDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHlsZVRleHREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlVGV4dERhdGEpOyB9CisgICAgICAgIFJlZjxTdHlsZVRleHREYXRh
PiBjb3B5KCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3R5bGVUZXh0RGF0YSYgb3RoZXIpIGNvbnN0OwogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU3R5bGVUZXh0RGF0YSYgb3RoZXIpIGNvbnN0CkBAIC0yMDksOCArMjA5LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIC8vIE5vdGU6IHRoZSBydWxlIGZvciB0aGlzIGNsYXNzIGlzLCAq
bm8gaW5oZXJpdGFuY2UqIG9mIHRoZXNlIHByb3BzCiAgICAgY2xhc3MgU3R5bGVNaXNjRGF0YSA6
IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlTWlzY0RhdGE+IHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmPFN0eWxlTWlzY0RhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVNaXNjRGF0YSk7IH0KLSAgICAgICAgUGFzc1JlZjxTdHlsZU1pc2NEYXRhPiBj
b3B5KCkgY29uc3Q7CisgICAgICAgIHN0YXRpYyBSZWY8U3R5bGVNaXNjRGF0YT4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZU1pc2NEYXRhKTsgfQorICAgICAgICBSZWY8U3R5
bGVNaXNjRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTdHlsZU1pc2NEYXRhJikgY29uc3Q7CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZU1pc2NEYXRhJiBvdGhlcikgY29uc3QKQEAgLTIzMiw4ICsyMzIsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBTdHlsZVNoYWRvd1NWR0RhdGEgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdHlsZVNoYWRvd1NWR0RhdGE+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmPFN0eWxlU2hhZG93U1ZHRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVNoYWRvd1NWR0RhdGEpOyB9Ci0gICAgICAgIFBhc3NSZWY8U3R5bGVTaGFkb3dTVkdE
YXRhPiBjb3B5KCkgY29uc3Q7CisgICAgICAgIHN0YXRpYyBSZWY8U3R5bGVTaGFkb3dTVkdEYXRh
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2hhZG93U1ZHRGF0YSk7IH0K
KyAgICAgICAgUmVmPFN0eWxlU2hhZG93U1ZHRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVNoYWRvd1NWR0RhdGEmKSBjb25zdDsKICAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0YSYgb3RoZXIpIGNvbnN0
CkBAIC0yNTEsOCArMjUxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIE5vbi1pbmhl
cml0ZWQgcmVzb3VyY2VzCiAgICAgY2xhc3MgU3R5bGVSZXNvdXJjZURhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxTdHlsZVJlc291cmNlRGF0YT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWY8U3R5bGVSZXNvdXJjZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVSZXNvdXJjZURhdGEpOyB9Ci0gICAgICAgIFBhc3NSZWY8U3R5bGVSZXNvdXJjZURh
dGE+IGNvcHkoKSBjb25zdDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHlsZVJlc291cmNlRGF0YT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJlc291cmNlRGF0YSk7IH0KKyAg
ICAgICAgUmVmPFN0eWxlUmVzb3VyY2VEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmVzb3VyY2VEYXRhJikgY29uc3Q7CiAgICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVJlc291cmNlRGF0YSYgb3RoZXIpIGNvbnN0CkBAIC0y
NzIsOCArMjcyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIEluaGVyaXRlZCByZXNv
dXJjZXMKICAgICBjbGFzcyBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhPiB7CiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUGFzc1JlZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSk7IH0KLSAgICAg
ICAgUGFzc1JlZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gY29weSgpIGNvbnN0OworICAg
ICAgICBzdGF0aWMgUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhKTsgfQorICAgICAg
ICBSZWY8U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGEmKSBjb25z
dDsKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VE
YXRhJiBvdGhlcikgY29uc3QKQEAgLTI5Myw4ICsyOTMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgLy8gUG9zaXRpb25pbmcgYW5kIHNpemluZyBwcm9wZXJ0aWVzLgogICAgIGNsYXNzIFN0
eWxlTGF5b3V0RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlTGF5b3V0RGF0YT4gewogICAg
IHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWY8U3R5bGVMYXlvdXREYXRhPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTGF5b3V0RGF0YSk7IH0KLSAgICAgICAgUGFz
c1JlZjxTdHlsZUxheW91dERhdGE+IGNvcHkoKSBjb25zdDsKKyAgICAgICAgc3RhdGljIFJlZjxT
dHlsZUxheW91dERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVMYXlv
dXREYXRhKTsgfQorICAgICAgICBSZWY8U3R5bGVMYXlvdXREYXRhPiBjb3B5KCkgY29uc3Q7CiAK
ICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlTGF5b3V0RGF0YSYpIGNvbnN0Owog
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVMYXlvdXREYXRhJiBvdGhlcikgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tn
cm91bmREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tn
cm91bmREYXRhLmNwcAppbmRleCBjNTFiODI1Li4xYmEzNmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIGlubGluZSBTdHlsZUJhY2tncm91bmREYXRhOjpTdHlsZUJhY2tncm91bmRE
YXRhKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG8pCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVC
YWNrZ3JvdW5kRGF0YT4gU3R5bGVCYWNrZ3JvdW5kRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5
bGVCYWNrZ3JvdW5kRGF0YT4gU3R5bGVCYWNrZ3JvdW5kRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVCYWNrZ3JvdW5kRGF0YSgqdGhpcykpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3Vu
ZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmRE
YXRhLmgKaW5kZXggYjI5OTZkYy4uMmUxYjY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCkBAIC0zNSw4ICszNSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVCYWNrZ3JvdW5kRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN0eWxlQmFja2dyb3VuZERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZjxTdHlsZUJhY2tncm91bmREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFN0eWxlQmFja2dyb3VuZERhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZUJhY2tncm91bmRE
YXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZUJhY2tncm91bmREYXRhPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlQmFja2dyb3VuZERhdGEpOyB9Cisg
ICAgUmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IGNvcHkoKSBjb25zdDsKICAgICB+U3R5bGVCYWNr
Z3JvdW5kRGF0YSgpIHsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQmFja2dy
b3VuZERhdGEmIG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQm94RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVCb3hEYXRhLmNwcAppbmRleCBhMTE4N2ZmLi4zOTI3MDhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmNwcApAQCAtNjcsNyArNjcsNyBA
QCBpbmxpbmUgU3R5bGVCb3hEYXRhOjpTdHlsZUJveERhdGEoY29uc3QgU3R5bGVCb3hEYXRhJiBv
KQogewogfQogCi1QYXNzUmVmPFN0eWxlQm94RGF0YT4gU3R5bGVCb3hEYXRhOjpjb3B5KCkgY29u
c3QKK1JlZjxTdHlsZUJveERhdGE+IFN0eWxlQm94RGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVCb3hEYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmgKaW5kZXggMmM2ZDAzMy4uZWMy
NTVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEu
aApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxlQm94
RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlQm94RGF0YT4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmPFN0eWxlQm94RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZUJveERhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZUJveERhdGE+IGNvcHkoKSBjb25z
dDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlQm94RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZUJveERhdGEpOyB9CisgICAgUmVmPFN0eWxlQm94RGF0YT4gY29weSgpIGNv
bnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQm94RGF0YSYgbykgY29uc3Q7
CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQm94RGF0YSYgbykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4
aWJsZUJveERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YS5jcHAKaW5kZXggM2M4MzU5Mi4uMzJmNzgwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
RGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgaW5saW5lIFN0
eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhKGNvbnN0IFN0eWwKIHsKIH0KIAotUGFzc1JlZjxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJv
eERhdGE+IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTo6Y29weSgpIGNvbnN0CitSZWY8
U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhPiBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJv
eERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94
RGF0YS5oCmluZGV4IDY0YzljN2YuLjIwZmVlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhLmgKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHls
ZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZURlcHJl
Y2F0ZWRGbGV4aWJsZUJveERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHls
ZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVE
ZXByZWNhdGVkRmxleGlibGVCb3hEYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxT
dHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhKTsgfQorICAgIFJlZjxTdHlsZURl
cHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmKSBjb25zdDsKICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJiBvKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmls
dGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJE
YXRhLmNwcAppbmRleCA3MWNmZjYyLi5iMGQzYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmNwcApAQCAtNDIsNyArNDIsNyBAQCBp
bmxpbmUgU3R5bGVGaWx0ZXJEYXRhOjpTdHlsZUZpbHRlckRhdGEoY29uc3QgU3R5bGVGaWx0ZXJE
YXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxlRmlsdGVyRGF0YT4gU3R5bGVGaWx0ZXJEYXRh
Ojpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZUZpbHRlckRhdGE+IFN0eWxlRmlsdGVyRGF0YTo6Y29w
eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVGaWx0ZXJEYXRhKCp0
aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVGaWx0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0
ZXJEYXRhLmgKaW5kZXggZTk4NDQ2MS4uMjEwZDBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuaApAQCAtMzQsOCArMzQsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxlRmlsdGVyRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFN0eWxlRmlsdGVyRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxl
RmlsdGVyRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUZpbHRlckRh
dGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZUZpbHRlckRhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBz
dGF0aWMgUmVmPFN0eWxlRmlsdGVyRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZUZpbHRlckRhdGEpOyB9CisgICAgUmVmPFN0eWxlRmlsdGVyRGF0YT4gY29weSgpIGNv
bnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYpIGNvbnN0
OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUZpbHRlckRhdGEmIG8pIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJv
eERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVC
b3hEYXRhLmNwcAppbmRleCA3NzU4ODZiLi45OWU1NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAgaW5saW5lIFN0eWxlRmxleGlibGVCb3hEYXRhOjpTdHlsZUZsZXhpYmxlQm94
RGF0YShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHls
ZUZsZXhpYmxlQm94RGF0YT4gU3R5bGVGbGV4aWJsZUJveERhdGE6OmNvcHkoKSBjb25zdAorUmVm
PFN0eWxlRmxleGlibGVCb3hEYXRhPiBTdHlsZUZsZXhpYmxlQm94RGF0YTo6Y29weSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVGbGV4aWJsZUJveERhdGEoKnRoaXMp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZs
ZXhpYmxlQm94RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxl
eGlibGVCb3hEYXRhLmgKaW5kZXggMGUzMzUyYy4uZDMzMmRlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgKQEAgLTM1
LDggKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHlsZUZsZXhpYmxlQm94
RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlRmxleGlibGVCb3hEYXRhPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVGbGV4aWJsZUJveERhdGEpOyB9Ci0gICAgUGFzc1JlZjxT
dHlsZUZsZXhpYmxlQm94RGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8U3R5bGVG
bGV4aWJsZUJveERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVGbGV4
aWJsZUJveERhdGEpOyB9CisgICAgUmVmPFN0eWxlRmxleGlibGVCb3hEYXRhPiBjb3B5KCkgY29u
c3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVGbGV4aWJsZUJveERhdGEmKSBj
b25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVGbGV4aWJsZUJveERhdGEmIG8p
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVH
ZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVH
ZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggYWMwN2Q2Ni4uMjIzNzFlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcApA
QCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1TdHlsZUdlbmVy
YXRlZEltYWdlOjpTdHlsZUdlbmVyYXRlZEltYWdlKFBhc3NSZWY8Q1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZT4gdmFsdWUpCitTdHlsZUdlbmVyYXRlZEltYWdlOjpTdHlsZUdlbmVyYXRlZEltYWdlKFJl
ZjxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPiYmIHZhbHVlKQogICAgIDogbV9pbWFnZUdlbmVyYXRv
clZhbHVlKFdURjo6bW92ZSh2YWx1ZSkpCiAgICAgLCBtX2ZpeGVkU2l6ZShtX2ltYWdlR2VuZXJh
dG9yVmFsdWUtPmlzRml4ZWRTaXplKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAzNDFkZDRmLi45NzViYmY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0
ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVy
YXRlZEltYWdlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZTsKIAogY2xhc3MgU3R5bGVHZW5lcmF0ZWRJbWFnZSBmaW5hbCA6IHB1YmxpYyBTdHlsZUltYWdl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZUdlbmVyYXRlZEltYWdlPiBj
cmVhdGUoUGFzc1JlZjxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPiB2YWx1ZSkKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHlsZUdlbmVyYXRlZEltYWdlPiBjcmVhdGUoUmVmPENTU0ltYWdlR2VuZXJh
dG9yVmFsdWU+JiYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0
eWxlR2VuZXJhdGVkSW1hZ2UoV1RGOjptb3ZlKHZhbHVlKSkpOwogICAgIH0KQEAgLTU2LDcgKzU2
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRl
ckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIFN0eWxlR2VuZXJhdGVkSW1hZ2UoUGFzc1JlZjxDU1NJbWFnZUdlbmVyYXRvclZh
bHVlPik7CisgICAgZXhwbGljaXQgU3R5bGVHZW5lcmF0ZWRJbWFnZShSZWY8Q1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZT4mJik7CiAgICAgCiAgICAgUmVmPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+IG1f
aW1hZ2VHZW5lcmF0b3JWYWx1ZTsKICAgICBGbG9hdFNpemUgbV9jb250YWluZXJTaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwCmluZGV4
IDFiMTVkZTQuLmJkYjNkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUdyaWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVHcmlkRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgaW5saW5lIFN0eWxlR3JpZERh
dGE6OlN0eWxlR3JpZERhdGEoY29uc3QgU3R5bGVHcmlkRGF0YSYgbykKIHsKIH0KIAotUGFzc1Jl
ZjxTdHlsZUdyaWREYXRhPiBTdHlsZUdyaWREYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZUdy
aWREYXRhPiBTdHlsZUdyaWREYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZUdyaWREYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAppbmRleCBiZWI0ZWZmLi4zYjk5Y2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKQEAgLTQz
LDggKzQzLDggQEAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBWZWN0b3I8U3RyaW5nPiwgV1RG
OjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFcKIAogY2xhc3MgU3R5bGVHcmlkRGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlR3JpZERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZjxTdHlsZUdyaWREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlR3JpZERhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZUdyaWREYXRhPiBjb3B5KCkgY29u
c3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZUdyaWREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFN0eWxlR3JpZERhdGEpOyB9CisgICAgUmVmPFN0eWxlR3JpZERhdGE+IGNvcHko
KSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUdyaWREYXRhJiBvKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUdyaWRJdGVtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVHcmlkSXRlbURhdGEuY3BwCmluZGV4IDhmNWM4ZWIuLjEwMmJlOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBpbmxpbmUgU3R5bGVHcmlkSXRlbURhdGE6OlN0eWxlR3JpZEl0ZW1EYXRh
KGNvbnN0IFN0eWxlR3JpZEl0ZW1EYXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxlR3JpZEl0
ZW1EYXRhPiBTdHlsZUdyaWRJdGVtRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVHcmlkSXRl
bURhdGE+IFN0eWxlR3JpZEl0ZW1EYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZUdyaWRJdGVtRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuaAppbmRleCBiMTc1NDY5
Li5kNjY3ODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVHcmlkSXRlbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVHcmlkSXRlbURhdGEuaApAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFN0eWxlR3JpZEl0ZW1EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVHcmlkSXRl
bURhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZUdyaWRJdGVtRGF0YT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUdyaWRJdGVtRGF0YSk7IH0KLSAg
ICBQYXNzUmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJl
ZjxTdHlsZUdyaWRJdGVtRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZUdyaWRJdGVtRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVHcmlkSXRlbURhdGE+IGNvcHkoKSBjb25z
dDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUdyaWRJdGVtRGF0YSYgbykgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IDdmMmUxYzUuLjYzM2NjNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCkBA
IC01Niw3ICs1Niw3IEBAIGlubGluZSBTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVk
RGF0YShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG8pCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVJ
bmhlcml0ZWREYXRhPiBTdHlsZUluaGVyaXRlZERhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxl
SW5oZXJpdGVkRGF0YT4gU3R5bGVJbmhlcml0ZWREYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUluaGVyaXRlZERhdGEoKnRoaXMpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaApp
bmRleCBhNjViZWZmLi5kZWYxNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCkBAIC0zNiw4ICszNiw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50
ZWQ8U3R5bGVJbmhlcml0ZWREYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5
bGVJbmhlcml0ZWREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlSW5o
ZXJpdGVkRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gY29weSgpIGNv
bnN0OworICAgIHN0YXRpYyBSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFN0eWxlSW5oZXJpdGVkRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVJbmhl
cml0ZWREYXRhPiBjb3B5KCkgY29uc3Q7CiAgICAgflN0eWxlSW5oZXJpdGVkRGF0YSgpOwogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5j
cHAKaW5kZXggNWUyNWU0OS4uNTk3YjNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlTWFycXVlZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRhLmNwcApAQCAtNDUsNyArNDUsNyBAQCBpbmxp
bmUgU3R5bGVNYXJxdWVlRGF0YTo6U3R5bGVNYXJxdWVlRGF0YShjb25zdCBTdHlsZU1hcnF1ZWVE
YXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxlTWFycXVlZURhdGE+IFN0eWxlTWFycXVlZURh
dGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlTWFycXVlZURhdGE+IFN0eWxlTWFycXVlZURhdGE6
OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTWFycXVlZURh
dGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZU1hcnF1ZWVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVNYXJxdWVlRGF0YS5oCmluZGV4IDY5ZTlkY2MuLmRkMTFhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTWFycXVlZURhdGEuaApAQCAtMzQsOCArMzQs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxlTWFycXVlZURhdGEgOiBwdWJs
aWMgUmVmQ291bnRlZDxTdHlsZU1hcnF1ZWVEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWY8U3R5bGVNYXJxdWVlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHlsZU1hcnF1ZWVEYXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVNYXJxdWVlRGF0YT4gY29weSgp
IGNvbnN0OworICAgIHN0YXRpYyBSZWY8U3R5bGVNYXJxdWVlRGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZU1hcnF1ZWVEYXRhKTsgfQorICAgIFJlZjxTdHlsZU1hcnF1
ZWVEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVN
YXJxdWVlRGF0YSYgbykgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTWFy
cXVlZURhdGEmIG8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcAppbmRleCA2OGI2MTc4Li4zZjc3MjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgaW5saW5lIFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRp
Q29sRGF0YShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHls
ZU11bHRpQ29sRGF0YT4gU3R5bGVNdWx0aUNvbERhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxl
TXVsdGlDb2xEYXRhPiBTdHlsZU11bHRpQ29sRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVNdWx0aUNvbERhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgKaW5kZXgg
MGU0MmU2Zi4uZjM3NTYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgKQEAgLTM3LDggKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTdHlsZU11bHRpQ29sRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxl
TXVsdGlDb2xEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVNdWx0aUNv
bERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVNdWx0aUNvbERhdGEp
OyB9Ci0gICAgUGFzc1JlZjxTdHlsZU11bHRpQ29sRGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0
YXRpYyBSZWY8U3R5bGVNdWx0aUNvbERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVNdWx0aUNvbERhdGEpOyB9CisgICAgUmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBjb3B5
KCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlTXVsdGlDb2xE
YXRhJiBvKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVNdWx0aUNvbERh
dGEgJm8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggYWI3OWQ3Ni4uMTI2NzMwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRl
ZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIGlubGluZSBTdHlsZVJhcmVJbmhl
cml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRl
ZERhCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVSYXJlSW5oZXJpdGVkRGF0YT4gU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVSYXJlSW5oZXJpdGVkRGF0YT4gU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5k
ZXggMmY5ZWZmNi4uYTVkMjhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC00Nyw4ICs0Nyw4IEBAIGNs
YXNzIFN0eWxlSW1hZ2U7CiAvLyBhY3R1YWxseSB1c2VzIG9uZSBvZiB0aGVzZSBwcm9wZXJ0aWVz
LgogY2xhc3MgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxl
UmFyZUluaGVyaXRlZERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJh
cmVJbmhlcml0ZWREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUmFy
ZUluaGVyaXRlZERhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiBj
b3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUmFyZUluaGVyaXRlZERhdGEpOyB9Cisg
ICAgUmVmPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+IGNvcHkoKSBjb25zdDsKICAgICB+U3R5bGVS
YXJlSW5oZXJpdGVkRGF0YSgpOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFy
ZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IGM1
MjRhMGEuLjhlN2JlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTE5Miw3ICsxOTIs
NyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogewogfQogCi1QYXNzUmVmPFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE+IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OmNvcHkoKSBjb25zdAor
UmVmPFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE+IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6
OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IGRmMGJlYjYu
Ljk0Yjg4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtODAsOCArODAsOCBAQCBlbnVtIFBh
Z2VTaXplVHlwZSB7CiAvLyBhY3R1YWxseSB1c2VzIG9uZSBvZiB0aGVzZSBwcm9wZXJ0aWVzLgog
Y2xhc3MgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEpOyB9CisgICAgUmVmPFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE+IGNvcHko
KSBjb25zdDsKICAgICB+U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpOwogICAgIAogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFw
UG9pbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNu
YXBQb2ludHMuY3BwCmluZGV4IDljODZkZmYuLmFjMWY1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuY3BwCkBA
IC02NCw3ICs2NCw3IEBAIGlubGluZSBTdHlsZVNjcm9sbFNuYXBQb2ludHM6OlN0eWxlU2Nyb2xs
U25hcFBvaW50cyhjb25zdCBTdHlsZVNjcm9sbFNuYXBQb2ludHMmCiB7CiB9CiAKLVBhc3NSZWY8
U3R5bGVTY3JvbGxTbmFwUG9pbnRzPiBTdHlsZVNjcm9sbFNuYXBQb2ludHM6OmNvcHkoKSBjb25z
dAorUmVmPFN0eWxlU2Nyb2xsU25hcFBvaW50cz4gU3R5bGVTY3JvbGxTbmFwUG9pbnRzOjpjb3B5
KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNjcm9sbFNuYXBQb2lu
dHMoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaAppbmRleCBjZjdkOWViLi40ZWFjZTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBv
aW50cy5oCkBAIC01MCw4ICs1MCw4IEBAIExlbmd0aFNpemUgZGVmYXVsdFNjcm9sbFNuYXBEZXN0
aW5hdGlvbigpOwogCiBjbGFzcyBTdHlsZVNjcm9sbFNuYXBQb2ludHMgOiBwdWJsaWMgUmVmQ291
bnRlZDxTdHlsZVNjcm9sbFNuYXBQb2ludHM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZjxTdHlsZVNjcm9sbFNuYXBQb2ludHM+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3R5bGVTY3JvbGxTbmFwUG9pbnRzKTsgfQotICAgIFBhc3NSZWY8U3R5bGVTY3JvbGxTbmFwUG9p
bnRzPiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZVNjcm9sbFNuYXBQb2ludHM+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTY3JvbGxTbmFwUG9pbnRzKTsg
fQorICAgIFJlZjxTdHlsZVNjcm9sbFNuYXBQb2ludHM+IGNvcHkoKSBjb25zdDsKIAogICAgIFNj
cm9sbFNuYXBQb2ludHMgeFBvaW50czsKICAgICBTY3JvbGxTbmFwUG9pbnRzIHlQb2ludHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRh
LmNwcAppbmRleCA3NjZhNzBmLi41YzliYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
aW5saW5lIFN0eWxlU3Vycm91bmREYXRhOjpTdHlsZVN1cnJvdW5kRGF0YShjb25zdCBTdHlsZVN1
cnJvdW5kRGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVN1cnJvdW5kRGF0YT4gU3R5bGVT
dXJyb3VuZERhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlU3Vycm91bmREYXRhPiBTdHlsZVN1
cnJvdW5kRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVTdXJyb3VuZERhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmgKaW5kZXggMGRjZTMxOC4uMDBiZjVmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRh
LmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHlsZVN1
cnJvdW5kRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU3Vycm91bmREYXRhPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVTdXJyb3VuZERhdGE+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTdXJyb3VuZERhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHls
ZVN1cnJvdW5kRGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8U3R5bGVTdXJyb3Vu
ZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTdXJyb3VuZERhdGEp
OyB9CisgICAgUmVmPFN0eWxlU3Vycm91bmREYXRhPiBjb3B5KCkgY29uc3Q7CiAgICAgCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlU3Vycm91bmREYXRhJiBvKSBjb25zdDsKICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTdXJyb3VuZERhdGEmIG8pIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3Bw
CmluZGV4IGMzZjkxZWEuLmVhZjMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGlu
bGluZSBTdHlsZVRyYW5zZm9ybURhdGE6OlN0eWxlVHJhbnNmb3JtRGF0YShjb25zdCBTdHlsZVRy
YW5zZm9ybURhdGEmIG8pCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBTdHls
ZVRyYW5zZm9ybURhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gU3R5
bGVUcmFuc2Zvcm1EYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVRyYW5zZm9ybURhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaAppbmRleCBlODJlYTIwLi41YTQ1
MjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFu
c2Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJh
bnNmb3JtRGF0YS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU3R5bGVUcmFuc2Zvcm1EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVUcmFuc2Zvcm1E
YXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlVHJhbnNmb3JtRGF0YSk7IH0KLSAg
ICBQYXNzUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0YXRpYyBS
ZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlVHJhbnNmb3JtRGF0YSk7IH0KKyAgICBSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBjb3B5KCkg
Y29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBv
KSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBv
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
VmlzdWFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1
YWxEYXRhLmNwcAppbmRleCAyM2U2Y2QyLi5kOGZiODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBpbmxpbmUgU3R5bGVWaXN1YWxEYXRhOjpTdHlsZVZpc3VhbERhdGEoY29uc3QgU3R5bGVWaXN1
YWxEYXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxlVmlzdWFsRGF0YT4gU3R5bGVWaXN1YWxE
YXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZVZpc3VhbERhdGE+IFN0eWxlVmlzdWFsRGF0YTo6
Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVWaXN1YWxEYXRh
KCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVWaXN1YWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVW
aXN1YWxEYXRhLmgKaW5kZXggMmIyZDYzMC4uNWIyNDk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaApAQCAtMzQsOCArMzQsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxlVmlzdWFsRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPFN0eWxlVmlzdWFsRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0
eWxlVmlzdWFsRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVZpc3Vh
bERhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZVZpc3VhbERhdGE+IGNvcHkoKSBjb25zdDsKKyAg
ICBzdGF0aWMgUmVmPFN0eWxlVmlzdWFsRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZVZpc3VhbERhdGEpOyB9CisgICAgUmVmPFN0eWxlVmlzdWFsRGF0YT4gY29weSgp
IGNvbnN0OwogICAgIH5TdHlsZVZpc3VhbERhdGEoKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHlsZVZpc3VhbERhdGEmIG8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCmluZGV4IGRjZGY4ZTYuLjMyZjhlMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCkBAIC0y
OCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHQmxvY2s6OlJl
bmRlclNWR0Jsb2NrKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJTVkdCbG9jazo6UmVuZGVyU1ZHQmxvY2soU1ZHR3JhcGhpY3NF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJC
bG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaAppbmRleCBkZGM1YjkyLi43NjBmNzMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2Nr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCkBA
IC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNz
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4obm9k
ZUZvck5vbkFub255bW91cygpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHQmxvY2so
U1ZHR3JhcGhpY3NFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNW
R0Jsb2NrKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCmlu
ZGV4IDQ2MjYyMGEuLjgyMDdkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihT
VkdFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNW
R0NvbnRhaW5lcjo6UmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX29iamVjdEJvdW5kaW5nQm94VmFsaWQoZmFsc2Up
CiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggMTE2YTM3MS4uMTEz
YzM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdD
b250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Nv
bnRhaW5lci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT2JqZWN0Qm91
bmRpbmdCb3hWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3hWYWxpZDsg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0NvbnRhaW5lciI7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAKaW5k
ZXggZjE2NmUwMC4uY2I2ZDljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVuZGVyU1ZHRWxsaXBzZTo6UmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGlj
c0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZH
RWxsaXBzZTo6UmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1NoYXBlKGVsZW1lbnQsIFdU
Rjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3VzZVBhdGhGYWxsYmFjayhmYWxzZSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmgKaW5kZXggMzAy
N2YxMC4uYjU4N2QxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdFbGxpcHNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdFbGxpcHNlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSZW5kZXJTVkdFbGxpcHNlIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1NoYXBlIHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJTVkdFbGxpcHNlKFNWR0dyYXBoaWNzRWxlbWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdFbGxpcHNlKFNWR0dyYXBoaWNzRWxlbWVudCYs
IFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHRWxsaXBzZSgpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggNGI4YzYyMy4uOGU3MDgxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdDo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0
RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdG
b3JlaWduT2JqZWN0OjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdC
bG9jayhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVw
ZGF0ZSh0cnVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCA4NmE1MzRkLi41ZGVjYTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3Qu
aApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDsKIAogY2xh
c3MgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdCbG9jayB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxl
bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdGb3JlaWduT2JqZWN0
KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJTVkdGb3JlaWduT2JqZWN0KCk7CiAKICAgICBTVkdGb3JlaWduT2JqZWN0RWxl
bWVudCYgZm9yZWlnbk9iamVjdEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcAppbmRleCAyODNj
ZmJiLi4wMmU2ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0dyYWRpZW50U3RvcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKIAotUmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wOjpSZW5kZXJTVkdHcmFkaWVudFN0b3AoU1ZHU3RvcEVsZW1lbnQmIGVsZW1lbnQs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHR3JhZGllbnRTdG9wOjpSZW5k
ZXJTVkdHcmFkaWVudFN0b3AoU1ZHU3RvcEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckVsZW1lbnQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxl
KSwgMCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHR3JhZGllbnRTdG9wLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0dyYWRpZW50U3RvcC5oCmluZGV4IGE5YWIyM2QuLmRhOTUzZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaApAQCAt
MzIsNyArMzIsNyBAQCBjbGFzcyBTVkdHcmFkaWVudEVsZW1lbnQ7CiAvLyBUaGlzIGNsYXNzIGV4
aXN0cyBtb3N0bHkgc28gd2UgY2FuIGhlYXIgYWJvdXQgZ3JhZGllbnQgc3RvcCBzdHlsZSBjaGFu
Z2VzCiBjbGFzcyBSZW5kZXJTVkdHcmFkaWVudFN0b3AgZmluYWwgOiBwdWJsaWMgUmVuZGVyRWxl
bWVudCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHR3JhZGllbnRTdG9wKFNWR1N0b3BFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcChTVkdT
dG9wRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZH
R3JhZGllbnRTdG9wKCk7CiAKICAgICBTVkdTdG9wRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PFNWR1N0b3BFbGVtZW50PihSZW5kZXJPYmplY3Q6Om5vZGVGb3JOb25B
bm9ueW1vdXMoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcAppbmRleCA2ZjQ3NjIzLi43NzIxZGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNv
bnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXIo
U1ZHRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJT
VkdIaWRkZW5Db250YWluZXI6OlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdFbGVtZW50JiBl
bGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdDb250YWlu
ZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCmluZGV4IDk0
NzM1MTguLmY3MGFjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaApAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBT
VkdFbGVtZW50OwogLy8gPGRlZnM+LCA8bGluZWFyR3JhZGllbnQ+LCA8cmFkaWFsR3JhZGllbnQ+
IGFyZSBhbGwgZ29vZCBleGFtcGxlcwogY2xhc3MgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIDog
cHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyKFNWR0VsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVy
U1ZHSGlkZGVuQ29udGFpbmVyKFNWR0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCA1ZTM2ZWIy
Li40YmE0OGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmNwcApAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
bmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQmIGVsZW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdl
KFNWR0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAg
IDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAs
IG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKHRydWUpCiAgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBk
YXRlKHRydWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmgKaW5kZXggMDEzYTA0Zi4uYjM2YmQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTVkdJbWFnZUVs
ZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR0ltYWdlIGZpbmFsIDogcHVibGljIFJlbmRlclNWR01v
ZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdJbWFnZSgp
OwogCiAgICAgU1ZHSW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCBlNzA3
NTk4Li5hYWNmZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKLVJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVu
dCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdJbmxpbmU6
OlJlbmRlclNWR0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlcklubGluZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpKQogewogICAgIHNldEFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggZjdhNzczNi4uODMyMjIw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5o
CkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZH
SW5saW5lIDogcHVibGljIFJlbmRlcklubGluZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHSW5s
aW5lKFNWR0dyYXBoaWNzRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5k
ZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAog
ICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5jcHAKaW5kZXggOGUyYjUwMC4uMzUwMTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdNb2RlbE9iamVjdDo6UmVu
ZGVyU1ZHTW9kZWxPYmplY3QoU1ZHRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJTVkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZH
RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVy
RWxlbWVudChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9oYXNTVkdTaGFk
b3coZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmgKaW5kZXggYjQ0NTk1ZC4uMDUwZGIwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNjcs
NyArNjcsNyBAQCBwdWJsaWM6CiAgICAgU1ZHRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGRvd25jYXN0PFNWR0VsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogcHJv
dGVjdGVkOgotICAgIFJlbmRlclNWR01vZGVsT2JqZWN0KFNWR0VsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHRWxlbWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4mJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGgu
Y3BwCmluZGV4IDYyNDQ1NzAuLjQxNDk1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlbmRlclNWR1BhdGg6OlJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVt
ZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1BhdGg6
OlJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdTaGFwZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGgu
aAppbmRleCBlYTZlY2MyLi4wOGQ4OTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFJlbmRlclNWR1BhdGggZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHU2hhcGUgewog
cHVibGljOgotICAgIFJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1BhdGgoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVm
PFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdQYXRoKCk7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcApp
bmRleCBkYTg1ZmZhLi4wM2ZiYmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVjdC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZW5kZXJTVkdSZWN0OjpSZW5kZXJTVkdSZWN0KFNWR1JlY3RFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1JlY3Q6OlJlbmRlclNW
R1JlY3QoU1ZHUmVjdEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
ICAgICA6IFJlbmRlclNWR1NoYXBlKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBt
X3VzZVBhdGhGYWxsYmFjayhmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZWN0LmgKaW5kZXggNGRhMWIzYi4uOTcwMzAxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdSZWN0IGZpbmFsIDogcHVibGljIFJl
bmRlclNWR1NoYXBlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZWN0KFNWR1JlY3RFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1JlY3QoU1ZHUmVjdEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1JlY3QoKTsK
IAogICAgIFNWR1JlY3RFbGVtZW50JiByZWN0RWxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
Y3BwCmluZGV4IDFhZTA5MzQuLjAzZGQ1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXI6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcihTVkdDbGlwUGF0aEVsZW1lbnQmIGVsZW1lbnQs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBhdGhFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihl
bGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKaW5kZXggMzExNDFm
OS4uYzBmZDNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAog
Y2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jl
c291cmNlQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIo
U1ZHQ2xpcFBhdGhFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlcihTVkdDbGlwUGF0aEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYp
OwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcigpOwogCiAgICAgU1ZHQ2xp
cFBhdGhFbGVtZW50JiBjbGlwUGF0aEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxT
VkdDbGlwUGF0aEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRh
aW5lci5jcHAKaW5kZXggNzhkM2NlNi4uMmJmMjgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAgc3RhdGljIGlubGluZSBTVkdEb2N1bWVudEV4dGVuc2lvbnMmIHN2
Z0V4dGVuc2lvbnNGcm9tRWxlbWVudChTVkdFbGVtZW50JiBlbGVtZW4KICAgICByZXR1cm4gZWxl
bWVudC5kb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKTsKIH0KIAotUmVuZGVyU1ZHUmVz
b3VyY2VDb250YWluZXI6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKFNWR0VsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXI6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKFNWR0VsZW1lbnQmIGVsZW1lbnQsIFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihl
bGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9pZChlbGVtZW50LmdldElkQXR0cmli
dXRlKCkpCiAgICAgLCBtX3JlZ2lzdGVyZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgKaW5kZXgg
OTc3NDhmYi4uMGJhZjFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaApAQCAtNDUsNyArNDUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVDbGllbnRSZW5kZXJMYXllcihSZW5kZXJMYXllciopOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoU1ZHRWxlbWVudCYs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihT
VkdFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogICAgIGVudW0gSW52YWxpZGF0aW9u
TW9kZSB7CiAgICAgICAgIExheW91dEFuZEJvdW5kYXJpZXNJbnZhbGlkYXRpb24sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwCmluZGV4IGVjNzJlNTcuLmVhYzY1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC00NCw3
ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyKFNWR0ZpbHRlckVsZW1lbnQmIGVsZW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyKFNWR0ZpbHRlckVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKaW5kZXggM2QzOTc4OS4uYjVmYjVl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuaApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyIGZpbmFsIDogcHVibGljIFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cihTVkdGaWx0ZXJFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyKFNWR0ZpbHRlckVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNlRmlsdGVyKCk7CiAKICAgICBTVkdGaWx0ZXJF
bGVtZW50JiBmaWx0ZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHRmlsdGVy
RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHAKaW5kZXggNTQ2ODhjMi4uNDczNjQ1MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyYgZmlsdGVyUHJpbWl0aXZlRWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiBmaWx0
ZXJQcmltaXRpdmVFbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIoZmlsdGVyUHJpbWl0aXZlRWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAppbmRleCBkZjQ3NTk4Li5l
ZGU5MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCkBAIC0zNiw3ICszNiw3IEBA
IGNsYXNzIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczsKIAogY2xhc3MgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmLCBQYXNzUmVmPFJlbmRl
clN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmIGZpbHRlclByaW1pdGl2ZUVsZW1l
bnQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApp
bmRleCAxN2M2OGNiLi4zYTIwZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTMwLDcgKzMw
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
OjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KFNWR0dyYWRpZW50RWxlbWVudCYgbm9kZSwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpSZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50KFNWR0dyYWRpZW50RWxlbWVudCYgbm9kZSwgUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIobm9kZSwg
V1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fc2hvdWxkQ29sbGVjdEdyYWRpZW50QXR0cmlidXRl
cyh0cnVlKQogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgKaW5kZXggZTM3OTE1Mi4uNzhkYTcz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0Jikgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIFJl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQoU1ZHR3JhZGllbnRFbGVtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQoU1ZHR3JhZGllbnRFbGVt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0g
ZGVsZXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcAppbmRleCBhYTZmMzIwLi43
ZDU3YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAKQEAgLTI0LDcgKzI0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRp
ZW50OjpSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZXNv
dXJjZUxpbmVhckdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KFNWR0xp
bmVhckdyYWRpZW50RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQog
ICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUp
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaAppbmRleCAwZmY4NDU4Li45NjM0ODI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQgZmlu
YWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudCB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVu
dChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZp
cnR1YWwgflJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQoKTsKIAogICAgIFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudCYgbGluZWFyR3JhZGllbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50OjpncmFkaWVudEVsZW1lbnQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAKaW5kZXggM2Y3MTgyNi4u
OGMzYmRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6UmVuZGVyU1ZHUmVzb3VyY2VN
YXJrZXIoU1ZHTWFya2VyRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIoU1ZH
TWFya2VyRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDog
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuaAppbmRleCAyN2E5MGE5Li44Yjg0NjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCkBAIC0z
Miw3ICszMiw3IEBAIGNsYXNzIFJlbmRlck9iamVjdDsKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXJrZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVi
bGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKFNWR01hcmtlckVsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIoU1ZHTWFya2Vy
RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIoKTsKIAogICAgIFNWR01hcmtlckVsZW1lbnQmIG1hcmtlckVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdNYXJrZXJFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJj
ZUNvbnRhaW5lcjo6ZWxlbWVudCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCAxMGJjMGFiLi4w
MTE4NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcihTVkdNYXNrRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoU1ZHTWFz
a0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmgKaW5kZXggN2NkNzRkYy4uMTQ4YmRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaApAQCAtMzcsNyAr
MzcsNyBAQCBzdHJ1Y3QgTWFza2VyRGF0YSB7CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcihTVkdNYXNrRWxlbWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcihTVkdNYXNrRWxlbWVudCYs
IFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIoKTsKIAogICAgIFNWR01hc2tFbGVtZW50JiBtYXNrRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PFNWR01hc2tFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6ZWxl
bWVudCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IDdjMDYxM2MuLjdiYjZlZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybihTVkdQ
YXR0ZXJuRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm46OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybihTVkdQYXR0ZXJu
RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1f
c2hvdWxkQ29sbGVjdFBhdHRlcm5BdHRyaWJ1dGVzKHRydWUpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAppbmRl
eCA2MTkxODliLi4zYTYzMTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4gZmluYWwgOiBwdWJsaWMgUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNl
UGF0dGVybihTVkdQYXR0ZXJuRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4oU1ZHUGF0dGVybkVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5
bGU+JiYpOwogICAgIFNWR1BhdHRlcm5FbGVtZW50JiBwYXR0ZXJuRWxlbWVudCgpIGNvbnN0Owog
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUoYm9vbCBtYXJrRm9y
SW52YWxpZGF0aW9uID0gdHJ1ZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50
LmNwcAppbmRleCAxZDg4ZDJiLi45NDZmMGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVu
dC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJT
VkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCYgZWxlbWVudCwgUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChlbGVt
ZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaApp
bmRleCAxNjVhYzAzLi5kMWFhNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaApAQCAt
MzEsNyArMzEsNyBAQCBjbGFzcyBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ7CiAKIGNsYXNzIFJl
bmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFk
aWVudChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudChTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNl
UmFkaWFsR3JhZGllbnQoKTsKIAogICAgIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCYgcmFkaWFs
R3JhZGllbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpncmFkaWVudEVsZW1lbnQoKSk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmlu
ZGV4IDJiNTc2NzUuLjE2ZTUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtNTAsNyArNTAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlbmRlclNWR1Jvb3Q6OlJlbmRlclNWR1Jvb3QoU1ZHU1ZHRWxlbWVudCYgZWxlbWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSb290OjpSZW5kZXJTVkdS
b290KFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAg
ICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX29i
amVjdEJvdW5kaW5nQm94VmFsaWQoZmFsc2UpCiAgICAgLCBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQo
ZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmlu
ZGV4IGNiZmUwMjEuLjZjNmM0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNWR1NWR0VsZW1lbnQ7CiAK
IGNsYXNzIFJlbmRlclNWR1Jvb3QgZmluYWwgOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgewogcHVi
bGljOgotICAgIFJlbmRlclNWR1Jvb3QoU1ZHU1ZHRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJTVkdSb290KFNWR1NWR0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jvb3QoKTsKIAogICAgIFNWR1NWR0VsZW1lbnQm
IHN2Z1NWR0VsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggOWE2MWZlMy4uZWYzY2VhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTYzLDcgKzYz
LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZW5kZXJTVkdTaGFwZSYgbV9yZW5kZXJlcjsKIH07
CiAKLVJlbmRlclNWR1NoYXBlOjpSZW5kZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHU2hhcGU6OlJlbmRl
clNWR1NoYXBlKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKICAgICAsIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKGZhbHNlKSAvLyBEZWZhdWx0IGlz
IGZhbHNlLCB0aGUgY2FjaGVkIHJlY3RzIGFyZSBlbXB0eSBmcm9tIHRoZSBiZWdpbm5pbmcuCiAg
ICAgLCBtX25lZWRzU2hhcGVVcGRhdGUodHJ1ZSkgLy8gRGVmYXVsdCBpcyB0cnVlLCBzbyB3ZSBn
cmFiIGEgUGF0aCBvYmplY3Qgb25jZSBmcm9tIFNWR0dyYXBoaWNzRWxlbWVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAppbmRleCAxMDhjZTQ4Li5h
YmMwYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFw
ZS5oCkBAIC00NSw4ICs0NSw4IEBAIGNsYXNzIFNWR0dyYXBoaWNzRWxlbWVudDsKIAogY2xhc3Mg
UmVuZGVyU1ZHU2hhcGUgOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVibGljOgot
ICAgIFJlbmRlclNWR1NoYXBlKFNWR0dyYXBoaWNzRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+KTsKLSAgICBSZW5kZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPiwgUGF0aCosIGJvb2wpOworICAgIFJlbmRlclNWR1NoYXBlKFNWR0dyYXBoaWNz
RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CisgICAgUmVuZGVyU1ZHU2hhcGUoU1ZHR3Jh
cGhpY3NFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCBQYXRoKiwgYm9vbCk7CiAgICAgdmly
dHVhbCB+UmVuZGVyU1ZHU2hhcGUoKTsKIAogICAgIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhp
Y3NFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50PihS
ZW5kZXJTVkdNb2RlbE9iamVjdDo6ZWxlbWVudCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCmluZGV4IDNmZDk3OTcuLmI3YTc4ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKQEAgLTI4LDcg
KzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlclNWR1RTcGFuIGZpbmFs
IDogcHVibGljIFJlbmRlclNWR0lubGluZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVuZGVy
U1ZHVFNwYW4oU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCisgICAgZXhwbGljaXQgUmVuZGVyU1ZHVFNwYW4oU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgICAg
ICA6IFJlbmRlclNWR0lubGluZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgIHsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApp
bmRleCBiYWNkZDNhLi5hNzkwZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZW5kZXJTVkdUZXh0OjpSZW5kZXJTVkdUZXh0KFNWR1RleHRFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1RleHQ6OlJlbmRlclNW
R1RleHQoU1ZHVGV4dEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
ICAgICA6IFJlbmRlclNWR0Jsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBt
X25lZWRzUmVvcmRlcmluZyhmYWxzZSkKICAgICAsIG1fbmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1Vw
ZGF0ZShmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0
LmgKaW5kZXggZmVkMTNjYy4uOWJmNTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVuZGVyU1ZHSW5s
aW5lVGV4dDsKIAogY2xhc3MgUmVuZGVyU1ZHVGV4dCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdC
bG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHVGV4dChTVkdUZXh0RWxlbWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdUZXh0KFNWR1RleHRFbGVtZW50JiwgUmVm
PFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdUZXh0KCk7CiAKICAgICBT
VkdUZXh0RWxlbWVudCYgdGV4dEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAKaW5kZXggYTM1ZDZjNi4uOTY3
MWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0UGF0aC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJTVkdUZXh0UGF0aDo6UmVuZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBhdGhFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1RleHRQYXRoOjpS
ZW5kZXJTVkdUZXh0UGF0aChTVkdUZXh0UGF0aEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR0lubGluZShlbGVtZW50LCBXVEY6Om1vdmUo
c3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0UGF0aC5oCmluZGV4IDcwYTVmZDcuLjAyMTU1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKQEAgLTI3LDcgKzI3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdUZXh0UGF0aCBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJTVkdJbmxpbmUgewogcHVibGljOgotICAgIFJlbmRlclNWR1RleHRQYXRoKFNW
R1RleHRQYXRoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdU
ZXh0UGF0aChTVkdUZXh0UGF0aEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAg
U1ZHVGV4dFBhdGhFbGVtZW50JiB0ZXh0UGF0aEVsZW1lbnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNm
b3JtYWJsZUNvbnRhaW5lci5jcHAKaW5kZXggZjM2YTkyMC4uZWE2NGQzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKLVJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OlJlbmRlclNWR1Ry
YW5zZm9ybWFibGVDb250YWluZXIoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OlJl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdDb250YWluZXIoZWxl
bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1
ZSkKICAgICAsIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKGZhbHNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIuaAppbmRleCA5ZWRhYmVlLi5iOWY2YzE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
VkdHcmFwaGljc0VsZW1lbnQ7CiBjbGFzcyBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
IGZpbmFsIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFwaGljc0VsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcihTVkdHcmFw
aGljc0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIFNWR0dyYXBoaWNzRWxlbWVu
dCYgZ3JhcGhpY3NFbGVtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50
PihSZW5kZXJTVkdDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBp
c1NWR1RyYW5zZm9ybWFibGVDb250YWluZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIuY3BwCmluZGV4IDgwNDM2ZDcuLjUyNjA3NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWlu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXIuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
KFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFNWR1NW
R0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRl
clNWR0NvbnRhaW5lcihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9kaWRUcmFu
c2Zvcm1Ub1Jvb3RVcGRhdGUoZmFsc2UpCiAgICAgLCBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQoZmFs
c2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyLmgKaW5kZXggZjYyNGY1Zi4uNTk2OWFlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB0aHVzIHdl
IGluaGVyaXQgZnJvbSBSZW5kZXJTVkdDb250YWluZXIgaW5zdGVhZCBvZiBSZW5kZXJTVkdUcmFu
c2Zvcm1hYmxlQ29udGFpbmVyCiBjbGFzcyBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJTVkdDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIoU1ZHU1ZHRWxlbWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJik7CiAKICAgICBTVkdTVkdFbGVtZW50JiBzdmdTVkdFbGVtZW50KCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRl
cmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJl
bmRlcmluZ0NvbnRleHQuaAppbmRleCA1MWI0MzRjLi40ZmFlMmI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dC5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlOwogCiBjbGFzcyBT
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBUZXh0UnVuOjpSZW5kZXJp
bmdDb250ZXh0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdUZXh0UnVuUmVuZGVy
aW5nQ29udGV4dD4gY3JlYXRlKFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCisgICAgc3RhdGljIFJl
ZjxTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUZXh0UnVuUmVuZGVy
aW5nQ29udGV4dChyZW5kZXJlcikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAppbmRleCBkZDhkNjM2Li44NjlhNWY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFN0eWxlIHsK
IAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKK1JlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVy
VHJlZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3Vt
ZW50LmgKaW5kZXggZjcyNDczYi4uM2YxMzAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFN0
eWxlUmVzb2x2ZUZvckRvY3VtZW50X2gKICNkZWZpbmUgU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnRf
aAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTsK
IAogbmFtZXNwYWNlIFN0eWxlIHsKIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRv
Y3VtZW50KGNvbnN0IERvY3VtZW50Jik7CitSZWY8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JEb2N1
bWVudChjb25zdCBEb2N1bWVudCYpOwogCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UmVzb2x2ZVRyZWUuY3BwCmluZGV4IGQ1ODg2OWEuLmI4OGQ3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIGJv
b2wgc2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVu
ZGVyRWxlbWVudCYgcGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYg
aW5oZXJpdGVkU3R5bGUpCitzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmIGluaGVyaXRlZFN0eWxlKQogewogICAgIGlm
IChlbGVtZW50Lmhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZWxlbWVudC5jdXN0b21TdHlsZUZvclJlbmRl
cmVyKGluaGVyaXRlZFN0eWxlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmluZGV4IDE5
MjMxZDAuLmI4NWVjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApAQCAtMTM4LDcg
KzEzOCw3IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgfQogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHQUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAocGFyZW50
Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCkgJiYgZG93bmNhc3Q8U1ZHRWxl
bWVudD4oKnBhcmVudE5vZGUoKSkuaXNUZXh0Q29udGVudCgpKQogICAgICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyU1ZHSW5saW5lPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBRWxlbWVudC5oCmluZGV4IDNhYWE5NzkuLmM3ZjVlNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCmluZGV4IDRhZDA2M2Qu
LjNiZjE3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCkBA
IC04Miw3ICs4Miw3IEBAIGJvb2wgU1ZHQWx0R2x5cGhFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
U1ZHVFNwYW4+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbHRHbHlwaEVsZW1lbnQuaAppbmRleCA2YmU5Zjc1Li5mNGFmYThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU1ZHQWx0R2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQWx0R2x5cGhFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuY3BwCmluZGV4IDA4MmY3YWIuLjg4NzU3NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNW
R0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBTVkdDaXJjbGVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2lyY2xl
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHRWxsaXBzZT4oKnRoaXMsIFdU
Rjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Np
cmNsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKaW5k
ZXggZWMxODJkYi4uYTM3NzkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Np
cmNsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5o
CkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJp
ZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ2lyY2xlRWxl
bWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCA5NjFjZmQxLi5iMjIzZDQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApAQCAtMTEzLDcgKzEx
Myw3IEBAIHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmIGNoYW5nZSkKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAppbmRleCA5MzhjZmI0Li5hNzIxNmUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29u
c3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ2xpcFBhdGhFbGVtZW50KQogICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5pdHMsIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCmluZGV4IDAwNzVlZGUu
LmM2YzM2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCkBAIC0zOSwyMSArMzksMjEgQEAgcHVibGlj
OgogICAgICAgICBTVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUiA9IDMKICAgICB9OwogCi0gICAg
c3RhdGljIFBhc3NSZWY8U1ZHQ29sb3I+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBy
Z2JDb2xvcikKKyAgICBzdGF0aWMgUmVmPFNWR0NvbG9yPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgcmdiQ29sb3IpCiAgICAgewogICAgICAgICBhdXRvIGNvbG9yID0gYWRvcHRSZWYo
Km5ldyBTVkdDb2xvcihTVkdfQ09MT1JUWVBFX1JHQkNPTE9SKSk7CiAgICAgICAgIGNvbG9yLmdl
dCgpLnNldENvbG9yKGNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKHJnYkNvbG9yKSk7CiAgICAgICAg
IHJldHVybiBjb2xvcjsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdDb2xvcj4gY3Jl
YXRlRnJvbUNvbG9yKGNvbnN0IENvbG9yJiByZ2JDb2xvcikKKyAgICBzdGF0aWMgUmVmPFNWR0Nv
bG9yPiBjcmVhdGVGcm9tQ29sb3IoY29uc3QgQ29sb3ImIHJnYkNvbG9yKQogICAgIHsKICAgICAg
ICAgYXV0byBjb2xvciA9IGFkb3B0UmVmKCpuZXcgU1ZHQ29sb3IoU1ZHX0NPTE9SVFlQRV9SR0JD
T0xPUikpOwogICAgICAgICBjb2xvci5nZXQoKS5zZXRDb2xvcihyZ2JDb2xvcik7CiAgICAgICAg
IHJldHVybiBjb2xvcjsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdDb2xvcj4gY3Jl
YXRlQ3VycmVudENvbG9yKCkKKyAgICBzdGF0aWMgUmVmPFNWR0NvbG9yPiBjcmVhdGVDdXJyZW50
Q29sb3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQ29sb3IoU1ZH
X0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNF
bGVtZW50LmNwcAppbmRleCA4YzUyYWU0Li4wMTRjZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
ZWZzRWxlbWVudC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBTVkdEZWZzRWxlbWVudDo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R0RlZnNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVt
ZW50LmgKaW5kZXggMjNlMjBhOC4uODhiZDc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RlZnNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVt
ZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRGVmc0VsZW1lbnQpCiAgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAK
aW5kZXggZmYzOGEwMC4uNWI0MDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsbGlwc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0VsbGlw
c2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0VsbGlwc2U+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKaW5kZXggNWI5ZjkyYy4uNGIw
NjgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfTsKIAotICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICBC
RUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRWxsaXBzZUVsZW1lbnQpCiAgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJFbGVtZW50LmNwcAppbmRleCBiODc5MjQyLi40ZjhjZWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBTVkdGaWx0
ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAg
ICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRlckVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqdGhpcywg
V1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaApp
bmRleCAxOTM5ZTMxLi5iNDlmNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBO
b2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZl
TGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5jcHAKaW5kZXggM2M3ZGY3YS4uNTI4MTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAg
LTE0MSw3ICsxNDEsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKEZpbHRlckVmZmVjdCogZgogICAgICAgICBmaWx0ZXJF
ZmZlY3QtPnNldEhhc0hlaWdodCh0cnVlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA2NmFjM2MyLi42OWFkYmUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5jcHAKaW5k
ZXggNWQ2N2JjYi4uZGYwNzQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
bnRGYWNlTmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZU5hbWVFbGVtZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBQYXNzUmVmUHRyPFNWR0ZvbnRGYWNl
TmFtZUVsZW1lbnQ+IFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmPENTU0ZvbnRGYWNlU3JjVmFsdWU+IFNWR0ZvbnRG
YWNlTmFtZUVsZW1lbnQ6OnNyY1ZhbHVlKCkgY29uc3QKK1JlZjxDU1NGb250RmFjZVNyY1ZhbHVl
PiBTVkdGb250RmFjZU5hbWVFbGVtZW50OjpzcmNWYWx1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZUxvY2FsKGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFt
ZXM6Om5hbWVBdHRyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VOYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlTmFtZUVs
ZW1lbnQuaAppbmRleCBjNjg1ZjhhLi41ZTBhOTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RmFjZU5hbWVFbGVtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgU1ZHRm9udEZh
Y2VOYW1lRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTVkdGb250RmFjZU5hbWVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCi0gICAgUGFzc1JlZjxDU1NGb250RmFjZVNy
Y1ZhbHVlPiBzcmNWYWx1ZSgpIGNvbnN0OworICAgIFJlZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBz
cmNWYWx1ZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCmluZGV4IDQ1YjkwNmQuLmRmZjc4ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3
IEBAIFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6flNWR0ZvbnRGYWNlVXJpRWxlbWVudCgpCiAgICAg
ICAgIG1fY2FjaGVkRm9udC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCi1QYXNzUmVmPENTU0Zv
bnRGYWNlU3JjVmFsdWU+IFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUoKSBjb25zdAor
UmVmPENTU0ZvbnRGYWNlU3JjVmFsdWU+IFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUo
KSBjb25zdAogewogICAgIGF1dG8gc3JjID0gQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlKGdl
dEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0cikpOwogICAgIEF0b21pY1N0cmluZyB2YWx1
ZShmYXN0R2V0QXR0cmlidXRlKGZvcm1hdEF0dHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RmFjZVVyaUVsZW1lbnQuaAppbmRleCAzNTBmMWZkLi5mOGMzOWQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oCkBAIC0zNSw3ICszNSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgflNWR0ZvbnRGYWNlVXJpRWxlbWVudCgpOwogCi0gICAgUGFzc1Jl
ZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBzcmNWYWx1ZSgpIGNvbnN0OworICAgIFJlZjxDU1NGb250
RmFjZVNyY1ZhbHVlPiBzcmNWYWx1ZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNWR0ZvbnRG
YWNlVXJpRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGJhZjgyYmYu
LmZkN2Y1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmgKaW5kZXggYWI0ZDFhZi4uN2ViN2ZkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKaW5kZXggODI5YzNhZC4uOWQ3YmM2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgU1ZH
R0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFNWR0dFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHR0VsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgLy8gU1ZHIDEu
MSB0ZXN0c3VpdGUgZXhwbGljaXRlbHkgdXNlcyBjb25zdHJ1Y3RzIGxpa2UgPGcgZGlzcGxheT0i
bm9uZSI+PGxpbmVhckdyYWRpZW50PgogICAgIC8vIFdlIHN0aWxsIGhhdmUgdG8gY3JlYXRlIHJl
bmRlcmVycyBmb3IgdGhlIDxnPiAmIDxsaW5lYXJHcmFkaWVudD4gZWxlbWVudCwgdGhvdWdoIHRo
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAppbmRleCA4ZTdkMzY5Li5kMzlkYjZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR0VsZW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFNWR0dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuY3BwCmluZGV4IGE5NDM1ZDAuLmMwZWU2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgRmxvYXRSZWN0IFNW
R0dyYXBoaWNzRWxlbWVudDo6Z2V0QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRl
U3RyYXRlZ3kpCiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldEJCb3godGhpcywgc3R5
bGVVcGRhdGVTdHJhdGVneSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdHcmFw
aGljc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdHcmFwaGljc0VsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgLy8gQnkg
ZGVmYXVsdCwgYW55IHN1YmNsYXNzIGlzIGV4cGVjdGVkIHRvIGRvIHBhdGgtYmFzZWQgZHJhd2lu
ZwogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdQYXRoPigqdGhpcywgV1RGOjpt
b3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKaW5kZXgg
NjEyNjY2Zi4uMTEwYWQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQu
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyAiYmFzZSBjbGFzcyIgbWV0aG9k
cyBmb3IgYWxsIHRoZSBlbGVtZW50cyB3aGljaCByZW5kZXIgYXMgcGF0aHMKICAgICB2aXJ0dWFs
IHZvaWQgdG9DbGlwUGF0aChQYXRoJik7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIFNW
R0dyYXBoaWNzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXggYmI4NDc0ZS4uN2FjZWY3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2
b2lkIFNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0lt
YWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSW1hZ2U+KCp0aGlzLCBX
VEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRl
eCAxNzY3NjFkLi41YTliOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBA
IC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRl
cmVycygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcApp
bmRleCA0N2ViODNlLi4xZDE4YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcApAQCAtMzM1
LDcgKzMzNSw3IEBAIFNWR0xlbmd0aCBTVkdMZW5ndGg6OmZyb21DU1NQcmltaXRpdmVWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZSogdmFsdWUpCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotUGFzc1Jl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gU1ZHTGVuZ3RoOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0
IFNWR0xlbmd0aCYgbGVuZ3RoKQorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBTVkdMZW5ndGg6OnRv
Q1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgU1ZHTGVuZ3RoJiBsZW5ndGgpCiB7CiAgICAgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19V
TktOT1dOOwogICAgIHN3aXRjaCAobGVuZ3RoLnVuaXRUeXBlKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5n
dGguaAppbmRleCA0MGM4ZjI1Li44NTlhOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCkBAIC05
OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgU1ZHTGVuZ3RoIGZyb21D
U1NQcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSopOwotICAgIHN0YXRpYyBQYXNzUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiB0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aCYp
OworICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvQ1NTUHJpbWl0aXZlVmFsdWUo
Y29uc3QgU1ZHTGVuZ3RoJik7CiAgICAgc3RhdGljIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZUZv
ckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIFNW
R0xlbmd0aCBibGVuZChjb25zdCBTVkdMZW5ndGgmIGZyb20sIGZsb2F0IHByb2dyZXNzKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApp
bmRleCBlNzI1YmQ5Li4xOWIzZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudD4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCmluZGV4
IDQ2ZDkyZGUuLmU5MTQ3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKaW5kZXggMmQ5ZGQzMC4uZDgzNzg1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZv
aWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BbmdsZShjb25zdCBTVkdBbmdsZSYgYW5n
bGUpCiAgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChvcmllbnRBbmdsZVByb3BlcnR5SW5mbygpLT5h
dHRyaWJ1dGVOYW1lKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hcmtlckVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5kZXggOGE5YjQ2Ni4uODI4
ZjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCkBAIC0xMzIsNyArMTMy
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFz
a0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAppbmRl
eCA2ZjYyOTFlLi43M2Y4ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFz
a0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAK
QEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91
dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gbWFz
a1JlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgK
aW5kZXggZDQ2YzcwMi4uN2FiYWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01hc2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgK
QEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiBt
X2NsaWVudExheWVyczsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGFpbnQuaAppbmRleCBhYTM5YzdlLi43ZGQwNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGFpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaApA
QCAtNDMsNDEgKzQzLDQxIEBAIHB1YmxpYzoKICAgICAgICAgU1ZHX1BBSU5UVFlQRV9VUkkgPSAx
MDcKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVua25vd24o
KQorICAgIHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVua25vd24oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9VTktOT1dOKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZU5vbmUoKQorICAg
IHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZU5vbmUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9OT05FKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZUN1cnJlbnRDb2xvcigpCisgICAgc3Rh
dGljIFJlZjxTVkdQYWludD4gY3JlYXRlQ3VycmVudENvbG9yKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNWR1BhaW50KFNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZUNvbG9yKGNvbnN0
IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPFNWR1BhaW50PiBjcmVhdGVDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgewogICAgICAgICBhdXRvIHBhaW50ID0gYWRvcHRSZWYoKm5l
dyBTVkdQYWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9SKSk7CiAgICAgICAgIHBhaW50LmdldCgp
LnNldENvbG9yKGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHBhaW50OwogICAgIH0KIAotICAgIHN0
YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVVUkkoY29uc3QgU3RyaW5nJiB1cmkpCisgICAg
c3RhdGljIFJlZjxTVkdQYWludD4gY3JlYXRlVVJJKGNvbnN0IFN0cmluZyYgdXJpKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9VUkks
IHVyaSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVVUklB
bmRDb2xvcihjb25zdCBTdHJpbmcmIHVyaSwgY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIHN0YXRp
YyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVSSUFuZENvbG9yKGNvbnN0IFN0cmluZyYgdXJpLCBjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgewogICAgICAgICBhdXRvIHBhaW50ID0gYWRvcHRSZWYoKm5l
dyBTVkdQYWludChTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiwgdXJpKSk7CiAgICAgICAgIHBh
aW50LmdldCgpLnNldENvbG9yKGNvbG9yKTsKICAgICAgICAgcmV0dXJuIHBhaW50OwogICAgIH0K
IAotICAgIHN0YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVVUklBbmROb25lKGNvbnN0IFN0
cmluZyYgdXJpKQorICAgIHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVSSUFuZE5vbmUoY29u
c3QgU3RyaW5nJiB1cmkpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQ
YWludChTVkdfUEFJTlRUWVBFX1VSSV9OT05FLCB1cmkpKTsKICAgICB9CkBAIC05Nyw3ICs5Nyw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I7CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdQYWludD4gY3JlYXRlKGNvbnN0IFNWR1Bh
aW50VHlwZSYgdHlwZSwgY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IENvbG9yJiBjb2xvcikKKyAg
ICBzdGF0aWMgUmVmPFNWR1BhaW50PiBjcmVhdGUoY29uc3QgU1ZHUGFpbnRUeXBlJiB0eXBlLCBj
b25zdCBTdHJpbmcmIHVyaSwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKICAgICAgICAgYXV0
byBwYWludCA9IGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQodHlwZSwgdXJpKSk7CiAgICAgICAgIHBh
aW50LmdldCgpLnNldENvbG9yKGNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwCmluZGV4IGEwNTlkMmEuLjM0ZDYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcApAQCAtNDAzLDcgKzQwMyw3IEBAIEZsb2F0UmVjdCBTVkdQYXRoRWxlbWVudDo6Z2V0
QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRlU3RyYXRlZ3kpCiAgICAgcmV0dXJu
IHJlbmRlcmVyLT5wYXRoKCkuYm91bmRpbmdSZWN0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdGhFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAg
IC8vIEJ5IGRlZmF1bHQsIGFueSBzdWJjbGFzcyBpcyBleHBlY3RlZCB0byBkbyBwYXRoLWJhc2Vk
IGRyYXdpbmcKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUGF0aD4oKnRoaXMs
IFdURjo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAppbmRleCA3
NWIxNmEwLi4yZWQzMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaApAQCAtMTE2
LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogICAg
IEVORF9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
Pikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAKaW5kZXggOWIzYzdhZi4uODM5YmY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgICAgIG9iamVj
dC0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1Bh
dHRlcm5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHUGF0dGVybkVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlUGF0dGVybj4oKnRoaXMsIFdURjo6bW92
ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAppbmRleCA0
OTJjZDY4Li5jMmI0MDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaApA
QCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRl
OwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlh
bEdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggODIxMTdmMS4uZTM5NGEzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTEyOSw3ICsx
MjksNyBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogICAgICAgICBvYmplY3QtPnNldE5lZWRz
TGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuaAppbmRleCAxMmJmNGVkLi4yOTNlNTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKaW5kZXggZDgwZDgx
YS4uYmMzYWU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCkBAIC0xNDQs
NyArMTQ0LDcgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1JlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gU1ZHUmVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1JlY3Q+
KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdSZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmgKaW5kZXggM2NlZThkOS4uMmYzNDA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVy
cmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSZWN0RWxl
bWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCAxMmZlZDdlLi45MmEyMDJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgYm9vbCBTVkdTVkdFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1
cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBTVkdTVkdFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU1ZH
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICBpZiAoaXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSb290PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCAyNzgyMjcyLi5kZDMxOWNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
Pikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKaW5kZXggMTQw
NWQ0ZS4uMmQ0ZGU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBAIC05
Nyw3ICs5Nyw3IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTdG9wRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR1N0b3BFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdHcmFk
aWVudFN0b3A+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmgKaW5kZXggN2RhMzdjNi4uNmZkYmY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9v
bCBpc0dyYWRpZW50U3RvcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAg
IHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQ
YXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5
bGUmKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdTdG9wRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAppbmRl
eCBmYzNlMmYzLi4wY2ZjNDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dp
dGNoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQu
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgU1ZHU3dpdGNoRWxlbWVudDo6Y2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTd2l0Y2hFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHU3dpdGNoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgKaW5kZXggY2U2M2Y5OS4uYjM2MDBmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAog
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTd2l0Y2hFbGVtZW50KQog
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xF
bGVtZW50LmNwcAppbmRleCA4MTA5MDEzLi5hYzljZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N5bWJvbEVsZW1lbnQuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBTVkdTeW1ib2xFbGVt
ZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKICAgICByZXR1cm4gaGFzQXR0cmli
dXRlKFNWR05hbWVzOjp2aWV3Qm94QXR0cik7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdTeW1ib2xFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU3ltYm9sRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyPigqdGhpcywgV1RG
Ojptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3lt
Ym9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAppbmRl
eCAzMTQ2NWFjLi4xODU1NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3lt
Ym9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxl
bmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5j
cHAKaW5kZXggYjAxMjQ4Yy4uN2M4MWU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1l
bnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFBhc3NSZWZQdHI8U1ZHVFJlZkVsZW1lbnQ+IFNWR1RS
ZWZFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKIAogY2xhc3Mg
U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI+IGNyZWF0
ZShTVkdUUmVmRWxlbWVudCYgdHJlZkVsZW1lbnQpCisgICAgc3RhdGljIFJlZjxTVkdUUmVmVGFy
Z2V0RXZlbnRMaXN0ZW5lcj4gY3JlYXRlKFNWR1RSZWZFbGVtZW50JiB0cmVmRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RSZWZUYXJnZXRFdmVudExpc3Rl
bmVyKHRyZWZFbGVtZW50KSk7CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgU1ZHVFJl
ZkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RSZWZFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdJbmxpbmU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKaW5kZXggOTg3ZmM2Ni4uYzA5
ZTViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQ
YXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3Qg
Tm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFu
RWxlbWVudC5jcHAKaW5kZXggZDM0NGYwZS4uYjFkNDA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RTcGFuRWxlbWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1JlZlB0cjxTVkdUU3BhbkVs
ZW1lbnQ+IFNWR1RTcGFuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1RTcGFuRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJTVkdUU3Bhbj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RTcGFuRWxlbWVudC5oCmluZGV4IDVlZDhiMTIuLmI2ZjE0NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVFNwYW5FbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBTVkdUU3BhbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAg
ICAgICAgICAgICAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCmluZGV4IGUwOWUyZGYuLmJlZjUxNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcApAQCAtNjYsNyArNjYsNyBAQCBBZmZpbmVU
cmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdAog
ICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUZXh0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJTVkdUZXh0PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCmluZGV4IDQzMDg0ZDUuLmQxNTVjM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgU1ZHVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQYXRoRWxlbWVudC5jcHAKaW5kZXggY2RiOTk1Yi4uMTQwYjdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lk
IFNWR1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogfQogCi1SZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZH
VGV4dFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUZXh0UGF0aD4o
KnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5oCmluZGV4IGYyNDRiYzMuLmUwMWQ2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUm
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDQyYmM4
ZjEuLjdjZTNhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTUyMyw3
ICs1MjMsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkU2hhZG93QW5kSW5zdGFuY2VUcmVl
KFNWR0VsZW1lbnQqIHRhcmdldCkKICNlbmRpZgogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHVXNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+KCp0aGlzLCBX
VEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCmluZGV4IDJm
MGJjMDUuLjYxOTcwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaApAQCAtNjksNyAr
NjksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxBdHRhY2hSZW5kZXJlcnMo
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHRvQ2xpcFBhdGgoUGF0
aCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IGJmZWRkMTUuLjlhYjE2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNC0xMi0xMiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmIHdpdGggUmVmL1JlZiYmIGFjcm9zcyB0aGUgYm9h
cmQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzk1ODc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5
bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLm1tOgorICAgICAgICAo
V2ViVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKToKKwogMjAxNC0xMi0xMSAgRGFuIEJlcm5zdGVp
biAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhIGxlYWsgaW50cm9kdWNlZCBpbiBy
MTc3MTk5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tCmluZGV4IDBiODAyMmIuLjExY2U5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTI1NSw3ICsy
NTUsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKCkKIAogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoU3R5bGVQ
cm9wZXJ0aWVzKiBzdHlsZSwgUmFuZ2UqIHJhbmdlKQogewotICAgIFJlZjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBtdXRhYmxlU3R5bGUoc3R5bGUtPmlzTXV0YWJsZSgpID8gc3RhdGljX2Nhc3Q8
TXV0YWJsZVN0eWxlUHJvcGVydGllcyY+KCpzdHlsZSkgOiBzdHlsZS0+bXV0YWJsZUNvcHkoKSk7
CisgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IG11dGFibGVTdHlsZShzdHlsZS0+aXNN
dXRhYmxlKCkgPyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4oc3RhdGljX2Nhc3Q8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcyY+KCpzdHlsZSkpIDogc3R5bGUtPm11dGFibGVDb3B5KCkpOwogICAg
IHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1f
d2ViVmlldwogICAgICAgICBzaG91bGRBcHBseVN0eWxlOmtpdChtdXRhYmxlU3R5bGUtPmVuc3Vy
ZUNTU1N0eWxlRGVjbGFyYXRpb24oKSkgdG9FbGVtZW50c0luRE9NUmFuZ2U6a2l0KHJhbmdlKV07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNp
dGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNp
dGVkTGlua1N0b3JlLmgKaW5kZXggYWQxYjIxZi4uNGNiYTJlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaApAQCAt
MjgsMTEgKzI4LDExIEBACiAKICNpbXBvcnQgPFdlYkNvcmUvTGlua0hhc2guaD4KICNpbXBvcnQg
PFdlYkNvcmUvVmlzaXRlZExpbmtTdG9yZS5oPgotI2ltcG9ydCA8d3RmL1Bhc3NSZWYuaD4KKyNp
bXBvcnQgPHd0Zi9SZWYuaD4KIAogY2xhc3MgV2ViVmlzaXRlZExpbmtTdG9yZSBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0b3JlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZjxXZWJWaXNpdGVkTGlua1N0b3JlPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlZp
c2l0ZWRMaW5rU3RvcmU+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfldlYlZpc2l0ZWRMaW5rU3Rv
cmUoKTsKIAogICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRl
ZExpbmtTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0
ZWRMaW5rU3RvcmUubW0KaW5kZXggNmNiOGU2Yi4uYTAwZmMwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLm1tCkBA
IC00NSw3ICs0NSw3IEBAIHN0YXRpYyBIYXNoU2V0PFdlYlZpc2l0ZWRMaW5rU3RvcmUqPiYgdmlz
aXRlZExpbmtTdG9yZXMoKQogfQogCiAKLVBhc3NSZWY8V2ViVmlzaXRlZExpbmtTdG9yZT4gV2Vi
VmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkKK1JlZjxXZWJWaXNpdGVkTGlua1N0b3JlPiBXZWJW
aXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlZpc2l0ZWRMaW5rU3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDcyMGFiNWYuLmY1OTE4NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxNC0xMi0xMiAgQW5kcmVhcyBLbGluZyAgPGFr
bGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmIHdpdGggUmVmL1JlZiYm
IGFjcm9zcyB0aGUgYm9hcmQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzk1ODc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmF0dGVyeU1hbmFnZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhdHRlcnlNYW5hZ2VyUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhdHRlcnlNYW5hZ2VyUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUdyb3VwOjpjcmVhdGVOb25OdWxsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUdyb3Vw
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9CYXR0ZXJ5UHJvdmlkZXIuY3BwOgorICAgICAg
ICAoQmF0dGVyeVByb3ZpZGVyOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvQmF0
dGVyeVByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRv
ckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
TWVkaWFDbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdV
cGRhdGVEaXNwYXRjaGVyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3VXBkYXRlRGlzcGF0Y2hlci5oOgorCiAyMDE0LTEyLTEyICBSb2hpdCBLdW1hciAgPGt1bWFy
LnJvaGl0QHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCBCdWlsZCBXYXJuaW5nIGluIFdlYktp
dDIvVUlQcm9jZXNzIG1vZHVsZSBmb3IgR1RLIGJ1aWxkIGFuZCBXZWJLaXQyL05ldHdvcmtQcm9j
ZXNzIG1vZHVsZSBpbiBHVEsgYW5kIEVGTCBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCmluZGV4IDBlZWJiMjYuLmI1NWM3NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpZiBVU0UoQ0YpCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVj
dCBCYWNrRm9yd2FyZExpc3RTdGF0ZTsKIAogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0IDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmFja0ZvcndhcmRMaXN0PiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8V2ViQmFja0ZvcndhcmRMaXN0PiBjcmVhdGUo
V2ViUGFnZVByb3h5JiBwYWdlKQorICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0PiBj
cmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViQmFja0ZvcndhcmRMaXN0KHBhZ2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmF0dGVyeU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmF0dGVyeU1hbmFnZXJQcm94eS5jcHAKaW5kZXggZGQ2ZmJh
Yi4uNGRlNGEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhdHRl
cnlNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0
ZXJ5TWFuYWdlclByb3h5LmNwcApAQCAtMzksNyArMzksNyBAQCBjb25zdCBjaGFyKiBXZWJCYXR0
ZXJ5TWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgpCiAgICAgcmV0dXJuICJXZWJCYXR0ZXJ5
TWFuYWdlclByb3h5IjsKIH0KIAotUGFzc1JlZjxXZWJCYXR0ZXJ5TWFuYWdlclByb3h5PiBXZWJC
YXR0ZXJ5TWFuYWdlclByb3h5OjpjcmVhdGUoV2ViQ29udGV4dCogY29udGV4dCkKK1JlZjxXZWJC
YXR0ZXJ5TWFuYWdlclByb3h5PiBXZWJCYXR0ZXJ5TWFuYWdlclByb3h5OjpjcmVhdGUoV2ViQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJCYXR0ZXJ5TWFu
YWdlclByb3h5KGNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQmF0dGVyeU1hbmFnZXJQcm94eS5oCmluZGV4IDJiODIwOWEuLjI5ZTE0NmQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmF0dGVyeU1hbmFnZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclByb3h5LmgKQEAg
LTQzLDcgKzQzLDcgQEAgY2xhc3MgV2ViQmF0dGVyeU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJhdHRlcnkKIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmPFdl
YkJhdHRlcnlNYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJDb250ZXh0Kik7CisgICAgc3RhdGljIFJl
ZjxXZWJCYXR0ZXJ5TWFuYWdlclByb3h5PiBjcmVhdGUoV2ViQ29udGV4dCopOwogICAgIHZpcnR1
YWwgfldlYkJhdHRlcnlNYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVByb3Zp
ZGVyKGNvbnN0IFdLQmF0dGVyeVByb3ZpZGVyQmFzZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZUdyb3VwLmNwcAppbmRleCBiYjQwY2QyLi4xNmY3YzJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBQYXNzUmVm
UHRyPFdlYlBhZ2VHcm91cD4gV2ViUGFnZUdyb3VwOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBib29sIHZpcwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUGFnZUdyb3VwKGlk
ZW50aWZpZXIsIHZpc2libGVUb0luamVjdGVkQnVuZGxlLCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50
KSk7CiB9CiAKLVBhc3NSZWY8V2ViUGFnZUdyb3VwPiBXZWJQYWdlR3JvdXA6OmNyZWF0ZU5vbk51
bGwoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIHZpc2libGVUb0luamVjdGVkQnVuZGxl
LCBib29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQpCitSZWY8V2ViUGFnZUdyb3VwPiBXZWJQYWdl
R3JvdXA6OmNyZWF0ZU5vbk51bGwoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIHZpc2li
bGVUb0luamVjdGVkQnVuZGxlLCBib29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGFnZUdyb3VwKGlkZW50aWZpZXIsIHZpc2libGVUb0lu
amVjdGVkQnVuZGxlLCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZUdyb3VwLmgKaW5kZXggMGI1MjQ3Yi4uMTA4YWIwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBX
ZWJQYWdlR3JvdXAgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQ
YWdlR3JvdXA+IHsKIHB1YmxpYzoKICAgICBXZWJQYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyID0gU3RyaW5nKCksIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUgPSB0cnVlLCBi
b29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQgPSB0cnVlKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJQYWdlR3JvdXA+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIgPSBTdHJpbmco
KSwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSA9IHRydWUsIGJvb2wgdmlzaWJsZVRvSGlz
dG9yeUNsaWVudCA9IHRydWUpOwotICAgIHN0YXRpYyBQYXNzUmVmPFdlYlBhZ2VHcm91cD4gY3Jl
YXRlTm9uTnVsbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIgPSBTdHJpbmcoKSwgYm9vbCB2aXNp
YmxlVG9JbmplY3RlZEJ1bmRsZSA9IHRydWUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCA9
IHRydWUpOworICAgIHN0YXRpYyBSZWY8V2ViUGFnZUdyb3VwPiBjcmVhdGVOb25OdWxsKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciA9IFN0cmluZygpLCBib29sIHZpc2libGVUb0luamVjdGVkQnVu
ZGxlID0gdHJ1ZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50ID0gdHJ1ZSk7CiAgICAgc3Rh
dGljIFdlYlBhZ2VHcm91cCogZ2V0KHVpbnQ2NF90IHBhZ2VHcm91cElEKTsKIAogICAgIHZpcnR1
YWwgfldlYlBhZ2VHcm91cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9CYXR0ZXJ5UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9C
YXR0ZXJ5UHJvdmlkZXIuY3BwCmluZGV4IDY0NTA1NzcuLjA1NThkZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQmF0dGVyeVByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0JhdHRlcnlQcm92aWRlci5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgQmF0dGVyeVByb3ZpZGVyOjp+QmF0dGVyeVByb3ZpZGVyKCkKICAgICBXS0JhdHRlcnlN
YW5hZ2VyU2V0UHJvdmlkZXIobV9iYXR0ZXJ5TWFuYWdlci5nZXQoKSwgMCk7CiB9CiAKLVBhc3NS
ZWY8QmF0dGVyeVByb3ZpZGVyPiBCYXR0ZXJ5UHJvdmlkZXI6OmNyZWF0ZShXS0NvbnRleHRSZWYg
Y29udGV4dCkKK1JlZjxCYXR0ZXJ5UHJvdmlkZXI+IEJhdHRlcnlQcm92aWRlcjo6Y3JlYXRlKFdL
Q29udGV4dFJlZiBjb250ZXh0KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCYXR0ZXJ5UHJvdmlkZXIoY29udGV4dCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9CYXR0ZXJ5UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvQmF0dGVyeVByb3ZpZGVyLmgKaW5kZXggYmE4ODZjOS4uOGQyOTcy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9CYXR0ZXJ5UHJvdmlk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0JhdHRlcnlQcm92aWRlci5o
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQmF0dGVyeVByb3Zp
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8QmF0dGVyeVByb3ZpZGVyPiwgcHVibGljIFdlYkNvcmU6
OkJhdHRlcnlQcm92aWRlckVmbENsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QmF0dGVy
eVByb3ZpZGVyKCk7Ci0gICAgc3RhdGljIFBhc3NSZWY8QmF0dGVyeVByb3ZpZGVyPiBjcmVhdGUo
V0tDb250ZXh0UmVmKTsKKyAgICBzdGF0aWMgUmVmPEJhdHRlcnlQcm92aWRlcj4gY3JlYXRlKFdL
Q29udGV4dFJlZik7CiAKICAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKICAgICB2b2lkIHN0b3BV
cGRhdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmgKaW5kZXggZTg4NDIwYS4uMGMzYjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlIDxXZWJD
b3JlL1VzZXJNZWRpYVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5k
ZXggMTVmZGQ2Zi4uNTI2YWM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTQ5LDcg
KzE0OSw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdl
KFJhbmdlKiBmcm9tUmFuZ2UsIFJhbmdlKiB0b1JhbmdlCiAgICAgCiBib29sIFdlYkVkaXRvckNs
aWVudDo6c2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqIHN0eWxlLCBSYW5nZSogcmFu
Z2UpCiB7Ci0gICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IG11dGFibGVTdHlsZShzdHls
ZS0+aXNNdXRhYmxlKCkgPyBzdGF0aWNfY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJj4oKnN0
eWxlKSA6IHN0eWxlLT5tdXRhYmxlQ29weSgpKTsKKyAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gbXV0YWJsZVN0eWxlKHN0eWxlLT5pc011dGFibGUoKSA/IFJlZjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPihzdGF0aWNfY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJj4oKnN0eWxlKSkg
OiBzdHlsZS0+bXV0YWJsZUNvcHkoKSk7CiAgICAgYm9vbCByZXN1bHQgPSBtX3BhZ2UtPmluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkQXBwbHlTdHlsZShtX3BhZ2UsIG11dGFibGVT
dHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpLCByYW5nZSk7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuY3Bw
CmluZGV4IDgwZGQyNjMuLmIyMjQxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgdm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnBhZ2VEZXN0cm95ZWQo
KQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6cmVxdWVz
dFBlcm1pc3Npb24oUGFzc1JlZjxVc2VyTWVkaWFSZXF1ZXN0PiBwclJlcXVlc3QpCit2b2lkIFdl
YlVzZXJNZWRpYUNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oUmVmPFVzZXJNZWRpYVJlcXVlc3Q+
JiYgcHJSZXF1ZXN0KQogewogICAgIFVzZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QgPSBwclJlcXVl
c3QubGVha1JlZigpOwogICAgIG1fcGFnZS51c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIoKS5zdGFydFJlcXVlc3QocmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAppbmRl
eCBmNTcxNjY0Li5lZDZkYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKQEAgLTM0LDcg
KzM0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJv
eWVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWY8V2ViQ29y
ZTo6VXNlck1lZGlhUmVxdWVzdD4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
UGVybWlzc2lvbihSZWY8V2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdD4mJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCYp
IG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZSYgbV9wYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKaW5k
ZXggMWQ1YmUwNC4uMDc2MzM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCkBAIC0zNSw3ICszNSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmPFZpZXdVcGRhdGVEaXNwYXRjaGVy
PiBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6Y3JlYXRlKCkKK1JlZjxWaWV3VXBkYXRlRGlzcGF0Y2hl
cj4gVmlld1VwZGF0ZURpc3BhdGNoZXI6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVmlld1VwZGF0ZURpc3BhdGNoZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuaAppbmRleCBiNTM4
YmJiLi45NzBkZjlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgKQEAgLTMwLDE0ICszMCwxNCBAQAogCiAj
aW5jbHVkZSAiVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1RDU3BpbkxvY2suaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFZpZXdVcGRhdGVEaXNwYXRjaGVyIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxWaWV3VXBk
YXRlRGlzcGF0Y2hlcj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxWaWV3VXBkYXRlRGlzcGF0
Y2hlcj4gY3JlYXRlKCk7CiAgICAgflZpZXdVcGRhdGVEaXNwYXRjaGVyKCk7CiAKICAgICB2b2lk
IGluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViYmU1M2EuLjMzMmZmMTQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxNC0xMi0xMiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBQYXNzUmVmIHdpdGggUmVmL1JlZiYmIGFjcm9zcyB0aGUgYm9hcmQu
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzk1ODc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SZWYuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cGFzc1dpdGhSZWYpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwYXNzV2l0
aFBhc3NSZWYpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Jl
ZkNvdW50ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxh
dGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZVRlc3RWYWx1ZSk6
CisKIDIwMTQtMTItMTIgIEx1Y2FzIEZvcnNjaGxlciAgPGxmb3JzY2hsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFVwZGF0ZSBBcHBsZSBvd25lZCBidWlsZCBzbGF2ZXMgYWZ0ZXIgaW5mcmFzdHJ1
Y3R1cmUgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UmVmLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZi5jcHAKaW5kZXggYzMw
MDlhNC4uMDIyN2I1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UmVmLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWYuY3BwCkBAIC0y
Niw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJSZWZMb2dnZXIu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTk4LDkgKzk3LDkgQEAgVEVTVChXVEZfUmVmLCBBc3Np
Z25tZW50KQogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPFJlZkxvZ2dlcj4g
cGFzc1dpdGhQYXNzUmVmKFBhc3NSZWY8UmVmTG9nZ2VyPiByZWZlcmVuY2UpCitzdGF0aWMgUmVm
PFJlZkxvZ2dlcj4gcGFzc1dpdGhSZWYoUmVmPFJlZkxvZ2dlcj4mJiByZWZlcmVuY2UpCiB7Ci0g
ICAgcmV0dXJuIHJlZmVyZW5jZTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKHJlZmVyZW5jZSk7CiB9
CiAKIHN0YXRpYyBSZWZQdHI8UmVmTG9nZ2VyPiBwYXNzV2l0aFBhc3NSZWZQdHIoUGFzc1JlZlB0
cjxSZWZMb2dnZXI+IHJlZmVyZW5jZSkKQEAgLTExNSw3ICsxMTQsNyBAQCBURVNUKFdURl9SZWYs
IFJldHVyblZhbHVlKQogICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewotICAg
ICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhQYXNzUmVmKGEpKTsKKyAgICAgICAgUmVm
PFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUmVmKFJlZjxSZWZMb2dnZXI+KGEpKSk7CiAgICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnB0cigpKTsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJyZWYo
YSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMTI0LDIwICsxMjMsMjAg
QEAgVEVTVChXVEZfUmVmLCBSZXR1cm5WYWx1ZSkKICAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcHRy
KGEpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8
ICJ8ICI7Ci0gICAgICAgIHB0ciA9IHBhc3NXaXRoUGFzc1JlZihiKTsKKyAgICAgICAgcHRyID0g
cGFzc1dpdGhSZWYoYik7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcHRyLnB0cigpKTsKICAgICAg
ICAgbG9nKCkgPDwgInwgIjsKICAgICB9CiAgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgfCByZWYo
YikgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7
Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFBhc3NSZWYoYSkpOworICAg
ICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoYSkpOwogICAgICAgICBBU1NF
UlRfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIGRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUmVmUHRy
PFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUGFzc1JlZlB0cihwYXNzV2l0aFBhc3NSZWYoYSkpKTsK
KyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUGFzc1JlZlB0cihwYXNzV2l0
aFJlZihhKSkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgfQogICAg
IEFTU0VSVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
QEAgLTE1Miw3ICsxNTEsNyBAQCBURVNUKFdURl9SZWYsIFJldHVyblZhbHVlKQogCiAgICAgewog
ICAgICAgICBSZWY8RGVyaXZlZFJlZkxvZ2dlcj4gZGVyaXZlZFJlZmVyZW5jZShhKTsKLSAgICAg
ICAgUmVmPFJlZkxvZ2dlcj4gYmFzZVJlZmVyZW5jZShwYXNzV2l0aFBhc3NSZWYoZGVyaXZlZFJl
ZmVyZW5jZSkpOworICAgICAgICBSZWY8UmVmTG9nZ2VyPiBiYXNlUmVmZXJlbmNlKHBhc3NXaXRo
UmVmKFJlZjxSZWZMb2dnZXI+KGRlcml2ZWRSZWZlcmVuY2UpKSk7CiAgICAgICAgIEFTU0VSVF9F
USgmYSwgZGVyaXZlZFJlZmVyZW5jZS5wdHIoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgYmFz
ZVJlZmVyZW5jZS5wdHIoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SZWZDb3VudGVyLmNwcAppbmRleCBlMGUxYTI1Li4wMThkN2I5IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcApAQCAtNDAsNyArNDAsNyBAQCBURVNU
KFdURiwgUmVmQ291bnRlcikKICAgICAvLwogICAgIC8vIDEpIFJlZkNvdW50ZXIoc3RkOjpmdW5j
dGlvbjx2b2lkKCk+KTsKICAgICAvLyAyKSB+UmVmQ291bnRlcigpOwotICAgIC8vIDMpIFBhc3NS
ZWY8Q291bnQ+IGNvdW50KCkgY29uc3Q7CisgICAgLy8gMykgUmVmPENvdW50PiBjb3VudCgpIGNv
bnN0OwogICAgIC8vIDQpIHVuc2lnbmVkIHZhbHVlKCkgY29uc3Q7CiAgICAgLy8KICAgICAvLyBX
ZSdsbCB0ZXN0OgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVm
UHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKaW5kZXgg
MjRhZTk0ZC4uZmM5MjI0NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUmVmUHRyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIu
Y3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgVEVTVChXVEZfUmVmUHRyLCBBc3NpZ25QYXNzUmVmVG9S
ZWZQdHIpCiB7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAgICAgewotICAgICAgICBQ
YXNzUmVmPFJlZkxvZ2dlcj4gcGFzc1JlZihhKTsKKyAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcGFz
c1JlZihhKTsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyID0gV1RGOjptb3ZlKHBhc3NS
ZWYpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIHB0ci5yZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggMGFlODVkNy4uNzYwMzg0NCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcApA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGNF
eHByZXNzaW9uTm9kZSYpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxz
ZTsgfQogfTsKIAotc3RhdGljIFBhc3NSZWY8V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZT4gY3Jl
YXRlVGVzdFZhbHVlKCkKK3N0YXRpYyBSZWY8V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZT4gY3Jl
YXRlVGVzdFZhbHVlKCkKIHsKICAgICBhdXRvIG5vZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGN1
bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKICAgICByZXR1cm4gV2ViQ29yZTo6Q2FsY3VsYXRp
b25WYWx1ZTo6Y3JlYXRlKFdURjo6bW92ZShub2RlKSwgV2ViQ29yZTo6Q2FsY3VsYXRpb25SYW5n
ZUFsbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243220</attachid>
            <date>2014-12-12 14:57:34 -0800</date>
            <delta_ts>2014-12-14 00:20:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139587-for-review.diff</filename>
            <type>text/plain</type>
            <size>610613</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGYwYWRlYjEuLjY1MWRlY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTEyLTEyICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFBhc3NSZWYgd2l0aCBSZWYv
UmVmJiYgYWNyb3NzIHRoZSBib2FyZC4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEz
OTU4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHJ1bnRpbWUvSWRlbnRpZmllci5jcHA6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmFkZCk6
CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmFkZDgpOgorICAgICAgICAqIHJ1bnRpbWUvSWRl
bnRpZmllci5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjphZGQpOgorICAgICAgICAqIHJ1
bnRpbWUvSWRlbnRpZmllcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRk
KToKKwogMjAxNC0xMi0xMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIEZpbmFsIGNsZWFuIHVwIE93blB0ciBpbiBKU0MgLSBydW50aW1lLCBmdGws
IGFuZCB0b29sIGRpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXIuY3BwCmluZGV4IDY3NzdmMTYuLmUwODE2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIFdU
Rjo6VGhyZWFkU3BlY2lmaWM7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1QYXNzUmVmPFN0cmluZ0lt
cGw+IElkZW50aWZpZXI6OmFkZChWTSogdm0sIGNvbnN0IGNoYXIqIGMpCitSZWY8U3RyaW5nSW1w
bD4gSWRlbnRpZmllcjo6YWRkKFZNKiB2bSwgY29uc3QgY2hhciogYykKIHsKICAgICBBU1NFUlQo
Yyk7CiAgICAgQVNTRVJUKGNbMF0pOwpAQCAtNDgsMTIgKzQ4LDEyIEBAIFBhc3NSZWY8U3RyaW5n
SW1wbD4gSWRlbnRpZmllcjo6YWRkKFZNKiB2bSwgY29uc3QgY2hhciogYykKICAgICByZXR1cm4g
KkF0b21pY1N0cmluZzo6YWRkKGMpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IElkZW50aWZp
ZXI6OmFkZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGMpCitSZWY8U3RyaW5nSW1wbD4g
SWRlbnRpZmllcjo6YWRkKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogYykKIHsKICAgICBy
ZXR1cm4gYWRkKCZleGVjLT52bSgpLCBjKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBJZGVu
dGlmaWVyOjphZGQ4KFZNKiB2bSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpCitSZWY8U3Ry
aW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkOChWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVu
Z3RoKQogewogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICBVQ2hhciBjID0gc1swXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBkOWZlMjBk
Li4wMTMyZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5o
CkBAIC05Nyw4ICs5Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBT
dHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiA6OmVxdWFsKGEsIGIp
OyB9CiAKICAgICAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkKFZNKiwgY29u
c3QgY2hhciopOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0lt
cGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGQoVk0qLCBjb25zdCBjaGFyKik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwgY29uc3Qg
Y2hhciopOwogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKQEAgLTExMSwx
MiArMTExLDEyIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSWRlbnRp
ZmllciYgYSwgY29uc3QgSWRlbnRpZmllciYgYikgeyByZXR1cm4gYS5tX3N0cmluZy5pbXBsKCkg
PT0gYi5tX3N0cmluZy5pbXBsKCk7IH0KICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBJZGVu
dGlmaWVyJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gZXF1YWwoYS5tX3N0cmluZy5pbXBs
KCksIGIpOyB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIFBhc3NSZWY8U3Ry
aW5nSW1wbD4gYWRkKFZNKiwgY29uc3QgVCosIGludCBsZW5ndGgpOwotICAgIHN0YXRpYyBQYXNz
UmVmPFN0cmluZ0ltcGw+IGFkZDgoVk0qLCBjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChWTSosIGNv
bnN0IFQqLCBpbnQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZDgoVk0q
LCBjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGNhblVzZVNpbmdsZUNoYXJhY3RlclN0cmluZyhUKTsK
IAotICAgIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBTdHJpbmdJ
bXBsKik7Ci0gICAgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkKFZNKiwgU3RyaW5nSW1w
bCopOworICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIFN0cmluZ0lt
cGwqKTsKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChWTSosIFN0cmluZ0ltcGwqKTsK
IAogI2lmbmRlZiBOREVCVUcKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjaGVj
a0N1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShFeGVjU3RhdGUqKTsKQEAgLTEzOSw3ICsxMzksNyBA
QCB0ZW1wbGF0ZSA8PiBBTFdBWVNfSU5MSU5FIGJvb2wgSWRlbnRpZmllcjo6Y2FuVXNlU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKFVDaGFyIGMpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotUGFz
c1JlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVyOjphZGQoVk0qIHZtLCBjb25zdCBUKiBzLCBpbnQg
bGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZChWTSogdm0sIGNvbnN0IFQq
IHMsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKGxlbmd0aCA9PSAxKSB7CiAgICAgICAgIFQgYyA9
IHNbMF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlm
aWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklu
bGluZXMuaAppbmRleCBlZmMzZDNjLi43NDcyZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBp
bmxpbmUgSWRlbnRpZmllcjo6SWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc3RyaW5nKQogI2VuZGlmCiB9CiAKLWlubGluZSBQYXNzUmVmPFN0cmluZ0ltcGw+
IElkZW50aWZpZXI6OmFkZChFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0ltcGwqIHIpCitpbmxpbmUg
UmVmPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6OmFkZChFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ0lt
cGwqIHIpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1Rh
YmxlKGV4ZWMpOwogI2VuZGlmCiAgICAgcmV0dXJuICpBdG9taWNTdHJpbmc6OmFkZFdpdGhTdHJp
bmdUYWJsZVByb3ZpZGVyKCpleGVjLCByKTsKIH0KLWlubGluZSBQYXNzUmVmPFN0cmluZ0ltcGw+
IElkZW50aWZpZXI6OmFkZChWTSogdm0sIFN0cmluZ0ltcGwqIHIpCitpbmxpbmUgUmVmPFN0cmlu
Z0ltcGw+IElkZW50aWZpZXI6OmFkZChWTSogdm0sIFN0cmluZ0ltcGwqIHIpCiB7CiAjaWZuZGVm
IE5ERUJVRwogICAgIGNoZWNrQ3VycmVudEF0b21pY1N0cmluZ1RhYmxlKHZtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYzdi
MmY2ZS4uZTVmNmM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTcgQEAKKzIwMTQtMTItMTIgIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgUGFzc1JlZiB3aXRo
IFJlZi9SZWYmJiBhY3Jvc3MgdGhlIGJvYXJkLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTM5NTg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEtpbGwgdGhlIFBhc3NSZWYgY2xhc3MgYW5kIHJlcGxhY2UgaXQgYnkgUmVmL1JlZiYmLgor
ICAgICAgICBVc2FnZSBpcyBzaW1wbGU6CisKKyAgICAgICAgICAgIC0gRm9yIGxvY2FscyBhbmQg
bWVtYmVycywga2VlcCB1c2luZyBSZWY8VD4uCisgICAgICAgICAgICAtIEZvciByZXR1cm4gdHlw
ZXMsIHVzZSBSZWY8VD4uCisgICAgICAgICAgICAtIEZvciAob3duZXJzaGlwLXRyYW5zZmVycmlu
ZykgYXJndW1lbnRzLCB1c2UgUmVmPFQ+JiYuCisKKyAgICAgICAgV2hlbiBwYXNzaW5nIHRvIGEg
UmVmJiYsIHVzZSBXVEY6Om1vdmUoKSB0byBtb2JpbGl6ZSB0aGUgdmFsdWUKKyAgICAgICAgYXQg
dGhlIGNhbGwgc2l0ZSwgZS5nOgorCisgICAgICAgICAgICB2b2lkIG15RnVuY3Rpb24oUmVmPEZv
bz4mJik7CisKKyAgICAgICAgICAgIFJlZjxGb28+IG15Rm9vKEZvbzo6Y3JlYXRlKCkpOworICAg
ICAgICAgICAgbXlGdW5jdGlvbihXVEY6Om1vdmUobXlGb28pKTsKKyAgICAgICAgICAgIC8vICdt
eUZvbycgaXMgaW52YWxpZCBmcm9tIHRoaXMgcG9pbnQgZm9yd2FyZC4KKworICAgICAgICBBcyB5
b3UgY2FuIHNlZSwgaXQgd29ya3MgYSBsb3QgbGlrZSBQYXNzUmVmUHRyLCBidXQgdW5saWtlIFBh
c3NSZWZQdHIKKyAgICAgICAgaXQgd29uJ3Qgc3VycHJpc2UgeW91IGJ5IGJlY29taW5nIG51bGwg
KnVubGVzcyogeW91IFdURjo6bW92ZSBpdC4KKworICAgICAgICBJJ3ZlIGFsc28gYWRkZWQgYSBS
ZWY6OmNvcHlSZWYoKSBmb3IgaW5zdGFuY2VzIHdoZXJlIHlvdSB3YW50IHRvCisgICAgICAgIHJl
dHVybiBhIFJlZiAqd2l0aG91dCogdHJhbnNmZXJyaW5nIG93bmVyc2hpcCwgZS5nIGNvZGUgbGlr
ZToKKworICAgICAgICAgICAgUmVmPEZvbz4gZm9vKCkgeyByZXR1cm4gbV9mb287IH0KKworICAg
ICAgICAuLi4gbm93IGJlY29tZXMgLi4uCisKKyAgICAgICAgICAgIFJlZjxGb28+IGZvbygpIHsg
cmV0dXJuIG1fZm9vLmNvcHlSZWYoKTsgfQorCisgICAgICAgIFRoaXMgbWFrZXMgaXQgZXhwbGlj
aXQgdGhhdCBhIHJlZmNvdW50IGJ1bXAgd2lsbCBvY2N1ci4KKworICAgICAgICBGaW5hbGx5LCBk
byBub3RlIHRoYXQgdW5saWtlIGxhc3QgeWVhcidzIFBhc3NSZWYsIFJlZiYmIGRvZXMgbm90Cisg
ICAgICAgIHJlcXVpcmUgeW91IHRvIG1vdmUgaXQgdG8gYXZvaWQgbGVha2luZzsgaXQgd2lsbCBj
bGVhbiBpdHNlbGYgdXAuCisKKyAgICAgICAgKiB3dGYvUGFzc1JlZi5oOgorICAgICAgICAoV1RG
OjphZG9wdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UGFzc1JlZjxUPjo6UGFzc1JlZik6
IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBhc3NSZWY8VD46On5QYXNzUmVmKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6UGFzc1JlZjxUPjo6Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
UGFzc1JlZjxUPjo6cHRyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UGFzc1JlZjxUPjo6bGVh
a1JlZik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmFkb3B0UmVmKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6Y3JlYXRlUmVmQ291bnRlZCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1Bhc3NS
ZWZQdHIuaDoKKyAgICAgICAgKFdURjo6UGFzc1JlZlB0cjo6UGFzc1JlZlB0cik6CisgICAgICAg
ICogd3RmL1JlZi5oOgorICAgICAgICAoV1RGOjphZG9wdGVkKToKKyAgICAgICAgKFdURjo6UmVm
Ojp+UmVmKToKKyAgICAgICAgKFdURjo6UmVmOjpSZWYpOgorICAgICAgICAoV1RGOjpSZWY6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlJlZjo6b3BlcmF0b3ItPik6CisgICAgICAgIChXVEY6
OlJlZjo6cHRyKToKKyAgICAgICAgKFdURjo6UmVmOjpnZXQpOgorICAgICAgICAoV1RGOjpSZWY6
Om9wZXJhdG9yIFQmKToKKyAgICAgICAgKFdURjo6UmVmOjpvcGVyYXRvciBjb25zdCBUJik6Cisg
ICAgICAgIChXVEY6OlJlZjxUPjo6cmVwbGFjZSk6CisgICAgICAgIChXVEY6OmFkb3B0UmVmKToK
KyAgICAgICAgKiB3dGYvUmVmQ291bnRlci5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpj
b3VudCk6CisgICAgICAgICogd3RmL1JlZlB0ci5oOgorICAgICAgICAoV1RGOjpSZWZQdHI6OnJl
bGVhc2VOb25OdWxsKToKKyAgICAgICAgKFdURjo6UmVmUHRyPFQ+OjpSZWZQdHIpOgorICAgICAg
ICAoV1RGOjo9KToKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwOgorICAgICAg
ICAoV1RGOjphZGRUb1N0cmluZ1RhYmxlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjph
ZGQpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmFkZEZyb21MaXRlcmFsRGF0YSk6Cisg
ICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UpOgorICAgICAgICAqIHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgor
ICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCk6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkpOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6cmVhbGxvY2F0ZUludGVybmFsKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
cmVhbGxvY2F0ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZUludGVybmFsKToK
KyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6U3RyaW5n
SW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpz
dWJzdHJpbmcpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpsb3dlcik6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OnVwcGVyKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmlsbCk6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZvbGRDYXNlKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6Y29udmVydFRvQVNDSUlMb3dlcmNhc2UpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
c3RyaXBXaGl0ZVNwYWNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFj
dGVycyk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3Rl
cnNUb1NwYWNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c2ltcGxpZnlXaGl0ZVNwYWNl
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6cmVwbGFjZSk6CisgICAgICAgIChXVEY6OlN0
cmluZ0ltcGw6OmFkb3B0KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKToKKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRl
U3Vic3RyaW5nU2hhcmluZ0ltcGw4KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRl
U3Vic3RyaW5nU2hhcmluZ0ltcGwpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVG
cm9tTGl0ZXJhbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNyZWF0ZUVtcHR5VW5pcXVl
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6YWRvcHQpOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpyZXBsYWNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y29uc3RydWN0SW50
ZXJuYWw8TENoYXI+KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJu
YWw8VUNoYXI+KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6aXNvbGF0ZWRDb3B5KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpTdHJp
bmcpOgorCiAyMDE0LTEyLTEwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUGxlYXNlIGRpc2FibGUgdGhlIHdlYmtpdEZpcnN0VmVyc2lvbldpdGhJbml0Q29u
c3RydWN0b3JTdXBwb3J0IGNoZWNrIG9uIEFwcGxlIFRWCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QYXNzUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYXNzUmVmLmgKaW5kZXggMjZkMTRkNC4u
MzFjNDg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGFzc1JlZi5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1Bhc3NSZWYuaApAQCAtMSwxNTQgKzEgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8K
LQotI2lmbmRlZiBXVEZfUGFzc1JlZl9oCi0jZGVmaW5lIFdURl9QYXNzUmVmX2gKLQotI2luY2x1
ZGUgIkFzc2VydGlvbnMuaCIKLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPHV0aWxpdHk+
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVm
OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIFJlZjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cjsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gUGFzc1JlZjxUPiBhZG9wdFJlZihUJik7Ci0KLWlubGluZSB2
b2lkIGFkb3B0ZWQoY29uc3Qgdm9pZCopIHsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFz
cyBQYXNzUmVmIHsKLXB1YmxpYzoKLSAgICBQYXNzUmVmKFQmKTsKLSAgICBQYXNzUmVmKFBhc3NS
ZWYmJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUGFzc1JlZihjb25zdCBSZWY8VT4mKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNzUmVmKFBhc3NSZWY8VT4pOwotCi0gICAgY29u
c3QgVCYgZ2V0KCkgY29uc3Q7Ci0gICAgVCYgZ2V0KCk7Ci0KLSAgICBjb25zdCBUKiBwdHIoKSBj
b25zdDsKLSAgICBUKiBwdHIoKTsKLQotICAgIFQmIGxlYWtSZWYoKSBXQVJOX1VOVVNFRF9SRVRV
Uk47Ci0KLSAgICB+UGFzc1JlZigpOwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBQYXNzUmVmIGFk
b3B0UmVmPFQ+KFQmKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBjbGFzcyBQ
YXNzUmVmOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBjbGFzcyBQYXNzUmVmUHRy
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBjbGFzcyBSZWY7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gZnJpZW5kIGNsYXNzIFJlZlB0cjsKLQotICAgIGVudW0gQWRvcHRUYWcg
eyBBZG9wdCB9OwotICAgIFBhc3NSZWYoVCYsIEFkb3B0VGFnKTsKLQotICAgIFQqIG1fcHRyOwot
ICAgIGJvb2wgbV9nYXZlVXBSZWZlcmVuY2U7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgUGFzc1JlZjxUPjo6UGFzc1JlZihUJiByZWZlcmVuY2UpCi0gICAgOiBtX3B0cigmcmVm
ZXJlbmNlKQotewotICAgIG1fcHRyLT5yZWYoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIFBhc3NSZWY8VD46OlBhc3NSZWYoUGFzc1JlZiYmIG90aGVyKQotICAgIDogbV9wdHIo
Jm90aGVyLmxlYWtSZWYoKSkKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8
dHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWY8VD46OlBhc3NSZWYoUGFzc1JlZjxVPiBvdGhlcikK
LSAgICA6IG1fcHRyKCZvdGhlci5sZWFrUmVmKCkpCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmPFQ+OjpQYXNzUmVmKGNvbnN0
IFJlZjxVPiYgb3RoZXIpCi0gICAgOiBtX3B0cihzdGF0aWNfY2FzdDxUKj4oY29uc3RfY2FzdDxV
Kj4ob3RoZXIucHRyKCkpKSkKLXsKLSAgICBBU1NFUlQobV9wdHIpOwotICAgIG1fcHRyLT5yZWYo
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gUGFzc1JlZjxUPjo6flBhc3NSZWYoKQotewot
ICAgIGlmIChtX3B0cikKLSAgICAgICAgbV9wdHItPmRlcmVmKCk7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBjb25zdCBUJiBQYXNzUmVmPFQ+OjpnZXQoKSBjb25zdAotewotICAg
IEFTU0VSVChtX3B0cik7Ci0gICAgcmV0dXJuICptX3B0cjsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIFQmIFBhc3NSZWY8VD46OmdldCgpCi17Ci0gICAgQVNTRVJUKG1fcHRyKTsK
LSAgICByZXR1cm4gKm1fcHRyOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdCBUKiBQ
YXNzUmVmPFQ+OjpwdHIoKSBjb25zdAotewotICAgIEFTU0VSVChtX3B0cik7Ci0gICAgcmV0dXJu
IG1fcHRyOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiBQYXNzUmVmPFQ+OjpwdHIoKQot
ewotICAgIEFTU0VSVChtX3B0cik7Ci0gICAgcmV0dXJuIG1fcHRyOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgVCYgUGFzc1JlZjxUPjo6bGVha1JlZigpCi17Ci0gICAgQVNTRVJU
KG1fcHRyKTsKLSAgICBUKiBsZWFrZWRQdHIgPSBtX3B0cjsKLSAgICBtX3B0ciA9IG51bGxwdHI7
Ci0gICAgcmV0dXJuICpsZWFrZWRQdHI7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBQYXNzUmVmPFQ+OjpQYXNzUmVmKFQmIHJlZmVyZW5jZSwgQWRvcHRUYWcpCi0gICAgOiBtX3B0
cigmcmVmZXJlbmNlKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1Jl
ZjxUPiBhZG9wdFJlZihUJiByZWZlcmVuY2UpCi17Ci0gICAgYWRvcHRlZCgmcmVmZXJlbmNlKTsK
LSAgICByZXR1cm4gUGFzc1JlZjxUPihyZWZlcmVuY2UsIFBhc3NSZWY8VD46OkFkb3B0KTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gaW5saW5lIFBhc3NSZWY8
VD4gY3JlYXRlUmVmQ291bnRlZChBcmdzJiYuLi4gYXJncykKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXVEYKLQotdXNpbmcgV1RGOjpQYXNzUmVmOwotdXNpbmcgV1RGOjphZG9wdFJlZjsKLXVz
aW5nIFdURjo6Y3JlYXRlUmVmQ291bnRlZDsKLQotI2VuZGlmIC8vIFdURl9QYXNzUmVmX2gKKy8v
IERlbGV0ZSBtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWZQdHIuaCBiL1Nv
dXJjZS9XVEYvd3RmL1Bhc3NSZWZQdHIuaAppbmRleCA2ZjgwNGEwLi5kZDM3OGUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYXNzUmVmUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvUGFz
c1JlZlB0ci5oCkBAIC0yMiwxMCArMjIsMTIgQEAKICNkZWZpbmUgV1RGX1Bhc3NSZWZQdHJfaAog
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmLmg+CisjaW5j
bHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIFJlZlB0cjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNz
UmVmUHRyOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFBhc3NSZWZQdHI8VD4gYWRvcHRSZWYo
VCopOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQUxXQVlTX0lOTElORSB2b2lkIHJlZklm
Tm90TnVsbChUKiBwdHIpCkBAIC01Niw3ICs1OCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICBBTFdBWVNfSU5MSU5FIH5QYXNzUmVmUHRyKCkgeyBkZXJlZklmTm90TnVsbChtX3B0cik7IH0K
IAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNzUmVmUHRyKGNvbnN0IFJlZlB0cjxV
PiYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNzUmVmUHRyKFBhc3NSZWY8VT4g
cmVmZXJlbmNlKSA6IG1fcHRyKCZyZWZlcmVuY2UubGVha1JlZigpKSB7IH0KKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gUGFzc1JlZlB0cihSZWY8VT4mJiByZWZlcmVuY2UpIDogbV9wdHIo
JnJlZmVyZW5jZS5sZWFrUmVmKCkpIHsgfQogCiAgICAgICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHRyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZi5oIGIvU291cmNl
L1dURi93dGYvUmVmLmgKaW5kZXggNjU0ODViMS4uNTNjYzA4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUmVmLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNTQgKzI2LDEwNyBA
QAogI2lmbmRlZiBXVEZfUmVmX2gKICNkZWZpbmUgV1RGX1JlZl9oCiAKKyNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIFBhc3NSZWY7CitpbmxpbmUgdm9pZCBhZG9wdGVkKGNvbnN0IHZvaWQqKSB7IH0KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVmPFQ+
IGFkb3B0UmVmKFQmKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZWYpCiBwdWJsaWM6Ci0gICAgUmVmKFQmIG9iamVjdCkgOiBt
X3B0cigmb2JqZWN0KSB7IG1fcHRyLT5yZWYoKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IFJlZihQYXNzUmVmPFU+IHJlZmVyZW5jZSkgOiBtX3B0cigmcmVmZXJlbmNlLmxlYWtSZWYoKSkg
eyB9CisgICAgflJlZigpCisgICAgeworICAgICAgICBpZiAobV9wdHIpCisgICAgICAgICAgICBt
X3B0ci0+ZGVyZWYoKTsKKyAgICB9CisKKyAgICBSZWYoVCYgb2JqZWN0KQorICAgICAgICA6IG1f
cHRyKCZvYmplY3QpCisgICAgeworICAgICAgICBtX3B0ci0+cmVmKCk7CisgICAgfQorCisgICAg
UmVmKFJlZiYmIG90aGVyKQorICAgICAgICA6IG1fcHRyKCZvdGhlci5sZWFrUmVmKCkpCisgICAg
eworICAgIH0KIAotICAgIH5SZWYoKSB7IG1fcHRyLT5kZXJlZigpOyB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4KKyAgICBSZWYoUmVmPFU+JiYgb3RoZXIpCisgICAgICAgIDogbV9wdHIoJm90
aGVyLmxlYWtSZWYoKSkKKyAgICB7CisgICAgfQogCiAgICAgUmVmJiBvcGVyYXRvcj0oVCYgb2Jq
ZWN0KQogICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsKICAgICAgICAgb2JqZWN0LnJlZigp
OwogICAgICAgICBtX3B0ci0+ZGVyZWYoKTsKICAgICAgICAgbV9wdHIgPSAmb2JqZWN0OwogICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZiYg
b3BlcmF0b3I9KFBhc3NSZWY8VT4gcmVmZXJlbmNlKQorCisgICAgUmVmJiBvcGVyYXRvcj0oUmVm
JiYgcmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsKKyAgICAgICAgbV9w
dHItPmRlcmVmKCk7CisgICAgICAgIG1fcHRyID0gJnJlZmVyZW5jZS5sZWFrUmVmKCk7CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWYm
IG9wZXJhdG9yPShSZWY8VT4mJiByZWZlcmVuY2UpCiAgICAgeworICAgICAgICBBU1NFUlQobV9w
dHIpOwogICAgICAgICBtX3B0ci0+ZGVyZWYoKTsKICAgICAgICAgbV9wdHIgPSAmcmVmZXJlbmNl
LmxlYWtSZWYoKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIGNvbnN0IFQq
IG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotICAgIFQqIG9wZXJhdG9yLT4o
KSB7IHJldHVybiBtX3B0cjsgfQorICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IEFT
U0VSVChtX3B0cik7IHJldHVybiBtX3B0cjsgfQorICAgIFQqIG9wZXJhdG9yLT4oKSB7IEFTU0VS
VChtX3B0cik7IHJldHVybiBtX3B0cjsgfQorCisgICAgY29uc3QgVCogcHRyKCkgY29uc3QgeyBB
U1NFUlQobV9wdHIpOyByZXR1cm4gbV9wdHI7IH0KKyAgICBUKiBwdHIoKSB7IEFTU0VSVChtX3B0
cik7IHJldHVybiBtX3B0cjsgfQorCisgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQo
bV9wdHIpOyByZXR1cm4gKm1fcHRyOyB9CisgICAgVCYgZ2V0KCkgeyBBU1NFUlQobV9wdHIpOyBy
ZXR1cm4gKm1fcHRyOyB9CiAKLSAgICBjb25zdCBUKiBwdHIoKSBjb25zdCB7IHJldHVybiBtX3B0
cjsgfQotICAgIFQqIHB0cigpIHsgcmV0dXJuIG1fcHRyOyB9CisgICAgb3BlcmF0b3IgVCYoKSB7
IEFTU0VSVChtX3B0cik7IHJldHVybiAqbV9wdHI7IH0KKyAgICBvcGVyYXRvciBjb25zdCBUJigp
IGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQogCi0gICAgY29uc3QgVCYg
Z2V0KCkgY29uc3QgeyByZXR1cm4gKm1fcHRyOyB9Ci0gICAgVCYgZ2V0KCkgeyByZXR1cm4gKm1f
cHRyOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmPFQ+IHJlcGxhY2UoUmVmPFU+JiYp
IFdBUk5fVU5VU0VEX1JFVFVSTjsKIAotICAgIG9wZXJhdG9yIFQmKCkgeyByZXR1cm4gKm1fcHRy
OyB9Ci0gICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7IHJldHVybiAqbV9wdHI7IH0KKyAg
ICBSZWYgY29weVJlZigpIFdBUk5fVU5VU0VEX1JFVFVSTgorICAgIHsKKyAgICAgICAgcmV0dXJu
IFJlZigqbV9wdHIpOworICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFBhc3NSZWY8
VD4gcmVwbGFjZShQYXNzUmVmPFU+KSBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAgVCYgbGVha1Jl
ZigpIFdBUk5fVU5VU0VEX1JFVFVSTgorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHRyKTsKKyAg
ICAgICAgVCogbW92ZWRQdHIgPSBtX3B0cjsKKyAgICAgICAgbV9wdHIgPSBudWxscHRyOworICAg
ICAgICByZXR1cm4gKm1vdmVkUHRyOworICAgIH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgUmVm
IGFkb3B0UmVmPFQ+KFQmKTsKKworICAgIGVudW0gQWRvcHRUYWcgeyBBZG9wdCB9OworICAgIFJl
ZihUJiBvYmplY3QsIEFkb3B0VGFnKQorICAgICAgICA6IG1fcHRyKCZvYmplY3QpCisgICAgewor
ICAgIH0KKwogICAgIFQqIG1fcHRyOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxh
dGU8dHlwZW5hbWUgVT4gaW5saW5lIFBhc3NSZWY8VD4gUmVmPFQ+OjpyZXBsYWNlKFBhc3NSZWY8
VT4gcmVmZXJlbmNlKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4g
aW5saW5lIFJlZjxUPiBSZWY8VD46OnJlcGxhY2UoUmVmPFU+JiYgcmVmZXJlbmNlKQogewogICAg
IGF1dG8gb2xkUmVmZXJlbmNlID0gYWRvcHRSZWYoKm1fcHRyKTsKICAgICBtX3B0ciA9ICZyZWZl
cmVuY2UubGVha1JlZigpOwpAQCAtODYsNiArMTM5LDE0IEBAIHN0cnVjdCBHZXRQdHJIZWxwZXI8
UmVmPFQ+PiB7CiAgICAgc3RhdGljIFQqIGdldFB0cihjb25zdCBSZWY8VD4mIHApIHsgcmV0dXJu
IGNvbnN0X2Nhc3Q8VCo+KHAucHRyKCkpOyB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
aW5saW5lIFJlZjxUPiBhZG9wdFJlZihUJiByZWZlcmVuY2UpCit7CisgICAgYWRvcHRlZCgmcmVm
ZXJlbmNlKTsKKyAgICByZXR1cm4gUmVmPFQ+KHJlZmVyZW5jZSwgUmVmPFQ+OjpBZG9wdCk7CisK
K30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6UmVmOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUmVmQ291bnRlci5oIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlci5o
CmluZGV4IGZiZmRmZmUuLmExMDY5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZkNv
dW50ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmgKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWZDb3VudGVyKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiA9IFtdKCkgeyB9KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflJlZkNvdW50
ZXIoKTsKIAotICAgIFBhc3NSZWY8Q291bnQ+IGNvdW50KCkgY29uc3QKKyAgICBSZWY8Q291bnQ+
IGNvdW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAqbV9jb3VudDsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0
ci5oCmluZGV4IDVkZTVjNzMuLjc2ZDYxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Jl
ZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCkBAIC01MCw3ICs1MCw3IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICAvLyBTZWUgY29tbWVudHMgaW4gUGFzc1JlZlB0ci5oIGZv
ciBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyB0YWtlcyBhIGNvbnN0IHJlZmVyZW5jZS4KICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyKGNvbnN0IFBhc3NSZWZQdHI8VT4mKTsK
IAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHIoUGFzc1JlZjxVPiYmKTsKKyAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyKFJlZjxVPiYmKTsKIAogICAgICAgICAv
LyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBh
bmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KICAgICAgICAgUmVmUHRyKEhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpIDogbV9wdHIoaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpIHsgfQpAQCAt
NjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgY2xl
YXIoKTsKICAgICAgICAgUGFzc1JlZlB0cjxUPiByZWxlYXNlKCkgeyBQYXNzUmVmUHRyPFQ+IHRt
cCA9IGFkb3B0UmVmKG1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9Ci0gICAg
ICAgIFBhc3NSZWY8VD4gcmVsZWFzZU5vbk51bGwoKSB7IEFTU0VSVChtX3B0cik7IFBhc3NSZWY8
VD4gdG1wID0gYWRvcHRSZWYoKm1fcHRyKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9
CisgICAgICAgIFJlZjxUPiByZWxlYXNlTm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsgUmVmPFQ+
IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9CiAK
ICAgICAgICAgVCogbGVha1JlZigpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIApAQCAtODIsNyArODIs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRy
JiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOwogICAgICAgICBSZWZQdHImIG9wZXJh
dG9yPShSZWZQdHImJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3Bl
cmF0b3I9KFJlZlB0cjxVPiYmKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRy
JiBvcGVyYXRvcj0oUGFzc1JlZjxVPik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJl
ZlB0ciYgb3BlcmF0b3I9KFJlZjxVPiYmKTsKIAogICAgICAgICB2b2lkIHN3YXAoUmVmUHRyJik7
CiAKQEAgLTk3LDcgKzk3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgewogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8
VD46OlJlZlB0cihQYXNzUmVmPFU+JiYgcmVmZXJlbmNlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD46OlJlZlB0cihSZWY8VT4m
JiByZWZlcmVuY2UpCiAgICAgICAgIDogbV9wdHIoJnJlZmVyZW5jZS5sZWFrUmVmKCkpCiAgICAg
ewogICAgIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5
cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KFBhc3NSZWY8
VT4gcmVmZXJlbmNlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1l
IFU+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KFJlZjxVPiYmIHJlZmVy
ZW5jZSkKICAgICB7CiAgICAgICAgIFJlZlB0ciBwdHIgPSBXVEY6Om1vdmUocmVmZXJlbmNlKTsK
ICAgICAgICAgc3dhcChwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4
IDZiMjc2MGQuLjA2MjkwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAg
LTczLDcgKzczLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSGFzaFNldDxTdHJpbmdJbXBsKj4m
IHN0cmluZ1RhYmxlKCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRy
YW5zbGF0b3I+Ci1zdGF0aWMgaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkVG9TdHJpbmdU
YWJsZShjb25zdCBUJiB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IGFkZFRv
U3RyaW5nVGFibGUoY29uc3QgVCYgdmFsdWUpCiB7CiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2Nr
ZXIgbG9ja2VyOwogCkBAIC04MSw3ICs4MSw5IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZjxTdHJp
bmdJbXBsPiBhZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQogCiAgICAgLy8gSWYgdGhl
IHN0cmluZyBpcyBuZXdseS10cmFuc2xhdGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAg
ICAgLy8gVGhlIGJvb2xlYW4gaW4gdGhlIHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KLSAg
ICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnkgPyBhZG9wdFJlZigqKmFkZFJlc3VsdC5pdGVy
YXRvcikgOiAqKmFkZFJlc3VsdC5pdGVyYXRvcjsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50
cnkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZigqKmFkZFJlc3VsdC5pdGVyYXRvcik7CisgICAg
cmV0dXJuICoqYWRkUmVzdWx0Lml0ZXJhdG9yOwogfQogCiBzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0
b3IgewpAQCAtMjQ3LDcgKzI0OSw3IEBAIFJlZlB0cjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6
OmFkZChjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiBhZGRUb1N0
cmluZ1RhYmxlPFVDaGFyQnVmZmVyLCBVQ2hhckJ1ZmZlclRyYW5zbGF0b3I+KGJ1ZmZlcik7CiB9
CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nOjphZGQoY29uc3QgVUNoYXIqIHMs
IHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKQorUmVmPFN0cmluZ0ltcGw+
IEF0b21pY1N0cmluZzo6YWRkKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2ln
bmVkIGV4aXN0aW5nSGFzaCkKIHsKICAgICBBU1NFUlQocyk7CiAgICAgQVNTRVJUKGV4aXN0aW5n
SGFzaCk7CkBAIC0zODcsNyArMzg5LDcgQEAgUmVmUHRyPFN0cmluZ0ltcGw+IEF0b21pY1N0cmlu
Zzo6YWRkKGNvbnN0IExDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIGFkZFRv
U3RyaW5nVGFibGU8TENoYXJCdWZmZXIsIExDaGFyQnVmZmVyVHJhbnNsYXRvcj4oYnVmZmVyKTsK
IH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZEZyb21MaXRlcmFsRGF0
YShjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitSZWY8U3RyaW5nSW1w
bD4gQXRvbWljU3RyaW5nOjphZGRGcm9tTGl0ZXJhbERhdGEoY29uc3QgY2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIEFTU0VSVChjaGFyYWN0ZXJzKTsKICAgICBBU1NF
UlQobGVuZ3RoKTsKQEAgLTM5Niw3ICszOTgsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IEF0b21p
Y1N0cmluZzo6YWRkRnJvbUxpdGVyYWxEYXRhKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVucwog
ICAgIHJldHVybiBhZGRUb1N0cmluZ1RhYmxlPENoYXJCdWZmZXIsIENoYXJCdWZmZXJGcm9tTGl0
ZXJhbERhdGFUcmFuc2xhdG9yPihidWZmZXIpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IEF0
b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQorUmVmPFN0cmluZ0lt
cGw+IEF0b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQogewogICAg
IGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5
KCk7CkBAIC00MTQsNyArNDE2LDcgQEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6
OmFkZFNsb3dDYXNlKFN0cmluZ0ltcGwmIHN0cmluZykKICAgICByZXR1cm4gKiphZGRSZXN1bHQu
aXRlcmF0b3I7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nOjphZGRTbG93
Q2FzZShBdG9taWNTdHJpbmdUYWJsZSYgc3RyaW5nVGFibGUsIFN0cmluZ0ltcGwmIHN0cmluZykK
K1JlZjxTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmc6OmFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1Rh
YmxlJiBzdHJpbmdUYWJsZSwgU3RyaW5nSW1wbCYgc3RyaW5nKQogewogICAgIGlmICghc3RyaW5n
Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCAyMTlmOGI4OWUuLmE3OTA3NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuaApAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAg
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFy
KiBzLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGFkZChyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4ocyksIGxlbmd0aCk7IH07Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRp
YyBQYXNzUmVmPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwg
dW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2ln
bmVkIGV4aXN0aW5nSGFzaCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWZQ
dHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmUHRy
PFN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiBzdHJpbmcpCkBAIC0xODksNyArMTg5LDcgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZSgqc3RyaW5nKTsK
ICAgICB9Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0lt
cGw+IGFkZEZyb21MaXRlcmFsRGF0YShjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGFkZEZyb21MaXRlcmFsRGF0YShjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpOwogI2lmIFVTRShDRikKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZlB0
cjxTdHJpbmdJbXBsPiBhZGQoQ0ZTdHJpbmdSZWYpOwogI2VuZGlmCkBAIC0yMTQsOCArMjE0LDgg
QEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX3N0cmluZzsKICAgICAKLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5n
SW1wbCYpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJ
bXBsPiBhZGRTbG93Q2FzZShBdG9taWNTdHJpbmdUYWJsZSYsIFN0cmluZ0ltcGwmKTsKKyAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShT
dHJpbmdJbXBsJik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gYWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmLCBTdHJpbmdJbXBsJik7CiAKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmRTbG93
Q2FzZShTdHJpbmdJbXBsJik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9t
aWNTdHJpbmcgZnJvbVVURjhJbnRlcm5hbChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggMWY4NDI5Mi4uZDA0YzRhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xMzQsMTkgKzEzNCwxOSBAQCB2b2lkIFN0cmluZ0lt
cGw6OmRlc3Ryb3koU3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKICAgICBmYXN0RnJlZShzdHJpbmdJ
bXBsKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobGVuZ3RoLCAi
VXNlIFN0cmluZ0ltcGw6OmVtcHR5KCkgdG8gY3JlYXRlIGFuIGVtcHR5IHN0cmluZyIpOwogICAg
IEFTU0VSVChjaGFyYWN0ZXJzQXJlQWxsQVNDSUk8TENoYXI+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RyaW5nSW1wbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyks
IGxlbmd0aCwgQ29uc3RydWN0V2l0aG91dENvcHlpbmcpKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGNoYXJhY3Rl
cnMsIHN0cmxlbihjaGFyYWN0ZXJzKSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlm
ICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gKmVtcHR5KCk7CkBAIC0xNTQsNyArMTU0LDcgQEAg
UGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25z
dCBVQ2hhciogY2hhcmFjdGVycywgdW4KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJ
bXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgQ29uc3RydWN0V2l0aG91dENvcHlpbmcpKTsKIH0KIAot
UGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAqZW1w
dHkoKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bgogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwodW5zaWduZWQgbGVuZ3RoLCBD
aGFyVHlwZSomIGRhdGEpCitpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1bnNpZ25lZCBsZW5ndGgsIENoYXJUeXBlKiYgZGF0YSkK
IHsKICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICBkYXRhID0gMDsKQEAgLTE3Myw3ICsxNzMs
NyBAQCBpbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRp
YWxpemVkSW50ZXJuYWwodW5zaWduZWQgbGVuZwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
clR5cGU+Ci1pbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eSh1bnNpZ25lZCBsZW5ndGgsIENoYXJUeXBlKiYgZGF0
YSkKK2lubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXpl
ZEludGVybmFsTm9uRW1wdHkodW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKGxlbmd0aCk7CiAKQEAgLTE4OCwxOCArMTg4LDE4IEBAIGlubGluZSBQYXNzUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVt
cHR5KHVuc2lnCiAgICAgcmV0dXJuIGNvbnN0cnVjdEludGVybmFsPENoYXJUeXBlPihzdHJpbmcs
IGxlbmd0aCk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkKK1JlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIq
JiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwobGVuZ3Ro
LCBkYXRhKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKQorUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciom
IGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbChsZW5ndGgs
IGRhdGEpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlSW50ZXJuYWwoUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBDaGFyVHlwZSomIGRh
dGEpCitpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGVJbnRlcm5h
bChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgs
IENoYXJUeXBlKiYgZGF0YSkKIHsgICAKICAgICBBU1NFUlQob3JpZ2luYWxTdHJpbmctPmhhc09u
ZVJlZigpKTsKICAgICBBU1NFUlQob3JpZ2luYWxTdHJpbmctPmJ1ZmZlck93bmVyc2hpcCgpID09
IEJ1ZmZlckludGVybmFsKTsKQEAgLTIyMCwyMCArMjIwLDIwIEBAIGlubGluZSBQYXNzUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGVJbnRlcm5hbChQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+CiAgICAgcmV0dXJuIGNvbnN0cnVjdEludGVybmFsPENoYXJUeXBlPihzdHJpbmcsIGxl
bmd0aCk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZShQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIExD
aGFyKiYgZGF0YSkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlKFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIq
JiBkYXRhKQogewogICAgIEFTU0VSVChvcmlnaW5hbFN0cmluZy0+aXM4Qml0KCkpOwogICAgIHJl
dHVybiByZWFsbG9jYXRlSW50ZXJuYWwob3JpZ2luYWxTdHJpbmcsIGxlbmd0aCwgZGF0YSk7CiB9
CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZShQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0
YSkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRlKFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKQog
ewogICAgIEFTU0VSVCghb3JpZ2luYWxTdHJpbmctPmlzOEJpdCgpKTsKICAgICByZXR1cm4gcmVh
bGxvY2F0ZUludGVybmFsKG9yaWdpbmFsU3RyaW5nLCBsZW5ndGgsIGRhdGEpOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQoraW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVJbnRl
cm5hbChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IGlmICghY2hhcmFjdGVycyB8fCAhbGVuZ3RoKQogICAgICAgICByZXR1cm4gKmVtcHR5KCk7CkBA
IC0yNDQsMTcgKzI0NCwxNyBAQCBpbmxpbmUgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
OjpjcmVhdGVJbnRlcm5hbChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycwogICAgIHJldHVybiBz
dHJpbmc7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlKGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6Y3JlYXRlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgcmV0dXJuIGNyZWF0ZUludGVybmFsKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAK
LVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlKGNvbnN0IExDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3Jl
YXRlKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZUludGVybmFsKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKLVBhc3NSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpj
cmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQogewogICAgIGlmICghY2hhcmFjdGVycyB8fCAhbGVuZ3RoKQogICAgICAgICByZXR1cm4g
KmVtcHR5KCk7CkBAIC0yNzEsMTIgKzI3MSwxMiBAQCBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bgog
ICAgIHJldHVybiBzdHJpbmcucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciogc3RyaW5n
KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0
IFVDaGFyKiBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBv
c3NpYmxlKHN0cmluZywgbGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyhzdHJpbmcpKTsKIH0K
IAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGUoY29uc3QgTENoYXIqIHN0
cmluZykKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGUoY29uc3QgTENoYXIqIHN0
cmluZykKIHsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuICplbXB0eSgpOwpAQCAt
MzA5LDcgKzMwOSw3IEBAIGJvb2wgU3RyaW5nSW1wbDo6Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6
c3Vic3RyaW5nKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCitSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6c3Vic3RyaW5nKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgaWYgKHN0YXJ0ID49IG1fbGVuZ3RoKQogICAgICAgICByZXR1cm4gKmVtcHR5KCk7
CkBAIC0zMzYsNyArMzM2LDcgQEAgVUNoYXIzMiBTdHJpbmdJbXBsOjpjaGFyYWN0ZXJTdGFydGlu
Z0F0KHVuc2lnbmVkIGkpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6bG93ZXIoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omxvd2VyKCkK
IHsKICAgICAvLyBOb3RlOiBUaGlzIGlzIGEgaG90IGZ1bmN0aW9uIGluIHRoZSBEcm9tYWVvIGJl
bmNobWFyaywgc3BlY2lmaWNhbGx5IHRoZQogICAgIC8vIG5vLW9wIGNvZGUgcGF0aCB1cCB0aHJv
dWdoIHRoZSBmaXJzdCAncmV0dXJuJyBzdGF0ZW1lbnQuCkBAIC00MTcsNyArNDE3LDcgQEAgU2xv
d1BhdGg6CiAgICAgcmV0dXJuIG5ld0ltcGwucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBlcigpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6dXBwZXIoKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gY291bGQgYmUgb3B0aW1pemVk
IGZvciBuby1vcCBjYXNlcyB0aGUgd2F5IGxvd2VyKCkgaXMsCiAgICAgLy8gYnV0IGluIGVtcGly
aWNhbCB0ZXN0aW5nLCBmZXcgYWN0dWFsIGNhbGxzIHRvIHVwcGVyKCkgYXJlIG5vLW9wcywgc28K
QEAgLTUyOSw3ICs1MjksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbmVlZHNUdXJraXNoQ2FzaW5n
UnVsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQogICAgICAgICAmJiAo
bG9jYWxlSWRlbnRpZmllci5sZW5ndGgoKSA9PSAyIHx8IGxvY2FsZUlkZW50aWZpZXJbMl0gPT0g
Jy0nKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpsb3dlcihjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6bG93ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQogewogICAgIC8v
IFVzZSB0aGUgbW9yZS1vcHRpbWl6ZWQgY29kZSBwYXRoIG1vc3Qgb2YgdGhlIHRpbWUuCiAgICAg
Ly8gQXNzdW1pbmcgaGVyZSB0aGF0IHRoZSBvbmx5IGxvY2FsZS1zcGVjaWZpYyBsb3dlcmNhc2lu
ZyBpcyB0aGUgVHVya2lzaCBjYXNpbmcgcnVsZXMuCkBAIC01NjUsNyArNTY1LDcgQEAgUGFzc1Jl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpsb3dlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
ZUlkZW50aWZpZXIpCiAgICAgcmV0dXJuIG5ld1N0cmluZy5yZWxlYXNlTm9uTnVsbCgpOwogfQog
Ci1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnVwcGVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlSWRlbnRpZmllcikKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBlcihj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7CiAgICAgLy8gVXNlIHRoZSBt
b3JlLW9wdGltaXplZCBjb2RlIHBhdGggbW9zdCBvZiB0aGUgdGltZS4KICAgICAvLyBBc3N1bWlu
ZyBoZXJlIHRoYXQgdGhlIG9ubHkgbG9jYWxlLXNwZWNpZmljIGxvd2VyY2FzaW5nIGlzIHRoZSBU
dXJraXNoIGNhc2luZyBydWxlcywKQEAgLTU5Niw3ICs1OTYsNyBAQCBQYXNzUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OnVwcGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmll
cikKICAgICByZXR1cm4gbmV3U3RyaW5nLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLVBhc3NSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6ZmlsbChVQ2hhciBjaGFyYWN0ZXIpCitSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6ZmlsbChVQ2hhciBjaGFyYWN0ZXIpCiB7CiAgICAgaWYgKCEoY2hh
cmFjdGVyICYgfjB4N0YpKSB7CiAgICAgICAgIExDaGFyKiBkYXRhOwpAQCAtNjEyLDcgKzYxMiw3
IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6ZmlsbChVQ2hhciBjaGFyYWN0ZXIp
CiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6Zm9sZENhc2UoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZvbGRDYXNlKCkKIHsK
ICAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBmdW5jdGlvbiBoYXZlIGEgcHJlZmxpZ2h0
IGxpa2UgdGhlIG9uZSBpbiBTdHJpbmdJbXBsOjpsb3dlcj8KIApAQCAtNjcwLDcgKzY3MCw3IEBA
IFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Zm9sZENhc2UoKQogICAgIHJldHVybiBu
ZXdJbXBsLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkKIHsKICAgICBpZiAoaXM4Qml0KCkpIHsKICAg
ICAgICAgdW5zaWduZWQgZmFpbGluZ0luZGV4OwpAQCAtNjg1LDcgKzY4NSw3IEBAIFBhc3NSZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKQogCiBTbG93
UGF0aDoKICAgICAgICAgTENoYXIqIGRhdGE4OwotICAgICAgICBQYXNzUmVmPFN0cmluZ0ltcGw+
IG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShtX2xlbmd0aCwg
ZGF0YTgpOworICAgICAgICBSZWY8U3RyaW5nSW1wbD4gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlh
bGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBkYXRhOCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmYWlsaW5nSW5kZXg7ICsraSkKICAgICAgICAgICAgIGRhdGE4W2ld
ID0gbV9kYXRhOFtpXTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZmFpbGluZ0luZGV4OyBp
IDwgbV9sZW5ndGg7ICsraSkKQEAgLTcwMiwxNCArNzAyLDE0IEBAIFNsb3dQYXRoOgogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAKICAgICBVQ2hhciogZGF0YTE2OwotICAgIFBhc3NSZWY8U3RyaW5n
SW1wbD4gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVu
Z3RoLCBkYXRhMTYpOworICAgIFJlZjxTdHJpbmdJbXBsPiBuZXdJbXBsID0gY3JlYXRlVW5pbml0
aWFsaXplZEludGVybmFsTm9uRW1wdHkobV9sZW5ndGgsIGRhdGExNik7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpCiAgICAgICAgIGRhdGExNltpXSA9IHRvQVND
SUlMb3dlcihtX2RhdGExNltpXSk7CiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CiAKIHRlbXBsYXRl
IDxjbGFzcyBVQ2hhclByZWRpY2F0ZT4KLWlubGluZSBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnN0cmlwTWF0Y2hlZENoYXJhY3RlcnMoVUNoYXJQcmVkaWNhdGUgcHJlZGljYXRlKQor
aW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcE1hdGNoZWRDaGFyYWN0ZXJz
KFVDaGFyUHJlZGljYXRlIHByZWRpY2F0ZSkKIHsKICAgICBpZiAoIW1fbGVuZ3RoKQogICAgICAg
ICByZXR1cm4gKnRoaXM7CkBAIC03NTcsMTggKzc1NywxOCBAQCBwdWJsaWM6CiAgICAgfQogfTsK
IAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcFdoaXRlU3BhY2UoKQorUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN0cmlwV2hpdGVTcGFjZSgpCiB7CiAgICAgcmV0dXJu
IHN0cmlwTWF0Y2hlZENoYXJhY3RlcnMoU3BhY2VPck5ld2xpbmVQcmVkaWNhdGUoKSk7CiB9CiAK
LVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVT
cGFjZUZ1bmN0aW9uUHRyIGlzV2hpdGVTcGFjZSkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
OjpzdHJpcFdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIgaXNXaGl0ZVNwYWNlKQog
ewogICAgIHJldHVybiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJlZGljYXRlKGlzV2hp
dGVTcGFjZSkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1BTFdBWVNfSU5M
SU5FIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVycyhjb25z
dCBDaGFyVHlwZSogY2hhcmFjdGVycywgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBmaW5kTWF0
Y2gpCitBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFy
YWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9u
UHRyIGZpbmRNYXRjaCkKIHsKICAgICBjb25zdCBDaGFyVHlwZSogZnJvbSA9IGNoYXJhY3RlcnM7
CiAgICAgY29uc3QgQ2hhclR5cGUqIGZyb21lbmQgPSBmcm9tICsgbV9sZW5ndGg7CkBAIC04MDAs
NyArODAwLDcgQEAgQUxXQVlTX0lOTElORSBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnJlbW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGMKICAgICByZXR1cm4gYWRvcHQoZGF0
YSk7CiB9CiAKLVBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVtb3ZlQ2hhcmFjdGVy
cyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaCkKK1JlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmlu
ZE1hdGNoKQogewogICAgIGlmIChpczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHJlbW92ZUNoYXJh
Y3RlcnMoY2hhcmFjdGVyczgoKSwgZmluZE1hdGNoKTsKQEAgLTgwOCw3ICs4MDgsNyBAQCBQYXNz
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0
Y2hGdW5jdGlvblB0ciBmaW5kTQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGUsIGNs
YXNzIFVDaGFyUHJlZGljYXRlPgotaW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoVUNoYXJQcmVkaWNhdGUgcHJlZGlj
YXRlKQoraW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzaW1wbGlmeU1hdGNoZWRD
aGFyYWN0ZXJzVG9TcGFjZShVQ2hhclByZWRpY2F0ZSBwcmVkaWNhdGUpCiB7CiAgICAgU3RyaW5n
QnVmZmVyPENoYXJUeXBlPiBkYXRhKG1fbGVuZ3RoKTsKIApAQCAtODQ0LDE0ICs4NDQsMTQgQEAg
aW5saW5lIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hh
cmFjdGVyc1RvU3BhY2UoVUNoYXJQcmUKICAgICByZXR1cm4gYWRvcHQoZGF0YSk7CiB9CiAKLVBh
c3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlXaGl0ZVNwYWNlKCkKK1JlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzaW1wbGlmeVdoaXRlU3BhY2UoKQogewogICAgIGlmIChp
czhCaXQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJh
Y3RlcnNUb1NwYWNlPExDaGFyPihTcGFjZU9yTmV3bGluZVByZWRpY2F0ZSgpKTsKICAgICByZXR1
cm4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2U8VUNoYXI+KFNw
YWNlT3JOZXdsaW5lUHJlZGljYXRlKCkpOwogfQogCi1QYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnNpbXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0ciBpc1doaXRl
U3BhY2UpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlXaGl0ZVNwYWNlKElz
V2hpdGVTcGFjZUZ1bmN0aW9uUHRyIGlzV2hpdGVTcGFjZSkKIHsKICAgICBpZiAoaXM4Qml0KCkp
CiAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9T
cGFjZTxMQ2hhcj4oVUNoYXJQcmVkaWNhdGUoaXNXaGl0ZVNwYWNlKSk7CkBAIC0xNDQ5LDcgKzE0
NDksNyBAQCBib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0cmluZ0ltcGwmIG1hdGNoU3RyaW5n
LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGJvb2wgY2FzZQogICAgIHJldHVybiBlcXVhbElubmVyKGNv
bnN0X2Nhc3Q8U3RyaW5nSW1wbCY+KCp0aGlzKSwgZW5kT2Zmc2V0IC0gbWF0Y2hTdHJpbmcubGVu
Z3RoKCksIG1hdGNoU3RyaW5nLCBjYXNlU2Vuc2l0aXZlKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIG9sZEMsIFVDaGFyIG5ld0MpCitSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBvbGRDLCBVQ2hhciBuZXdDKQogewog
ICAgIGlmIChvbGRDID09IG5ld0MpCiAgICAgICAgIHJldHVybiAqdGhpczsKQEAgLTE1MTAsNyAr
MTUxMCw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBv
bGRDLCBVQ2hhciBuZXdDKQogICAgIHJldHVybiBuZXdJbXBsOwogfQogCi1QYXNzUmVmPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxl
bmd0aFRvUmVwbGFjZSwgU3RyaW5nSW1wbCogc3RyKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aFRvUmVwbGFjZSwg
U3RyaW5nSW1wbCogc3RyKQogewogICAgIHBvc2l0aW9uID0gc3RkOjptaW4ocG9zaXRpb24sIGxl
bmd0aCgpKTsKICAgICBsZW5ndGhUb1JlcGxhY2UgPSBzdGQ6Om1pbihsZW5ndGhUb1JlcGxhY2Us
IGxlbmd0aCgpIC0gcG9zaXRpb24pOwpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgUGFzc1JlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBs
ZW5ndGhUb1JlcGwKICAgICByZXR1cm4gbmV3SW1wbDsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2Vt
ZW50KQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwg
U3RyaW5nSW1wbCogcmVwbGFjZW1lbnQpCiB7CiAgICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAg
ICAgcmV0dXJuICp0aGlzOwpAQCAtMTU2Niw3ICsxNTY2LDcgQEAgUGFzc1JlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2Vt
ZW50KQogICAgIHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LT5tX2RhdGExNiwg
cmVwbGFjZW1lbnQtPmxlbmd0aCgpKTsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIGNvbnN0IExDaGFyKiByZXBsYWNlbWVudCwgdW5z
aWduZWQgcmVwU3RyTGVuZ3RoKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2Uo
VUNoYXIgcGF0dGVybiwgY29uc3QgTENoYXIqIHJlcGxhY2VtZW50LCB1bnNpZ25lZCByZXBTdHJM
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKHJlcGxhY2VtZW50KTsKIApAQCAtMTY0Myw3ICsxNjQzLDcg
QEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4s
IGNvbnN0IExDaGFyKiByZXBsYWNlbWVudCwKICAgICByZXR1cm4gbmV3SW1wbDsKIH0KIAotUGFz
c1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIGNvbnN0
IFVDaGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwU3RyTGVuZ3RoKQorUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgVUNoYXIqIHJlcGxh
Y2VtZW50LCB1bnNpZ25lZCByZXBTdHJMZW5ndGgpCiB7CiAgICAgQVNTRVJUKHJlcGxhY2VtZW50
KTsKIApAQCAtMTcyMyw3ICsxNzIzLDcgQEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
OjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIGNvbnN0IFVDaGFyKiByZXBsYWNlbWVudCwKICAgICBy
ZXR1cm4gbmV3SW1wbDsKIH0KIAotUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBs
YWNlKFN0cmluZ0ltcGwqIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50KQorUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoU3RyaW5nSW1wbCogcGF0dGVybiwgU3RyaW5n
SW1wbCogcmVwbGFjZW1lbnQpCiB7CiAgICAgaWYgKCFwYXR0ZXJuIHx8ICFyZXBsYWNlbWVudCkK
ICAgICAgICAgcmV0dXJuICp0aGlzOwpAQCAtMjA0NCw3ICsyMDQ0LDcgQEAgVUNoYXJEaXJlY3Rp
b24gU3RyaW5nSW1wbDo6ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHkKICAgICByZXR1cm4gVV9MRUZUX1RPX1JJR0hUOwogfQogCi1QYXNzUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmFkb3B0KFN0cmluZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlcikK
K1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjphZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiBi
dWZmZXIpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCgpOwogICAgIGlm
ICghbGVuZ3RoKQpAQCAtMjA1Miw3ICsyMDUyLDcgQEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjphZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RyaW5nSW1wbChidWZmZXIucmVsZWFzZSgpLCBsZW5ndGgpKTsKIH0KIAot
UGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjphZG9wdChTdHJpbmdCdWZmZXI8VUNoYXI+
JiBidWZmZXIpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQoU3RyaW5nQnVmZmVy
PFVDaGFyPiYgYnVmZmVyKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGgo
KTsKICAgICBpZiAoIWxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggN2UxZGUw
ZS4uZjI2ZWRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTI5MiwyMSArMjkyLDIx
IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyB2
b2lkIGRlc3Ryb3koU3RyaW5nSW1wbCopOwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0
YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0lt
cGw+IGNyZWF0ZShjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJZlBvc3Np
YmxlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0lt
cGw+IGNyZWF0ZShjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUo
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHRlbXBsYXRlPHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4KLSAgICBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQ
b3NzaWJsZShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQorICAg
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVmVjdG9y
PFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikKICAgICB7CiAgICAgICAgIHJldHVybiBj
cmVhdGU4Qml0SWZQb3NzaWJsZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsKICAgICB9
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFVDaGFyKik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVUNo
YXIqKTsKIAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gY3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoKTsgfQotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIq
KTsKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShj
b25zdCBjaGFyKiBzKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KHMpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVh
dGUoY29uc3QgY2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBjcmVhdGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9CisgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IExDaGFyKik7Cisg
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFy
KiBzKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpKTsg
fQogCi0gICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGVT
dWJzdHJpbmdTaGFyaW5nSW1wbDgoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXAsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbDgoUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXAsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHJlcCk7CiAgICAgICAgIEFTU0VSVChsZW5ndGggPD0gcmVwLT5sZW5ndGgoKSk7
CkBAIC0zMjIsNyArMzIyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5nSW1wbChyZXAtPm1fZGF0YTggKyBvZmZzZXQs
IGxlbmd0aCwgb3duZXJSZXApKTsKICAgICB9CiAKLSAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBQ
YXNzUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBz
dGF0aWMgQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmlu
Z0ltcGwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXAsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlcCk7CiAgICAgICAgIEFTU0VSVChs
ZW5ndGggPD0gcmVwLT5sZW5ndGgoKSk7CkBAIC0zNDAsNyArMzQwLDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KLSAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0
IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKQorICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmY2hh
cmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKICAgICB7CiAgICAgICAgIENPTVBJTEVfQVNTRVJU
KGNoYXJhY3RlcnNDb3VudCA+IDEsIFN0cmluZ0ltcGxGcm9tTGl0ZXJhbE5vdEVtcHR5KTsKICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoKGNoYXJhY3RlcnNDb3VudCAtIDEgPD0gKCh1bnNpZ25lZCh+
MCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKExDaGFyKSkpLCBTdHJpbmdJbXBsRnJv
bUxpdGVyYWxDYW5ub3RPdmVyZmxvdyk7CkBAIC0zNDksMTQgKzM0OSwxNCBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgLy8gRklYTUU6IFRyYW5zaXRpb24gb2ZmIG9mIHRoZXNlIGZ1bmN0aW9ucyB0
byBjcmVhdGVXaXRob3V0Q29weWluZyBpbnN0ZWFkLgotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJp
bmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0lt
cGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwogCi0gICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhv
dXRDb3B5aW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGVX
aXRob3V0Q29weWluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVX
aXRob3V0Q29weWluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVX
aXRob3V0Q29weWluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsK
IAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKTsKLSAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CisgICAgV1RGX0VYUE9S
VF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgsIFVDaGFyKiYgZGF0YSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBBTFdB
WVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgsIFQqJiBvdXRwdXQpCiAgICAgewogICAgICAgICBpZiAoIWxlbmd0aCkg
ewpAQCAtMzc4LDcgKzM3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdElu
dGVybmFsPFQ+KHJlc3VsdEltcGwsIGxlbmd0aCk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlRW1wdHlVbmlxdWUoKQorICAgIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlRW1wdHlVbmlxdWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3RyaW5nSW1wbChDcmVhdGVFbXB0eVVuaXF1ZSkpOwogICAgIH0KQEAgLTM4Niw4ICsz
ODYsOCBAQCBwdWJsaWM6CiAgICAgLy8gUmVhbGxvY2F0ZSB0aGUgU3RyaW5nSW1wbC4gVGhlIG9y
aWdpbmFsU3RyaW5nIG11c3QgYmUgb25seSBvd25lZCBieSB0aGUgUGFzc1JlZlB0ciwKICAgICAv
LyBhbmQgdGhlIGJ1ZmZlciBvd25lcnNoaXAgbXVzdCBiZSBCdWZmZXJJbnRlcm5hbC4gSnVzdCBs
aWtlIHRoZSBpbnB1dCBwb2ludGVyIG9mIHJlYWxsb2MoKSwKICAgICAvLyB0aGUgb3JpZ2luYWxT
dHJpbmcgY2FuJ3QgYmUgdXNlZCBhZnRlciB0aGlzIGZ1bmN0aW9uLgotICAgIHN0YXRpYyBQYXNz
UmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5h
bFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpOwotICAgIHN0YXRpYyBQYXNz
UmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5h
bFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOworICAgIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsU3Ry
aW5nLCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSk7CisgICAgc3RhdGljIFJlZjxTdHJp
bmdJbXBsPiByZWFsbG9jYXRlKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKTsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBm
bGFnc09mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2hhc2hB
bmRGbGFncyk7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ0lzOEJpdCgpIHsgcmV0dXJuIHNf
aGFzaEZsYWc4Qml0QnVmZmVyOyB9CkBAIC0zOTUsNyArMzk1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmlu
Z0ltcGwsIG1fZGF0YTgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+Ci0gICAgc3RhdGlj
IFBhc3NSZWY8U3RyaW5nSW1wbD4gYWRvcHQoVmVjdG9yPENoYXJUeXBlLCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyPiYgdmVjdG9yKQorICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
YWRvcHQoVmVjdG9yPENoYXJUeXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYg
dmVjdG9yKQogICAgIHsKICAgICAgICAgaWYgKHNpemVfdCBzaXplID0gdmVjdG9yLnNpemUoKSkg
ewogICAgICAgICAgICAgQVNTRVJUKHZlY3Rvci5kYXRhKCkpOwpAQCAtNDA2LDggKzQwNiw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICplbXB0eSgpOwogICAgIH0KIAotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZm
ZXI8VUNoYXI+Jik7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQYXNzUmVmPFN0
cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxMQ2hhcj4mKTsKKyAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8VUNoYXI+
Jik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRv
cHQoU3RyaW5nQnVmZmVyPExDaGFyPiYpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGxlbmd0aE1lbW9yeU9m
ZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2xlbmd0aCk7IH0K
QEAgLTU5OSw5ICs1OTksOSBAQCBwdWJsaWM6CiAgICAgLy8gU29tZSBzdHJpbmcgZmVhdHVyZXMs
IGxpa2UgcmVmY291bnRpbmcgYW5kIHRoZSBhdG9taWNpdHkgZmxhZywgYXJlIG5vdAogICAgIC8v
IHRocmVhZC1zYWZlLiBXZSBhY2hpZXZlIHRocmVhZCBzYWZldHkgYnkgaXNvbGF0aW9uLCBnaXZp
bmcgZWFjaCB0aHJlYWQKICAgICAvLyBpdHMgb3duIGNvcHkgb2YgdGhlIHN0cmluZy4KLSAgICBQ
YXNzUmVmPFN0cmluZ0ltcGw+IGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFJlZjxTdHJpbmdJ
bXBsPiBpc29sYXRlZENvcHkoKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQ
YXNzUmVmPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9
IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHN1
YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKTsKIAogICAgIFVD
aGFyIGF0KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtNjMzLDI1ICs2MzMsMjUgQEAgcHVi
bGljOgogICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDApOwogICAgIGZsb2F0IHRvRmxv
YXQoYm9vbCogb2sgPSAwKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmPFN0
cmluZ0ltcGw+IGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIFBhc3NSZWY8U3RyaW5nSW1wbD4gbG93ZXIoKTsKLSAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiB1cHBlcigpOwotICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBQYXNzUmVmPFN0cmluZ0ltcGw+IGxvd2VyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
SWRlbnRpZmllcik7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWY8U3RyaW5nSW1w
bD4gdXBwZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKTsKKyAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBsb3dlcigpOwor
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gdXBwZXIoKTsKKyAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IGxvd2VyKGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxlSWRlbnRpZmllcik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxT
dHJpbmdJbXBsPiB1cHBlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOwog
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWY8U3RyaW5nSW1wbD4gZmlsbChVQ2hh
cik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBmaWxsKFVDaGFy
KTsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBmaWxsKGNoYXIpIG9yIGNhbiB3ZSBqdXN0IGRv
IHRoZSByaWdodCB0aGluZyBpZiBVQ2hhciBpcyBBU0NJST8KIAotICAgIFBhc3NSZWY8U3RyaW5n
SW1wbD4gZm9sZENhc2UoKTsKKyAgICBSZWY8U3RyaW5nSW1wbD4gZm9sZENhc2UoKTsKIAotICAg
IFBhc3NSZWY8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgUGFzc1JlZjxTdHJp
bmdJbXBsPiBzdHJpcFdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpOwotICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFj
ZSgpOwotICAgIFBhc3NSZWY8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKElzV2hpdGVT
cGFjZUZ1bmN0aW9uUHRyKTsKKyAgICBSZWY8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKCk7
CisgICAgUmVmPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlv
blB0cik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlm
eVdoaXRlU3BhY2UoKTsKKyAgICBSZWY8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKElz
V2hpdGVTcGFjZUZ1bmN0aW9uUHRyKTsKIAotICAgIFBhc3NSZWY8U3RyaW5nSW1wbD4gcmVtb3Zl
Q2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKKyAgICBSZWY8U3RyaW5nSW1w
bD4gcmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgQUxXQVlTX0lOTElORSBQYXNzUmVmPFN0cmlu
Z0ltcGw+IHJlbW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJh
Y3Rlck1hdGNoRnVuY3Rpb25QdHIpOworICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+
IHJlbW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1h
dGNoRnVuY3Rpb25QdHIpOwogCiAgICAgc2l6ZV90IGZpbmQoTENoYXIgY2hhcmFjdGVyLCB1bnNp
Z25lZCBzdGFydCA9IDApOwogICAgIHNpemVfdCBmaW5kKGNoYXIgY2hhcmFjdGVyLCB1bnNpZ25l
ZCBzdGFydCA9IDApOwpAQCAtNjg2LDEzICs2ODYsMTMgQEAgcHVibGljOgogICAgIGJvb2wgZW5k
c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdLCBib29sIGNhc2VTZW5zaXRp
dmUgPSB0cnVlKSBjb25zdCB7IHJldHVybiBlbmRzV2l0aChwcmVmaXgsIG1hdGNoTGVuZ3RoIC0g
MSwgY2FzZVNlbnNpdGl2ZSk7IH0KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRz
V2l0aChTdHJpbmdJbXBsJiwgdW5zaWduZWQgZW5kT2Zmc2V0LCBib29sIGNhc2VTZW5zaXRpdmUp
IGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWY8U3RyaW5nSW1wbD4g
cmVwbGFjZShVQ2hhciwgVUNoYXIpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVm
PFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKLSAgICBBTFdBWVNfSU5M
SU5FIFBhc3NSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBjaGFy
KiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpIHsgcmV0dXJuIHJlcGxh
Y2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlcGxhY2VtZW50KSwg
cmVwbGFjZW1lbnRMZW5ndGgpOyB9Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWY8
U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCByZXBsYWNl
bWVudExlbmd0aCk7Ci0gICAgUGFzc1JlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25z
dCBVQ2hhciosIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgUGFzc1JlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJ
bXBsKik7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWY8U3RyaW5nSW1wbD4gcmVw
bGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CisgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFy
LCBTdHJpbmdJbXBsKik7CisgICAgQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFj
ZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBjaGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFj
ZW1lbnRMZW5ndGgpIHsgcmV0dXJuIHJlcGxhY2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KHJlcGxhY2VtZW50KSwgcmVwbGFjZW1lbnRMZW5ndGgpOyB9CisgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBM
Q2hhciosIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoKTsKKyAgICBSZWY8U3RyaW5nSW1wbD4g
cmVwbGFjZShVQ2hhciwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmlu
Z0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJp
bmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwq
KTsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhckRpcmVjdGlvbiBkZWZhdWx0V3Jp
dGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IG51bGxwdHIpOwog
CkBAIC03NjcsMTMgKzc2NywxMyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2NvcHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwogCiAgICAgQnVmZmVyT3duZXJzaGlwIGJ1
ZmZlck93bmVyc2hpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJ1ZmZlck93bmVyc2hp
cD4obV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hNYXNrQnVmZmVyT3duZXJzaGlwKTsgfQotICAgIHRl
bXBsYXRlIDxjbGFzcyBVQ2hhclByZWRpY2F0ZT4gUGFzc1JlZjxTdHJpbmdJbXBsPiBzdHJpcE1h
dGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJlZGljYXRlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhclR5cGUsIGNsYXNzIFVDaGFyUHJlZGljYXRlPiBQYXNzUmVmPFN0cmluZ0ltcGw+IHNpbXBs
aWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFyUHJlZGljYXRlKTsKLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNvbnN0cnVj
dEludGVybmFsKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJUeXBlPiBzdGF0aWMgUGFzc1JlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVk
SW50ZXJuYWwodW5zaWduZWQsIENoYXJUeXBlKiYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4gc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZElu
dGVybmFsTm9uRW1wdHkodW5zaWduZWQsIENoYXJUeXBlKiYpOwotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVHlwZT4gc3RhdGljIFBhc3NSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZUludGVy
bmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4sIHVuc2lnbmVkLCBDaGFyVHlwZSomKTsKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBQYXNzUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZUludGVybmFsKGNvbnN0IENoYXJUeXBlKiwgdW5zaWduZWQpOworICAgIHRlbXBsYXRlIDxj
bGFzcyBVQ2hhclByZWRpY2F0ZT4gUmVmPFN0cmluZ0ltcGw+IHN0cmlwTWF0Y2hlZENoYXJhY3Rl
cnMoVUNoYXJQcmVkaWNhdGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwgY2xh
c3MgVUNoYXJQcmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0
ZXJzVG9TcGFjZShVQ2hhclByZWRpY2F0ZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNvbnN0cnVjdEludGVybmFsKFN0cmluZ0ltcGwq
LCB1bnNpZ25lZCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1bnNpZ25lZCwgQ2hhclR5
cGUqJik7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmlu
Z0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkLCBDaGFy
VHlwZSomKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gcmVhbGxvY2F0ZUludGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4sIHVuc2ln
bmVkLCBDaGFyVHlwZSomKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlSW50ZXJuYWwoY29uc3QgQ2hhclR5cGUqLCB1bnNpZ25l
ZCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSB1bnNpZ25lZCBoYXNoU2xv
d0Nhc2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgaGFzaEFuZEZs
YWdzRm9yRW1wdHlVbmlxdWUoKTsKIApAQCAtODQzLDkgKzg0Myw5IEBAIFZhbHVlQ2hlY2s8U3Ry
aW5nSW1wbCo+IHsKICNlbmRpZgogCiB0ZW1wbGF0ZSA8PgotQUxXQVlTX0lOTElORSBQYXNzUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnN0cnVjdEludGVybmFsPExDaGFyPihTdHJpbmdJ
bXBsKiBpbXBsLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51
bGwsIGltcGwpIFN0cmluZ0ltcGwobGVuZ3RoLCBGb3JjZThCaXRDb25zdHJ1Y3RvcikpOyB9CitB
TFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5h
bDxMQ2hhcj4oU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IChOb3ROdWxsLCBpbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0Q29u
c3RydWN0b3IpKTsgfQogdGVtcGxhdGUgPD4KLUFMV0FZU19JTkxJTkUgUGFzc1JlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxVQ2hhcj4oU3RyaW5nSW1wbCogaW1w
bCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBs
KSBTdHJpbmdJbXBsKGxlbmd0aCkpOyB9CitBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxVQ2hhcj4oU3RyaW5nSW1wbCogaW1wbCwgdW5z
aWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBsKSBTdHJp
bmdJbXBsKGxlbmd0aCkpOyB9CiAKIHRlbXBsYXRlIDw+CiBBTFdBWVNfSU5MSU5FIGNvbnN0IExD
aGFyKiBTdHJpbmdJbXBsOjpjaGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJh
Y3RlcnM4KCk7IH0KQEAgLTEzMzEsNyArMTMzMSw3IEBAIGlubGluZSB1bnNpZ25lZCBsZW5ndGhP
Zk51bGxUZXJtaW5hdGVkU3RyaW5nKGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZykKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiB9CiAKLWlubGluZSBQYXNzUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omlzb2xhdGVkQ29weSgpIGNvbnN0CitpbmxpbmUgUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFyZXF1aXJlc0NvcHkoKSkgewogICAgICAgICBpZiAoaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAppbmRleCAzMTdhZmJjLi41MDhjODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmIGltcGwp
IDogbV9pbXBsKCZpbXBsKSB7IH0KICAgICBTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2lt
cGwoaW1wbCkgeyB9CiAgICAgU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBt
X2ltcGwoaW1wbCkgeyB9Ci0gICAgU3RyaW5nKFBhc3NSZWY8U3RyaW5nSW1wbD4mJiBpbXBsKSA6
IG1faW1wbChzdGQ6OmZvcndhcmQ8UGFzc1JlZjxTdHJpbmdJbXBsPj4oaW1wbCkpIHsgfQorICAg
IFN0cmluZyhSZWY8U3RyaW5nSW1wbD4mJiBpbXBsKSA6IG1faW1wbChzdGQ6OmZvcndhcmQ8UmVm
PFN0cmluZ0ltcGw+PihpbXBsKSkgeyB9CiAgICAgU3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiYm
IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZy
b20gYSBjb25zdGFudCBzdHJpbmcgbGl0ZXJhbC4KQEAgLTUxMiw3ICs1MTIsNyBAQCBpbmxpbmUg
dm9pZCBzd2FwKFN0cmluZyYgYSwgU3RyaW5nJiBiKSB7IGEuc3dhcChiKTsgfQogCiB0ZW1wbGF0
ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KIFN0cmlu
Zzo6U3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlcj4mIHZlY3RvcikKLSAgICA6IG1faW1wbCh2ZWN0b3Iuc2l6ZSgpID8gU3RyaW5nSW1wbDo6
Y3JlYXRlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpIDogKlN0cmluZ0ltcGw6OmVtcHR5
KCkpCisgICAgOiBtX2ltcGwodmVjdG9yLnNpemUoKSA/IFN0cmluZ0ltcGw6OmNyZWF0ZSh2ZWN0
b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSA6IFJlZjxTdHJpbmdJbXBsPigqU3RyaW5nSW1wbDo6
ZW1wdHkoKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOTRkNGQxLi45YjVkNWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTA4MyBAQAorMjAxNC0xMi0xMiAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmIHdpdGggUmVmL1JlZiYmIGFj
cm9zcyB0aGUgYm9hcmQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzk1ODc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVz
L2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmF0dGVyeU1h
bmFnZXI6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2Vy
Lmg6CisgICAgICAgICogTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmF0dGVyeVN0YXR1czo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2Jh
dHRlcnkvQmF0dGVyeVN0YXR1cy5oOgorICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFk
QnV0dG9uLmg6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkQnV0dG9uOjpjcmVhdGUpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdmlnYXRvckdhbWVwYWQ6OmdhbWVwYWRGcm9tUGxhdGZvcm1HYW1lcGFkKToKKyAg
ICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5oOgorICAgICAgICAqIE1v
ZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL0dhbWVwYWRMaXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlOjpzZXRQcml2YXRlQW5kT3Blbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFDb250cm9s
bGVyOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oOgorICAg
ICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OllvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50Lmg6
CisgICAgICAgICogTW9kdWxlcy9wcm94aW1pdHkvRGV2aWNlUHJveGltaXR5RXZlbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRldmljZVByb3hpbWl0eUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpiYXNpY1NoYXBlRm9yVmFsdWUpOgorICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25z
Lmg6CisgICAgICAgICogY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0FzcGVjdFJhdGlvVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU0JvcmRl
ckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJvcmRlckltYWdlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZS5oOgorICAgICAgICAqIGNzcy9DU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0JvcmRlckltYWdlU2xpY2VW
YWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVDYXRlZ29yeSk6CisgICAgICAgICogY3NzL0NTU0Nh
bGN1bGF0aW9uVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6Q1NTQ2Fs
Y1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6Y3JlYXRlQ2FsY3VsYXRp
b25WYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDYW52YXNWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9ySW1hZ2VTbGlj
ZVNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JOaW5lUGllY2VJbWFnZVNsaWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yTmluZVBpZWNlSW1hZ2VSZXBlYXQpOgorICAgICAgICAoV2ViQ29y
ZTo6dmFsdWVGb3JOaW5lUGllY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjp6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Onpvb21BZGp1c3RlZE51bWJlclZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6Onpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JSZWZsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVBvc2l0aW9uTGlzdEZvckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBlcmNlbnRh
Z2VPclpvb21BZGp1c3RlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmF1dG9Pclpvb21BZGp1
c3RlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVl
cyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjptYXRyaXhUcmFuc2Zvcm1WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRl
ZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RMZW5ndGhGb3Jab29tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yU2hhZG93KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6dmFsdWVGb3JHcmlkVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OnZhbHVlRm9yR3JpZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRyYW5zaXRp
b25Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRyYW5zaXRpb25Qcm9wZXJ0
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbFNuYXBEZXN0aW5hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JvbGxTbmFwUG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9s
bFNuYXBDb29yZGluYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpnZXREZWxheVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldER1cmF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRUaW1pbmdGdW5j
dGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxpbmVCb3hDb250YWluVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6
cmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
cmVuZGVyVGV4dERlY29yYXRpb25TdHlsZUZsYWdzVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpyZW5kZXJUZXh0RGVjb3JhdGlvblNraXBGbGFnc1RvQ1NTVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6cmVuZGVyRW1waGFzaXNQb3NpdGlvbkZsYWdzVG9DU1NWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpmaWxsUmVwZWF0VG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpmaWxs
U291cmNlVHlwZVRvQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFNpemVUb0NTU1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmFsdFRleHRUb0NTU1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnRlbnRUb0NTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRGYW1pbHlG
cm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6bGluZUhlaWdodEZyb21TdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpmb250U2l6ZUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpmb250
U3R5bGVGcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udFZhcmlhbnRGcm9tU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Zm9udFdlaWdodEZyb21TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNvcHlQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNoYXBlUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAgKiBj
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgICogY3NzL0NTU0Nyb3Nz
ZmFkZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29y
SW1hZ2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9u
dEZhY2VTcmNWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3Jj
VmFsdWU6OmNyZWF0ZUxvY2FsKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZlYXR1cmVWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250VmFsdWU6
OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU0dyYWRp
ZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjbG9uZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y2xvbmUpOgorICAgICAgICAq
IGNzcy9DU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NH
cmlkVGVtcGxhdGVBcmVhc1ZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNl
dFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpjcmVhdGUpOgor
ICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFn
ZVZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTSW5oZXJpdGVkVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogY3Nz
L0NTU0luaXRpYWxWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW5pdGlhbFZhbHVlOjpj
cmVhdGVFeHBsaWNpdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbml0aWFsVmFsdWU6OmNyZWF0
ZUltcGxpY2l0KToKKyAgICAgICAgKiBjc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlS2V5ZnJhbWU6OlN0eWxlS2V5ZnJhbWUpOgorICAgICAgICAqIGNzcy9D
U1NLZXlmcmFtZVJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlS2V5ZnJhbWU6OmNyZWF0
ZSk6CisgICAgICAgICogY3NzL0NTU0tleWZyYW1lc1J1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUtleWZyYW1lczo6Y29weSk6CisgICAgICAgICogY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVCb3hDb250YWluVmFsdWU6OmNyZWF0ZSk6Cisg
ICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcmlt
aXRpdmVWYWx1ZVBhaXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUlubGlu
ZVN0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZURl
Y2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlU3R5bGVQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlUHJpbWl0aXZlTnVt
ZXJpY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlUHJpbWl0aXZl
U3RyaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRGaWxsVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRBbmltYXRpb25WYWx1ZSk6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyVmFs
dWUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZVBhcnNlck9wZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVBbGxvd2luZ01hcmdpblF1aXJrKToKKyAgICAgICAgKiBjc3MvQ1NT
UmVmbGVjdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NSZWZsZWN0VmFsdWU6OmNyZWF0
ZSk6CisgICAgICAgICogY3NzL0NTU1NoYWRvd1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTaGFkb3dWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlv
bi5oOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2hlZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0
OjpjcmVhdGVJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Q1NTU3R5
bGVTaGVldCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBjc3Mv
Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3Rl
cHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NVbmljb2Rl
UmFuZ2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVW5pY29kZVJhbmdlVmFsdWU6OmNy
ZWF0ZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDbG9uZUNTU1ZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6Y3JlYXRlRnJvbVBhcnNlclZhbHVlTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6OmFwcGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NWYWx1ZUxpc3Q6OnByZXBlbmQpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFtaWx5VmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NWYWx1ZVBvb2wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3Jl
YXRlSW5oZXJpdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVQb29sOjpjcmVh
dGVJbXBsaWNpdEluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBvb2w6
OmNyZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVl
UG9vbDo6Y3JlYXRlVmFsdWUpOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpjb3B5UHJvcGVydGllcyk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzOjppbW11dGFibGVDb3B5SWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzOjpjb3B5QmxvY2tQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6bXV0YWJsZUNvcHkpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzOjpjb3B5UHJvcGVydGllc0luU2V0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSk6CisgICAgICAgICogY3Nz
L1N0eWxlUHJvcGVydGllcy5oOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JLZXlmcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6ZGVmYXVsdFN0eWxlRm9yRWxlbWVudCk6CisgICAgICAgICogY3NzL1N0eWxlUmVz
b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjp0YWtlU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFBhcmVudFN0
eWxlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUnVsZUJhc2U6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpTdHlsZVJ1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSdWxlUGFnZTo6U3R5bGVSdWxlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJ1bGVGb250RmFjZTo6U3R5bGVSdWxlRm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSdWxlR3JvdXA6OndyYXBwZXJJbnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUnVsZVZpZXdwb3J0OjpTdHlsZVJ1bGVWaWV3cG9ydCk6CisgICAgICAgICogY3NzL1N0eWxl
UnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSdWxlOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUZv
bnRGYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlRm9udEZhY2U6OmNv
cHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlUGFnZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUnVsZVBhZ2U6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
dWxlTWVkaWE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVNZWRpYTo6Y29w
eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVTdXBwb3J0czo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUnVsZVN1cHBvcnRzOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUnVsZVJlZ2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVJl
Z2lvbjo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVWaWV3cG9ydDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZVZpZXdwb3J0Ojpjb3B5KToKKyAgICAgICAg
KiBjc3MvU3R5bGVSdWxlSW1wb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUlt
cG9ydDo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlSW1wb3J0Lmg6CisgICAgICAg
ICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVl
dENvbnRlbnRzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRz
Ojpjb3B5KToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdENTU0ZpbHRlclZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9X
ZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NSZXNv
dXJjZVZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OmNyZWF0ZSk6
CisgICAgICAgICogZG9tL0NoaWxkTm9kZUxpc3QuaDoKKyAgICAgICAgKiBkb20vQ2xhc3NOb2Rl
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGFzc05vZGVMaXN0OjpjcmVhdGUpOgorICAg
ICAgICAqIGRvbS9DbGFzc05vZGVMaXN0Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZUZvckVsZW1lbnRJZ25vcmluZ1BlbmRp
bmdTdHlsZXNoZWV0cyk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9t
L0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFNoYXJlZE9iamVjdFBvb2w6OmNhY2hlZFNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0
ZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphZGRBdXRob3JTaGVldCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphZGRVc2VyU2hlZXQpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmg6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVt
ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWFibGVFbGVtZW50RGF0YTo6Y3Jl
YXRlV2l0aEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6VW5pcXVlRWxlbWVudERhdGE6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50RGF0YTo6bWFrZVVuaXF1ZUNvcHkp
OgorICAgICAgICAoV2ViQ29yZTo6VW5pcXVlRWxlbWVudERhdGE6Om1ha2VTaGFyZWFibGVDb3B5
KToKKyAgICAgICAgKiBkb20vRWxlbWVudERhdGEuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudFJh
cmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldENvbXB1dGVk
U3R5bGUpOgorICAgICAgICAqIGRvbS9OYW1lTm9kZUxpc3QuaDoKKyAgICAgICAgKiBkb20vTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEZsb3dDb2xsZWN0
aW9uOjplbnN1cmVGbG93V2l0aE5hbWUpOgorICAgICAgICAqIGRvbS9OYW1lZEZsb3dDb2xsZWN0
aW9uLmg6CisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUxpc3RzTm9kZURhdGE6OmVuc3VyZUNoaWxkTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZUxpc3RzTm9kZURhdGE6OmVuc3VyZUVtcHR5Q2hpbGROb2RlTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVXaXRoQXRvbWljTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVXaXRoUXVhbGlmaWVk
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29s
bGVjdGlvbik6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUpOgorICAgICAgICAqIGRvbS9RdWFs
aWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWRO
YW1lSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20vVGFnTm9kZUxpc3QuaDoKKyAgICAgICAg
KiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUJ1
dHRvbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9CYXNl
QnV0dG9uSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAg
ICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvSFRNTEFsbENvbGxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFsbENvbGxlY3Rpb246OmNyZWF0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRN
TEFwcGxldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTEJSRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQlJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
SFRNTEJSRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENvbGxlY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNyZWF0
ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oOgorICAgICAg
ICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJh
bWVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAg
ICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oOgorICAgICAgICAq
IGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxP
cHRpb25zQ29sbGVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxl
Um93c0NvbGxlY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29s
bGVjdGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTFdCUkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFdCUkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9IVE1MV0JSRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhpZGRlbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6
CisgICAgICAgICogaHRtbC9IaWRkZW5JbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ltYWdl
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjpjcmVhdGVJ
bnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0ltYWdlSW5wdXRUeXBlLmg6CisgICAgICAg
ICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpjcmVh
dGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAq
IGh0bWwvTGFiZWxzTm9kZUxpc3QuaDoKKyAgICAgICAgKiBodG1sL1JhZGlvTm9kZUxpc3QuaDoK
KyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL1Jhbmdl
SW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAg
ICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRl
SW5wdXRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oOgorICAgICAgICAqIGh0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgor
ICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgICog
aHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
dGVySW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Byb2dy
ZXNzU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc0lubmVyRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Qcm9n
cmVzc1NoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVyVGh1bWI6OlJlbmRlclNs
aWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlckNvbnRhaW5lckVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJDb250YWluZXI6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlQ29udHJvbHNCdXR0b246OlJlbmRlckltYWdlQ29udHJvbHNCdXR0b24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNC
dXR0b25FbGVtZW50TWFjLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJv
bHNSb290RWxlbWVudE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRy
b2xzOjpSZW5kZXJJbWFnZUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ29udHJv
bHNSb290RWxlbWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmg6CisgICAgICAgICogaHRt
bC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlQm94OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2F2ZVBhcnNlZFN0eWxlU2hlZXQpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1hdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oOgorICAg
ICAgICAqIG1hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MTWVuY2xvc2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIG1hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTZWxlY3RFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTZWxl
Y3RFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VmlzaXRlZExpbmtTdG9yZSk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwYWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6OmNyZWF0ZSk6CisgICAgICAgICogcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YWRkRWxlbWVudENoYW5nZVRvRGlzcGF0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyk6
CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oOgorICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmg6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgICogcGFnZS9hbmltYXRp
b24vQ29tcG9zaXRlQW5pbWF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vQ2FsY3VsYXRpb25W
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9MZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZU1hcDo6aW5z
ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9MZW5ndGguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHNDYWNoZUVudHJ5OjpGb250R2x5cGhzQ2FjaGVFbnRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udEdseXBocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5oOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udEdseXBoczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OmNy
ZWF0ZUZvclBsYXRmb3JtRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6c2V0RmlsbEdyYWRpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJj
ZVByaXZhdGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0dGVybi5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TZXJpYWxpemVk
UGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svVXNlck1lZGlhQ2xpZW50TW9jay5oOgorICAgICAgICAoV2ViQ29yZTo6VXNl
ck1lZGlhQ2xpZW50UmVxdWVzdE5vdGlmaWVyOjpVc2VyTWVkaWFDbGllbnRSZXF1ZXN0Tm90aWZp
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6UmVuZGVyQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6UmVuZGVyQm94KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hN
b2RlbE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCdXR0b246OlJlbmRlckJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJ1dHRvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWls
c01hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXRhaWxzTWFya2VyOjpSZW5k
ZXJEZXRhaWxzTWFya2VyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnNldFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2V0U3R5bGVJbnRlcm5hbCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZXRBbmltYXRhYmxlU3R5bGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmNyZWF0ZUZvckFwcGxldCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpZWxkc2V0OjpSZW5k
ZXJGaWVsZHNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJl
YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1Ro
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhy
ZWFkU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZyYW1lOjpSZW5kZXJGcmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGcmFtZUJhc2U6OlJlbmRlckZyYW1lQmFzZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZyYW1lQmFzZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6UmVuZGVyRnJhbWVTZXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZ1bGxT
Y3JlZW46OlJlbmRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnVsbFNj
cmVlblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZVBs
YWNlaG9sZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OlJlbmRlckdyaWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySFRNTENhbnZhczo6UmVuZGVySFRNTENhbnZhcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckhUTUxDYW52YXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklGcmFtZTo6UmVuZGVySUZyYW1lKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFn
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OlJl
bmRlcklubGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpSZW5kZXJMYXllck1vZGVs
T2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGluZUJyZWFrOjpSZW5kZXJMaW5lQnJlYWspOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpSZW5kZXJMaXN0Qm94KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6UmVu
ZGVyTGlzdEl0ZW0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpc3RNYXJrZXI6OlJlbmRlckxpc3RNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhOjpSZW5kZXJNZWRpYSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhVm9s
dW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcjo6UmVu
ZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1lbnVMaXN0OjpSZW5kZXJNZW51TGlzdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1ldGVyOjpSZW5kZXJNZXRlcik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck1ldGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVt
bkZsb3dUaHJlYWQ6OlJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0
aUNvbHVtblNldDo6UmVuZGVyTXVsdGlDb2x1bW5TZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0
aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcjo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6UmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQ6OmNyZWF0ZVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyTmFtZWRGbG93
VGhyZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclByb2dyZXNzOjpSZW5kZXJQcm9ncmVzcyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclByb2dyZXNzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclF1b3RlOjpSZW5kZXJRdW90ZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclF1b3RlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJSZWdpb25TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uU2V0OjpSZW5k
ZXJSZWdpb25TZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpSZW5kZXJSZXBsaWNhKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJS
dWJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlBc0lubGluZTo6UmVuZGVyUnVi
eUFzSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlBc0Jsb2NrOjpSZW5kZXJS
dWJ5QXNCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnkuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UnVieUJhc2U6OlJlbmRlclJ1YnlCYXNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVi
eUJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpSZW5kZXJSdWJ5UnVuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUnVieVJ1bi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5VGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5VGV4dDo6UmVuZGVyUnVieVRleHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclBhcnQ6OlJlbmRlclNjcm9sbGJhclBhcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXJQYXJ0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjpSZW5kZXJTZWFy
Y2hGaWVsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTbGlkZXI6OlJlbmRlclNsaWRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
YWJsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDYXB0aW9uOjpSZW5kZXJUYWJsZUNhcHRpb24pOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
Q2VsbDo6UmVuZGVyVGFibGVDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpSZW5kZXJUYWJsZUNvbCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ29sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Um93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpSZW5kZXJUYWJsZVJv
dyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZVNlY3Rpb246OlJlbmRlclRhYmxlU2VjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENv
bnRyb2wpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmNy
ZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVJbm5lckJsb2NrU3R5
bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZUVEN1ZTo6UmVuZGVyVlRUQ3VlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VlRUQ3VlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZGVvOjpSZW5kZXJWaWRlbyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclZpZGVvLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVuZGVyVmlldyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6UmVuZGVyV2lkZ2V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9j
azo6UmVuZGVyTWF0aE1MQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZl
bmNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OlJlbmRlck1h
dGhNTEZlbmNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5j
ZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpSZW5kZXJNYXRoTUxG
cmFjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlv
bi5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxNYXRoOjpSZW5kZXJNYXRoTUxNYXRoKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1hdGguaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTE1lbmNsb3NlOjpSZW5kZXJNYXRoTUxNZW5jbG9zZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxSYWRpY2Fs
T3BlcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNh
bE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhNTFJv
b3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0aE1MUm93KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxTY3JpcHRzOjpSZW5kZXJNYXRoTUxTY3JpcHRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNl
OjpSZW5kZXJNYXRoTUxTcGFjZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcGFjZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1
YXJlUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpS
ZW5kZXJNYXRoTUxTcXVhcmVSb290KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNxdWFyZVJvb3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpSZW5k
ZXJNYXRoTUxUb2tlbik6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0
aE1MVW5kZXJPdmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVu
ZGVyT3Zlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlQ2lyY2xlOjpibGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlRWxsaXBzZTo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNT
aGFwZVBvbHlnb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVJbnNldDo6
YmxlbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhUmVm
OjpEYXRhUmVmKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2VEYXRhOjpjb3B5KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5p
bmVQaWVjZUltYWdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlRGVmYXVsdFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9uZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVu
ZGVyU3R5bGU6OmNyZWF0ZURlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5k
ZXJTdHlsZTo6Y29weSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6Y3JlYXRlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlRmlsbERhdGE6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTdHJva2VE
YXRhOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU3RvcERhdGE6OmNvcHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVUZXh0RGF0YTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZU1pc2NEYXRhOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93U1ZHRGF0
YTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc291cmNlRGF0YTo6Y29weSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YTo6Y29weSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUxheW91dERhdGE6OmNvcHkpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlRmls
bERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN0cm9rZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN0b3BEYXRhOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVUZXh0RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
TWlzY0RhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1NWR0RhdGE6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc291cmNlRGF0YTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVMYXlvdXREYXRhOjpjcmVhdGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQmFja2dyb3VuZERhdGE6OmNvcHkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZUJhY2tncm91bmREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJhY2tncm91bmRE
YXRhOjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCb3hEYXRhOjpjb3B5KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJveERh
dGE6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZs
ZXhpYmxlQm94RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZURlcHJlY2F0ZWRGbGV4
aWJsZUJveERhdGE6OmNvcHkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJl
Y2F0ZWRGbGV4aWJsZUJveERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlRGVwcmVjYXRl
ZEZsZXhpYmxlQm94RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVGaWx0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlRmlsdGVyRGF0YTo6Y29w
eSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVGaWx0ZXJEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUZsZXhpYmxlQm94RGF0YTo6Y29weSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
RmxleGlibGVCb3hEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUZsZXhpYmxlQm94RGF0
YTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjpTdHlsZUdlbmVy
YXRlZEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFn
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlR3JpZERhdGE6OmNvcHkpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TdHlsZUdyaWREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdyaWREYXRhOjpj
cmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdyaWRJdGVtRGF0YTo6Y29weSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUdyaWRJdGVtRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVJbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkRGF0
YTo6Y29weSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0ZWREYXRhOjpjcmVhdGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlTWFycXVlZURhdGE6OmNvcHkpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZU1hcnF1ZWVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU1hcnF1ZWVEYXRhOjpj
cmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU11bHRpQ29sRGF0YTo6Y29weSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZU11bHRpQ29sRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhl
cml0ZWREYXRhOjpjb3B5KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6
Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpj
b3B5KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y3JlYXRl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2Nyb2xsU25hcFBvaW50czo6Y29weSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVTY3JvbGxTbmFwUG9pbnRzOjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1
cnJvdW5kRGF0YTo6Y29weSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91
bmREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVN1cnJvdW5kRGF0YTo6Y3JlYXRlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlVHJhbnNmb3JtRGF0YTo6Y29weSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVU
cmFuc2Zvcm1EYXRhOjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVZp
c3VhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVWaXN1YWxEYXRhOjpjb3B5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVZpc3VhbERhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6
UmVuZGVyU1ZHQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2su
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHRWxsaXBzZTo6UmVuZGVyU1ZHRWxsaXBzZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdFbGxpcHNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdG
b3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmpl
Y3Q6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
R3JhZGllbnRTdG9wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0dyYWRpZW50U3Rv
cDo6UmVuZGVyU1ZHR3JhZGllbnRTdG9wKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0dyYWRpZW50U3RvcC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0hpZGRlbkNvbnRh
aW5lcjo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OlJlbmRl
clNWR0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHSW5saW5lOjpSZW5kZXJTVkdJbmxpbmUpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9i
amVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Bh
dGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUGF0aDo6UmVuZGVyU1ZHUGF0aCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1JlY3Q6OlJlbmRlclNWR1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6UmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXI6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlclByaW1pdGl2ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VMaW5l
YXJHcmFkaWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxp
bmVhckdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFz
a2VyOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZVJhZGlh
bEdyYWRpZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFk
aWFsR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6UmVuZGVyU1ZHUm9vdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFw
ZTo6UmVuZGVyU1ZHU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1RleHQ6OlJlbmRlclNWR1RleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQ
YXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OlJlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAq
IHN0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZUZv
ckRvY3VtZW50Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
QUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0FsdEdseXBoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbHRHbHlwaEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBo
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6Y3Jl
YXRlRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6Y3JlYXRlRnJvbUNv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpjcmVhdGVDdXJyZW50Q29sb3IpOgor
ICAgICAgICAqIHN2Zy9TVkdEZWZzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdE
ZWZzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRGVm
c0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6Cisg
ICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZU5hbWVFbGVtZW50OjpzcmNWYWx1ZSk6
CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlTmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNl
VXJpRWxlbWVudDo6c3JjVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVVyaUVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3Jh
cGhpY3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToK
KyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xlbmd0
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OnRvQ1NTUHJpbWl0aXZlVmFsdWUp
OgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGguaDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToK
KyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXNr
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHUGFpbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpjcmVhdGVVbmtu
b3duKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpjcmVhdGVOb25lKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhaW50OjpjcmVhdGVDdXJyZW50Q29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGFpbnQ6OmNyZWF0ZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50Ojpj
cmVhdGVVUkkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6OmNyZWF0ZVVSSUFuZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpjcmVhdGVVUklBbmROb25lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhaW50OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5F
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTVkdFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2
Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgor
ICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTd2l0Y2hF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N3aXRjaEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1i
b2xFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdTeW1i
b2xFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAg
ICogc3ZnL1NWR1RSZWZFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RTcGFuRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUU3BhbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcik6CisgICAgICAgICogc3ZnL1NWR1RTcGFuRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcv
U1ZHVGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToK
KyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorCiAyMDE0LTEyLTEyICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNjgy
MTcpOiBJbWFnZXMgYXJlIGNyb3BwZWQgb3V0IGR1cmluZyBhbmltYXRpb24gYXQgamV0Ymx1ZS5j
b20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIu
Y3BwCmluZGV4IDQzMWQ4ZmQuLjIwYzQxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWY8QmF0dGVyeU1hbmFnZXI+IEJhdHRlcnlNYW5hZ2Vy
OjpjcmVhdGUoTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCitSZWY8QmF0dGVyeU1hbmFnZXI+IEJhdHRl
cnlNYW5hZ2VyOjpjcmVhdGUoTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgYXV0byBiYXR0
ZXJ5TWFuYWdlciA9IGFkb3B0UmVmKCpuZXcgQmF0dGVyeU1hbmFnZXIobmF2aWdhdG9yKSk7CiAg
ICAgYmF0dGVyeU1hbmFnZXIuZ2V0KCkuc3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5oCmluZGV4IDZlYzhmMWYuLmJh
MDJiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFu
YWdlci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBj
bGFzcyBCYXR0ZXJ5TWFuYWdlciA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBSZWZD
b3VudGVkPEJhdHRlcnlNYW5hZ2VyPiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5CYXR0ZXJ5TWFuYWdlcigpOwotICAgIHN0YXRpYyBQYXNzUmVmPEJhdHRlcnlN
YW5hZ2VyPiBjcmVhdGUoTmF2aWdhdG9yKik7CisgICAgc3RhdGljIFJlZjxCYXR0ZXJ5TWFuYWdl
cj4gY3JlYXRlKE5hdmlnYXRvciopOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRp
b24uCiAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhdHRlcnlNYW5hZ2VyRXZlbnRUYXJnZXRJbnRl
cmZhY2VUeXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkv
QmF0dGVyeVN0YXR1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVy
eVN0YXR1cy5jcHAKaW5kZXggM2QyODIyYi4uOTUxZmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmNwcApAQCAtMjYsMTIgKzI2LDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxCYXR0ZXJ5U3RhdHVzPiBCYXR0ZXJ5
U3RhdHVzOjpjcmVhdGUoKQorUmVmPEJhdHRlcnlTdGF0dXM+IEJhdHRlcnlTdGF0dXM6OmNyZWF0
ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmF0dGVyeVN0YXR1cyk7CiB9CiAKLVBh
c3NSZWY8QmF0dGVyeVN0YXR1cz4gQmF0dGVyeVN0YXR1czo6Y3JlYXRlKGJvb2wgY2hhcmdpbmcs
IGRvdWJsZSBjaGFyZ2luZ1RpbWUsIGRvdWJsZSBkaXNjaGFyZ2luZ1RpbWUsIGRvdWJsZSBsZXZl
bCkKK1JlZjxCYXR0ZXJ5U3RhdHVzPiBCYXR0ZXJ5U3RhdHVzOjpjcmVhdGUoYm9vbCBjaGFyZ2lu
ZywgZG91YmxlIGNoYXJnaW5nVGltZSwgZG91YmxlIGRpc2NoYXJnaW5nVGltZSwgZG91YmxlIGxl
dmVsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhdHRlcnlTdGF0dXMoY2hhcmdpbmcs
IGNoYXJnaW5nVGltZSwgZGlzY2hhcmdpbmdUaW1lLCBsZXZlbCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlTdGF0dXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5U3RhdHVzLmgKaW5kZXggMGE5ZDBhMS4uNTE0
YThmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlT
dGF0dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvQmF0dGVyeVN0YXR1
cy5oCkBAIC0yOSw4ICsyOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmF0dGVy
eVN0YXR1cyA6IHB1YmxpYyBSZWZDb3VudGVkPEJhdHRlcnlTdGF0dXM+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZjxCYXR0ZXJ5U3RhdHVzPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUGFz
c1JlZjxCYXR0ZXJ5U3RhdHVzPiBjcmVhdGUoYm9vbCBjaGFyZ2luZywgZG91YmxlIGNoYXJnaW5n
VGltZSwgZG91YmxlIGRpc2NoYXJnaW5nVGltZSwgZG91YmxlIGxldmVsKTsKKyAgICBzdGF0aWMg
UmVmPEJhdHRlcnlTdGF0dXM+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8QmF0dGVyeVN0YXR1
cz4gY3JlYXRlKGJvb2wgY2hhcmdpbmcsIGRvdWJsZSBjaGFyZ2luZ1RpbWUsIGRvdWJsZSBkaXNj
aGFyZ2luZ1RpbWUsIGRvdWJsZSBsZXZlbCk7CiAKICAgICBib29sIGNoYXJnaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGFyZ2luZzsgfQogICAgIGRvdWJsZSBjaGFyZ2luZ1RpbWUoKSBjb25zdCAg
eyByZXR1cm4gbV9jaGFyZ2luZ1RpbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2FtZXBhZC9HYW1lcGFkQnV0dG9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dh
bWVwYWQvR2FtZXBhZEJ1dHRvbi5oCmluZGV4IDEwY2YwZjcuLmJhZWZjZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkQnV0dG9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRCdXR0b24uaApAQCAtMjgsMTQgKzI4
LDE0IEBACiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmLmg+
CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2FtZXBhZEJ1dHRvbiA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdhbWVwYWRCdXR0b24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxHYW1lcGFk
QnV0dG9uPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8R2FtZXBhZEJ1dHRvbj4gY3JlYXRlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdhbWVwYWRCdXR0b24pOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JH
YW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1l
cGFkLmNwcAppbmRleCBhNzFmZmEyLi4zYzU2ZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwCkBAIC03Miw3ICs3Miw3IEBA
IE5hdmlnYXRvckdhbWVwYWQqIE5hdmlnYXRvckdhbWVwYWQ6OmZyb20oTmF2aWdhdG9yKiBuYXZp
Z2F0b3IpCiAgICAgcmV0dXJuIHN1cHBsZW1lbnQ7CiB9CiAKLVBhc3NSZWY8R2FtZXBhZD4gTmF2
aWdhdG9yR2FtZXBhZDo6Z2FtZXBhZEZyb21QbGF0Zm9ybUdhbWVwYWQoUGxhdGZvcm1HYW1lcGFk
JiBwbGF0Zm9ybUdhbWVwYWQpCitSZWY8R2FtZXBhZD4gTmF2aWdhdG9yR2FtZXBhZDo6Z2FtZXBh
ZEZyb21QbGF0Zm9ybUdhbWVwYWQoUGxhdGZvcm1HYW1lcGFkJiBwbGF0Zm9ybUdhbWVwYWQpCiB7
CiAgICAgdW5zaWduZWQgaW5kZXggPSBwbGF0Zm9ybUdhbWVwYWQuaW5kZXgoKTsKICAgICBpZiAo
aW5kZXggPj0gbV9nYW1lcGFkcy5zaXplKCkgfHwgIW1fZ2FtZXBhZHNbaW5kZXhdKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmgKaW5kZXgg
ZTM2OTBjZS4uYmNjYzg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1l
cGFkL05hdmlnYXRvckdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVw
YWQvTmF2aWdhdG9yR2FtZXBhZC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJik7CiAgICAgdm9pZCBnYW1lcGFkRGlz
Y29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpOwogCi0gICAgUGFzc1JlZjxHYW1lcGFkPiBnYW1l
cGFkRnJvbVBsYXRmb3JtR2FtZXBhZChQbGF0Zm9ybUdhbWVwYWQmKTsKKyAgICBSZWY8R2FtZXBh
ZD4gZ2FtZXBhZEZyb21QbGF0Zm9ybUdhbWVwYWQoUGxhdGZvcm1HYW1lcGFkJik7CiAKIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvZGVwcmVjYXRlZC9HYW1lcGFkTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL2RlcHJlY2F0ZWQvR2FtZXBhZExpc3Qu
aAppbmRleCBiN2NlOWJlLi5jNDBjYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dhbWVwYWQvZGVwcmVjYXRlZC9HYW1lcGFkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL0dhbWVwYWRMaXN0LmgKQEAgLTM5LDcgKzM5LDcg
QEAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEdhbWVwYWQ+ID4gR2FtZXBhZFZlY3RvcjsKIAogY2xh
c3MgR2FtZXBhZExpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkTGlzdD4gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmPEdhbWVwYWRMaXN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IEdhbWVwYWRMaXN0KTsgfQorICAgIHN0YXRpYyBSZWY8R2FtZXBhZExpc3Q+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2FtZXBhZExpc3QpOyB9CiAgICAgfkdhbWVw
YWRMaXN0KCk7CiAKICAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxHYW1l
cGFkPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb24uY3BwCmluZGV4IDE3ZGYyNjguLmQwZjhhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0yMjUsNyArMjI1LDcg
QEAgdm9pZCBHZW9sb2NhdGlvbjo6V2F0Y2hlcnM6OmdldE5vdGlmaWVyc1ZlY3RvcihHZW9Ob3Rp
ZmllclZlY3RvciYgY29weSkgY29uc3QKICAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9pZFRvTm90
aWZpZXJNYXAsIGNvcHkpOwogfQogCi1QYXNzUmVmPEdlb2xvY2F0aW9uPiBHZW9sb2NhdGlvbjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitSZWY8R2VvbG9jYXRpb24+
IEdlb2xvY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICBhdXRvIGdlb2xvY2F0aW9uID0gYWRvcHRSZWYoKm5ldyBHZW9sb2NhdGlvbihjb250ZXh0
KSk7CiAgICAgZ2VvbG9jYXRpb24uZ2V0KCkuc3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmgKaW5kZXggNTI2ZGRj
MC4uOTNlMTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb24uaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogY2xhc3MgR2VvbG9jYXRpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMg
UmVmQ291bnRlZDxHZW9sb2NhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QKIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZjxHZW9sb2NhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKKyAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogICAgIFdFQkNPUkVfRVhQT1JUIH5HZW9sb2NhdGlvbigpOwogCiAj
aWYgUExBVEZPUk0oSU9TKQpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogCiAgICAgY2xhc3Mg
R2VvTm90aWZpZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9Ob3RpZmllcj4gewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWY8R2VvTm90aWZpZXI+IGNyZWF0ZShHZW9sb2NhdGlv
biogZ2VvbG9jYXRpb24sIFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxs
YmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxs
YmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IG9wdGlvbnMpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR2VvTm90aWZpZXIoZ2VvbG9jYXRpb24sIHBvc2l0aW9uQ2FsbGJhY2ssIHBvc2l0
aW9uRXJyb3JDYWxsYmFjaywgb3B0aW9ucykpOyB9CisgICAgICAgIHN0YXRpYyBSZWY8R2VvTm90
aWZpZXI+IGNyZWF0ZShHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24sIFBhc3NSZWZQdHI8UG9zaXRp
b25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2Fs
bGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+
IG9wdGlvbnMpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvTm90aWZpZXIoZ2VvbG9jYXRpb24s
IHBvc2l0aW9uQ2FsbGJhY2ssIHBvc2l0aW9uRXJyb3JDYWxsYmFjaywgb3B0aW9ucykpOyB9CiAK
ICAgICAgICAgUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRp
b25zLmdldCgpOyB9OwogICAgICAgICB2b2lkIHNldEZhdGFsRXJyb3IoUGFzc1JlZlB0cjxQb3Np
dGlvbkVycm9yPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2UuY3BwCmluZGV4IDVlMzU0YTUuLmQzNDJhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMTEsNyAr
MTExLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZTo6ZW5kZWRLZXl3b3JkKCkK
ICAgICByZXR1cm4gZW5kZWQ7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2U6OnNldFByaXZhdGVBbmRP
cGVuKFBhc3NSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiBtZWRpYVNvdXJjZVByaXZhdGUpCit2b2lk
IE1lZGlhU291cmNlOjpzZXRQcml2YXRlQW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYm
IG1lZGlhU291cmNlUHJpdmF0ZSkKIHsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZSk7CiAgICAgQVNT
RVJUKG1fbWVkaWFFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuaAppbmRleCBmYWQ0ZGMxLi40YjQzNzhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC03MSw3ICs3
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0cmVhbUVuZGVkV2l0aEVycm9yKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXJyb3IsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIC8vIE1lZGlhU291cmNlUHJp
dmF0ZUNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBzZXRQcml2YXRlQW5kT3BlbihQYXNzUmVmPE1l
ZGlhU291cmNlUHJpdmF0ZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcml2YXRl
QW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcAppbmRleCA3YTM3NmM4Li5iYWMzNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC0xMDksMTQgKzEwOSwxNCBA
QCBzdHJ1Y3QgU291cmNlQnVmZmVyOjpUcmFja0J1ZmZlciB7CiAgICAgfQogfTsKIAotUGFzc1Jl
ZjxTb3VyY2VCdWZmZXI+IFNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKFBhc3NSZWY8U291cmNlQnVmZmVy
UHJpdmF0ZT4gc291cmNlQnVmZmVyUHJpdmF0ZSwgTWVkaWFTb3VyY2UqIHNvdXJjZSkKK1JlZjxT
b3VyY2VCdWZmZXI+IFNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRl
PiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhU291cmNlKiBzb3VyY2UpCiB7CiAgICAgUmVm
UHRyPFNvdXJjZUJ1ZmZlcj4gc291cmNlQnVmZmVyKGFkb3B0UmVmKG5ldyBTb3VyY2VCdWZmZXIo
V1RGOjptb3ZlKHNvdXJjZUJ1ZmZlclByaXZhdGUpLCBzb3VyY2UpKSk7CiAgICAgc291cmNlQnVm
ZmVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gc291cmNlQnVmZmVyLnJlbGVhc2VO
b25OdWxsKCk7CiB9CiAKLVNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFBhc3NSZWY8U291cmNl
QnVmZmVyUHJpdmF0ZT4gc291cmNlQnVmZmVyUHJpdmF0ZSwgTWVkaWFTb3VyY2UqIHNvdXJjZSkK
K1NvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNv
dXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhU291cmNlKiBzb3VyY2UpCiAgICAgOiBBY3RpdmVET01P
YmplY3Qoc291cmNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX3ByaXZhdGUo
V1RGOjptb3ZlKHNvdXJjZUJ1ZmZlclByaXZhdGUpKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgK
aW5kZXggMmRlNjMyZC4uOGM2ZjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIFZpZGVv
VHJhY2tMaXN0OwogCiBjbGFzcyBTb3VyY2VCdWZmZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTb3VyY2VCdWZmZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQsIHB1YmxpYyBBdWRpb1RyYWNrQ2xpZW50LCBwdWJsaWMgVmlkZW9U
cmFja0NsaWVudCwgcHVibGljIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUGFzc1JlZjxTb3VyY2VCdWZmZXJQcml2YXRl
PiwgTWVkaWFTb3VyY2UqKTsKKyAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlcj4gY3JlYXRlKFJl
ZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmLCBNZWRpYVNvdXJjZSopOwogCiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgc2VnbWVudHNLZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgc2VxdWVuY2VLZXl3b3JkKCk7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJl
ZigpOyB9CiAKIHByaXZhdGU6Ci0gICAgU291cmNlQnVmZmVyKFBhc3NSZWY8U291cmNlQnVmZmVy
UHJpdmF0ZT4sIE1lZGlhU291cmNlKik7CisgICAgU291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZm
ZXJQcml2YXRlPiYmLCBNZWRpYVNvdXJjZSopOwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkRW5kU3RyZWFt
KFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
Q2xpZW50LmgKaW5kZXggNTFkNjBjZS4uYjRkOTM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNsaWVudC5oCkBAIC00NCw3ICs0NCw3
IEBAIGNsYXNzIFVzZXJNZWRpYUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBh
Z2VEZXN0cm95ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24o
UGFzc1JlZjxVc2VyTWVkaWFSZXF1ZXN0PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
UGVybWlzc2lvbihSZWY8VXNlck1lZGlhUmVxdWVzdD4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxSZXF1ZXN0KFVzZXJNZWRpYVJlcXVlc3QmKSA9IDA7CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
b250cm9sbGVyLmgKaW5kZXggYTYyYWQxZi4uNzU3NmRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5Vc2VyTWVkaWFDb250cm9sbGVyKCk7CiAKICAg
ICBVc2VyTWVkaWFDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0g
ICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmPFVzZXJNZWRpYVJlcXVlc3Q+KTsKKyAg
ICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiYmKTsKICAgICB2
b2lkIGNhbmNlbFJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYpOwogCiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAg
VXNlck1lZGlhQ2xpZW50KiBtX2NsaWVudDsKIH07CiAKLWlubGluZSB2b2lkIFVzZXJNZWRpYUNv
bnRyb2xsZXI6OnJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWY8VXNlck1lZGlhUmVxdWVzdD4gcmVx
dWVzdCkKK2lubGluZSB2b2lkIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnJlcXVlc3RQZXJtaXNzaW9u
KFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiYmIHJlcXVlc3QpCiB7CiAgICAgbV9jbGllbnQtPnJlcXVl
c3RQZXJtaXNzaW9uKFdURjo6bW92ZShyZXF1ZXN0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IGQwODZl
OTcuLmI5NTc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC05OCw3ICs5OCw3IEBAIE5vdGlmaWNhdGlvbjo6
fk5vdGlmaWNhdGlvbigpCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi1Q
YXNzUmVmPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpIAorUmVmPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0
aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25z
dCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdmlkZXIpIAog
eyAKICAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uKHRp
dGxlLCBib2R5LCBpY29uVVJJLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsKICAgICBub3RpZmlj
YXRpb24uZ2V0KCkuc3VzcGVuZElmTmVlZGVkKCk7CkBAIC0xMDcsNyArMTA3LDcgQEAgUGFzc1Jl
ZjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IFN0cmluZyYgYm8KICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi1Q
YXNzUmVmPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGljdGlvbmFyeSYg
b3B0aW9ucykKK1JlZjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IERpY3Rp
b25hcnkmIG9wdGlvbnMpCiB7CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBhZG9wdFJlZigqbmV3
IE5vdGlmaWNhdGlvbihjb250ZXh0LCB0aXRsZSkpOwogICAgIFN0cmluZyBhcmd1bWVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAppbmRleCA1MDc5N2FlLi42YjY5NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC02NiwxMCArNjYsMTAgQEAgY2xh
c3MgTm90aWZpY2F0aW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPiwg
cHVibGljIEFjdGl2ZURPTU9iamUKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBOb3RpZmlj
YXRpb24oKTsKICNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgc3RhdGljIFBh
c3NSZWY8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVy
KTsKKyAgICBzdGF0aWMgUmVmPE5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJJLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2Vu
dGVyPiBwcm92aWRlcik7CiAjZW5kaWYKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBz
dGF0aWMgUGFzc1JlZjxOb3RpZmljYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucyk7CisgICAg
c3RhdGljIFJlZjxOb3RpZmljYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucyk7CiAjZW5kaWYK
ICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5jcHAKaW5kZXggM2E1YTAwNy4uMDk1ODJmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
PE5vdGlmaWNhdGlvbkNlbnRlcj4gTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCitSZWY8
Tm90aWZpY2F0aW9uQ2VudGVyPiBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKIHsKICAg
ICBhdXRvIG5vdGlmaWNhdGlvbkNlbnRlciA9IGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uQ2Vu
dGVyKGNvbnRleHQsIGNsaWVudCkpOwogICAgIG5vdGlmaWNhdGlvbkNlbnRlci5nZXQoKS5zdXNw
ZW5kSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaAppbmRleCBkM2NkYTNiLi4yMDBkOGFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFZvaWRDYWxsYmFjazsK
IAogY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0
aW9uQ2VudGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWY8Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE5vdGlmaWNhdGlvbkNsaWVudCopOworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uQ2Vu
dGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5vdGlmaWNhdGlvbkNsaWVudCop
OwogCiAjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIFBhc3NSZWZQdHI8Tm90
aWZpY2F0aW9uPiBjcmVhdGVOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBpY29uVVJJLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIEV4Y2VwdGlvbkNvZGUmIGVjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1BsdWdpblJlcGxhY2Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQu
aAppbmRleCA2MGY5MThkLi4wMWM5MGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUGx1Z2luUmVwbGFjZW1lbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoKSB7IHJldHVybiAwOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPikgPSAwOworICAg
IHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihI
VE1MUGx1Z0luRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6
CiAgICAgUGx1Z2luUmVwbGFjZW1lbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKaW5kZXgg
M2M4YWE5OS4uYjBjNWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVn
aW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmgKQEAgLTU0LDcgKzU0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0KCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV9zY3JpcHRPYmplY3Q7IH0KIAogICAgIHZpcnR1YWwgYm9vbCB3aWxs
Q3JlYXRlUmVuZGVyZXIoKSBvdmVycmlkZSB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQotICAg
IHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihI
VE1MUGx1Z0luRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRN
TFBsdWdJbkVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgSFRN
TFZpZGVvRWxlbWVudCogcGFyZW50RWxlbWVudCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50Lmdl
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCBlYWQ2ZGM2Li40ZDJjYzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQ6On5RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudCgpCiAgICAgbV9tZWRp
YUVsZW1lbnQgPSBudWxscHRyOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihIVE1MUGx1Z0luRWxl
bWVudCYgcGx1Z2luLCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHBsdWdpbiwgbV9wYXJlbnRFbGVtZW50ID09ICZwbHVnaW4p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDU1YmE2ZWQuLmJkZWFiNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVu
dDo6WW91VHViZVBsdWdpblJlcGxhY2VtZW50KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW4sIGNv
CiAgICAgICAgIG1fYXR0cmlidXRlcy5hZGQocGFyYW1OYW1lc1tpXSwgcGFyYW1WYWx1ZXNbaV0p
OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gWW91VHViZVBsdWdpblJlcGxhY2VtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gWW91VHViZVBs
dWdpblJlcGxhY2VtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQm
IHBsdWdpbiwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIEFTU0VSVF9VTlVTRUQo
cGx1Z2luLCBtX3BhcmVudEVsZW1lbnQgPT0gJnBsdWdpbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaApp
bmRleCAwOTUzYzk5Li5lZjA4ZjNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuaApAQCAtNjAsNyArNjAs
NyBAQCBwcml2YXRlOgogICAgIFN0cmluZyB5b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgcmF3VVJM
KTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9lbWJlZFNoYWRvd0VsZW1lbnQ7IH0KLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVm
PFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICAKICAgICBIVE1MUGx1Z0luRWxlbWVudCog
bV9wYXJlbnRFbGVtZW50OwogICAgIFJlZlB0cjxZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50PiBt
X2VtYmVkU2hhZG93RWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cHJveGltaXR5L0RldmljZVByb3hpbWl0eUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3Byb3hpbWl0eS9EZXZpY2VQcm94aW1pdHlFdmVudC5oCmluZGV4IDkzZmJiZmEuLmUyOTdjNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHJveGltaXR5L0RldmljZVByb3hp
bWl0eUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wcm94aW1pdHkvRGV2aWNl
UHJveGltaXR5RXZlbnQuaApAQCAtNDYsMTcgKzQ2LDE3IEBAIGNsYXNzIERldmljZVByb3hpbWl0
eUV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKICAgICB+RGV2aWNlUHJveGltaXR5RXZl
bnQoKSB7IH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPERldmljZVByb3hpbWl0eUV2ZW50PiBjcmVh
dGUoKQorICAgIHN0YXRpYyBSZWY8RGV2aWNlUHJveGltaXR5RXZlbnQ+IGNyZWF0ZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2VQcm94aW1pdHlFdmVudCgpKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxEZXZpY2VQcm94aW1pdHlFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBkb3VibGUgdmFsdWUsIGNvbnN0
IGRvdWJsZSBtaW4sIGNvbnN0IGRvdWJsZSBtYXgpCisgICAgc3RhdGljIFJlZjxEZXZpY2VQcm94
aW1pdHlFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBk
b3VibGUgdmFsdWUsIGNvbnN0IGRvdWJsZSBtaW4sIGNvbnN0IGRvdWJsZSBtYXgpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2VQcm94aW1pdHlFdmVudChldmVudFR5
cGUsIHZhbHVlLCBtaW4sIG1heCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPERldmlj
ZVByb3hpbWl0eUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBE
ZXZpY2VQcm94aW1pdHlFdmVudEluaXQmIGluaXRpYWxpemVyKQorICAgIHN0YXRpYyBSZWY8RGV2
aWNlUHJveGltaXR5RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IERldmljZVByb3hpbWl0eUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2VQcm94aW1pdHlFdmVudCh0eXBlLCBpbml0aWFsaXpl
cikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNWVmZTJhNC4uNzgxMGI0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KQEAgLTUzMSw3ICs1MzEsNyBAQCBfX1pON1dlYkNvcmUxNUdyYXBo
aWNzQ29udGV4dDEyc2V0RmlsbENvbG9yRVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKIF9f
Wk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTRzZXRTdHJva2VDb2xvckVSS05TXzVDb2xvckVO
U18xMENvbG9yU3BhY2VFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE1ZHJhd0ltYWdl
QnVmZmVyRVBOU18xMUltYWdlQnVmZmVyRU5TXzEwQ29sb3JTcGFjZUVSS05TXzEwRmxvYXRQb2lu
dEVSS05TXzIwSW1hZ2VQYWludGluZ09wdGlvbnNFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29u
dGV4dDE1ZHJhd05hdGl2ZUltYWdlRVA3Q0dJbWFnZVJLTlNfOUZsb2F0U2l6ZUVOU18xMENvbG9y
U3BhY2VFUktOU185RmxvYXRSZWN0RVM5X05TXzE3Q29tcG9zaXRlT3BlcmF0b3JFTlNfOUJsZW5k
TW9kZUVOU18xNkltYWdlT3JpZW50YXRpb25FCi1fX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4
dDE1c2V0RmlsbEdyYWRpZW50RU4zV1RGN1Bhc3NSZWZJTlNfOEdyYWRpZW50RUVFCitfX1pON1dl
YkNvcmUxNUdyYXBoaWNzQ29udGV4dDE1c2V0RmlsbEdyYWRpZW50RU9OM1dURjNSZWZJTlNfOEdy
YWRpZW50RUVFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE4c2V0U2hvdWxkQW50aWFs
aWFzRWIKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTlzZXRJc0NBTGF5ZXJDb250ZXh0
RWIKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjBlbmRUcmFuc3BhcmVuY3lMYXllckV2
CkBAIC0xMDg1LDggKzEwODUsOCBAQCBfX1pON1dlYkNvcmUyN3Byb3RvY29sSG9zdEFuZFBvcnRB
cmVFcXVhbEVSS05TXzNVUkxFUzJfCiBfX1pON1dlYkNvcmUyN3JlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvckVSTjNKU0M5RXhlY1N0YXRlRVBLY1M0XwogX19aTjdXZWJDb3JlMjdyZXBvcnREZXBy
ZWNhdGVkU2V0dGVyRXJyb3JFUk4zSlNDOUV4ZWNTdGF0ZUVQS2NTNF8KIF9fWk43V2ViQ29yZTI3
c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzRVBGdnZFCi1fX1pON1dlYkNvcmUyOERvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb24xMmFkZFVzZXJTaGVldEVOM1dURjdQYXNzUmVmSU5TXzE4U3R5
bGVTaGVldENvbnRlbnRzRUVFCi1fX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxl
Y3Rpb24xNGFkZEF1dGhvclNoZWV0RU4zV1RGN1Bhc3NSZWZJTlNfMThTdHlsZVNoZWV0Q29udGVu
dHNFRUUKK19fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjEyYWRkVXNl
clNoZWV0RU9OM1dURjNSZWZJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUUKK19fWk43V2ViQ29y
ZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjE0YWRkQXV0aG9yU2hlZXRFT04zV1RGM1Jl
ZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQogX19aTjdXZWJDb3JlMjhVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yQzFFUktOM1dURjEyQXRvbWljU3RyaW5nRVJOU18xNURPTVdyYXBwZXJX
b3JsZEVSTlMwXzZDbGllbnRFCiBfX1pON1dlYkNvcmUyOFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3JEMUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXNFUktO
M1dURjZTdHJpbmdFCkBAIC0xMTYxLDcgKzExNjEsNyBAQCBfX1pON1dlYkNvcmU0UGFnZTE4c2V0
UGFnZVNjYWxlRmFjdG9yRWZSS05TXzhJbnRQb2ludEViCiBfX1pON1dlYkNvcmU0UGFnZTE4c2V0
VG9wQ29udGVudEluc2V0RWYKIF9fWk43V2ViQ29yZTRQYWdlMTlhZGRMYXlvdXRNaWxlc3RvbmVz
RWoKIF9fWk43V2ViQ29yZTRQYWdlMTllbmFibGVQYWdlVGhyb3R0bGVyRXYKLV9fWk43V2ViQ29y
ZTRQYWdlMTlzZXRWaXNpdGVkTGlua1N0b3JlRU4zV1RGN1Bhc3NSZWZJTlNfMTZWaXNpdGVkTGlu
a1N0b3JlRUVFCitfX1pON1dlYkNvcmU0UGFnZTE5c2V0VmlzaXRlZExpbmtTdG9yZUVPTjNXVEYz
UmVmSU5TXzE2VmlzaXRlZExpbmtTdG9yZUVFRQogX19aTjdXZWJDb3JlNFBhZ2UyMHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yRXYKIF9fWk43V2ViQ29yZTRQYWdlMjBzZXREZXZpY2VTY2FsZUZhY3RvckVm
CiBfX1pON1dlYkNvcmU0UGFnZTIwdW5tYXJrQWxsVGV4dE1hdGNoZXNFdgpAQCAtMTI5Miw3ICsx
MjkyLDcgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjdjb3B5VVJMRVJLTlNfM1VSTEVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTZFZGl0b3I3b3V0ZGVudEV2CiBfX1pON1dlYkNvcmU2SlNOb2Rl
NnNfaW5mb0UKIF9fWk43V2ViQ29yZTZKU05vZGU5dG9XcmFwcGVkRU4zSlNDN0pTVmFsdWVFCi1f
X1pON1dlYkNvcmU2TGVuZ3RoQzFFTjNXVEY3UGFzc1JlZklOU18xNkNhbGN1bGF0aW9uVmFsdWVF
RUUKK19fWk43V2ViQ29yZTZMZW5ndGhDMUVPTjNXVEYzUmVmSU5TXzE2Q2FsY3VsYXRpb25WYWx1
ZUVFRQogX19aTjdXZWJDb3JlNlJlZ2lvbjIxdXBkYXRlQm91bmRzRnJvbVNoYXBlRXYKIF9fWk43
V2ViQ29yZTZSZWdpb241dW5pdGVFUktTMF8KIF9fWk43V2ViQ29yZTZSZWdpb244c3VidHJhY3RF
UktTMF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAppbmRleCA5
NmUxNGRhLi5kY2IxZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFw
ZUZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlv
bnMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBiYXNpY1NoYXBlUmFkaXVzVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsCiAgICAgcmV0
dXJuIDA7CiB9CiAKLVBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yQmFzaWNTaGFwZShjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEJhc2ljU2hhcGUmIGJhc2ljU2hhcGUpCitSZWY8Q1NT
VmFsdWU+IHZhbHVlRm9yQmFzaWNTaGFwZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0
IEJhc2ljU2hhcGUmIGJhc2ljU2hhcGUpCiB7CiAgICAgQ1NTVmFsdWVQb29sJiBwb29sID0gY3Nz
VmFsdWVQb29sKCk7CiAKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgQmFzaWNTaGFwZVJhZGl1
cyBjc3NWYWx1ZVRvQmFzaWNTaGFwZVJhZGl1cyhjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YQogICAgIHJldHVybiBCYXNpY1NoYXBlUmFkaXVzKGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9u
RGF0YSwgcmFkaXVzLmdldCgpKSk7CiB9CiAKLVBhc3NSZWY8QmFzaWNTaGFwZT4gYmFzaWNTaGFw
ZUZvclZhbHVlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRh
LCBjb25zdCBDU1NCYXNpY1NoYXBlKiBiYXNpY1NoYXBlVmFsdWUpCitSZWY8QmFzaWNTaGFwZT4g
YmFzaWNTaGFwZUZvclZhbHVlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZl
cnNpb25EYXRhLCBjb25zdCBDU1NCYXNpY1NoYXBlKiBiYXNpY1NoYXBlVmFsdWUpCiB7CiAgICAg
UmVmUHRyPEJhc2ljU2hhcGU+IGJhc2ljU2hhcGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNT
aGFwZUZ1bmN0aW9ucy5oCmluZGV4IDY4Y2M3YTYuLmYxY2ZhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuaApAQCAtNDIsOCArNDIsOCBAQCBjbGFzcyBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhOwogY2xhc3MgQ1NTVmFsdWU7CiBjbGFzcyBSZW5kZXJTdHlsZTsK
IAotUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JCYXNpY1NoYXBlKGNvbnN0IFJlbmRlclN0eWxl
KiwgY29uc3QgQmFzaWNTaGFwZSYpOwotUGFzc1JlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9y
VmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIGNvbnN0IENTU0Jhc2ljU2hh
cGUqKTsKK1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JCYXNpY1NoYXBlKGNvbnN0IFJlbmRlclN0eWxl
KiwgY29uc3QgQmFzaWNTaGFwZSYpOworUmVmPEJhc2ljU2hhcGU+IGJhc2ljU2hhcGVGb3JWYWx1
ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgY29uc3QgQ1NTQmFzaWNTaGFwZSop
OwogCiBmbG9hdCBmbG9hdFZhbHVlRm9yQ2VudGVyQ29vcmRpbmF0ZShjb25zdCBCYXNpY1NoYXBl
Q2VudGVyQ29vcmRpbmF0ZSYsIGZsb2F0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0
UmF0aW9WYWx1ZS5oCmluZGV4IDg3ZDU0NmIuLmNhYjhhOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDU1NBc3BlY3RSYXRpb1ZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NBc3BlY3RSYXRpb1ZhbHVlPiBjcmVhdGUoZmxv
YXQgbnVtZXJhdG9yVmFsdWUsIGZsb2F0IGRlbm9taW5hdG9yVmFsdWUpCisgICAgc3RhdGljIFJl
ZjxDU1NBc3BlY3RSYXRpb1ZhbHVlPiBjcmVhdGUoZmxvYXQgbnVtZXJhdG9yVmFsdWUsIGZsb2F0
IGRlbm9taW5hdG9yVmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NBc3BlY3RSYXRpb1ZhbHVlKG51bWVyYXRvclZhbHVlLCBkZW5vbWluYXRvclZhbHVlKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5jcHAKaW5kZXggZjk0NmJjYS4uYmU3
NDMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuY3BwCkBAIC0yMiw3ICsyMiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0
ZUJvcmRlckltYWdlVmFsdWUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IGltYWdlU2xpY2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGJvcmRlclNsaWNlLCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJlcGVhdCkK
K1JlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUJvcmRlckltYWdlVmFsdWUoUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gaW1hZ2UsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGltYWdlU2xpY2UsIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IGJvcmRlclNsaWNlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBvdXRzZXQsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHJlcGVhdCkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGltYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Qm9yZGVySW1hZ2UuaAppbmRleCAwNmZhNTQzLi5jMmMyNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Qm9yZGVySW1hZ2UuaApAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IGltYWdlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZVNsaWNlLCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBib3JkZXJTbGljZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gb3V0c2V0LCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiByZXBlYXQpOworUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlQm9y
ZGVySW1hZ2VWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBpbWFnZSwgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gaW1hZ2VTbGljZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gYm9yZGVyU2xpY2UsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IG91dHNldCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0KTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlLmgKaW5kZXggOGI5ZmU0YS4uYjhiNzU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaApAQCAtMzYsNyArMzYsNyBAQCBj
bGFzcyBSZWN0OwogCiBjbGFzcyBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUgOiBwdWJsaWMgQ1NT
VmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU0JvcmRlckltYWdlU2xpY2VW
YWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNsaWNlcywgYm9vbCBm
aWxsKQorICAgIHN0YXRpYyBSZWY8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiBjcmVhdGUoUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2xpY2VzLCBib29sIGZpbGwpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUoc2xpY2Vz
LCBmaWxsKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
Y3BwCmluZGV4IGZhOTk1ZjYuLjRjNzE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBkb3VibGUgQ1NTQ2FsY1ZhbHVl
Ojpjb21wdXRlTGVuZ3RoUHgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVy
c2lvbgogY2xhc3MgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlIGZpbmFsIDogcHVibGljIENTU0NhbGNF
eHByZXNzaW9uTm9kZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWY8Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWUsIGJvb2wgaXNJbnRlZ2VyKQorICAgIHN0YXRpYyBS
ZWY8Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gdmFsdWUsIGJvb2wgaXNJbnRlZ2VyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCBpc0ludGVnZXIpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCBmYzA0NDNmLi4y
ZDBjMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKQEAgLTk1
LDEzICs5NSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc05lZ2F0aXZlKCkgY29uc3QgeyByZXR1
cm4gbV9leHByZXNzaW9uLT5kb3VibGVWYWx1ZSgpIDwgMDsgfQogICAgIGRvdWJsZSBjb21wdXRl
TGVuZ3RoUHgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0OwogCi0gICAg
UGFzc1JlZjxDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGVDYWxjdWxhdGlvblZhbHVlKGNvbnN0IENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmKSBjb25zdDsKKyAgICBSZWY8Q2FsY3VsYXRpb25WYWx1
ZT4gY3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
JikgY29uc3Q7CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0NhbGNWYWx1ZSYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0Nh
bGNWYWx1ZShQYXNzUmVmPENTU0NhbGNFeHByZXNzaW9uTm9kZT4sIGJvb2wgc2hvdWxkQ2xhbXBU
b05vbk5lZ2F0aXZlKTsKKyAgICBDU1NDYWxjVmFsdWUoUmVmPENTU0NhbGNFeHByZXNzaW9uTm9k
ZT4mJiwgYm9vbCBzaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUpOwogCiAgICAgZG91YmxlIGNsYW1w
VG9QZXJtaXR0ZWRSYW5nZShkb3VibGUpIGNvbnN0OwogCkBAIC0xMDksMTQgKzEwOSwxNCBAQCBw
cml2YXRlOgogICAgIGNvbnN0IGJvb2wgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmU7CiB9Owog
Ci1pbmxpbmUgQ1NTQ2FsY1ZhbHVlOjpDU1NDYWxjVmFsdWUoUGFzc1JlZjxDU1NDYWxjRXhwcmVz
c2lvbk5vZGU+IGV4cHJlc3Npb24sIGJvb2wgc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlKQoraW5s
aW5lIENTU0NhbGNWYWx1ZTo6Q1NTQ2FsY1ZhbHVlKFJlZjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+
JiYgZXhwcmVzc2lvbiwgYm9vbCBzaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUpCiAgICAgOiBDU1NW
YWx1ZShDYWxjdWxhdGlvbkNsYXNzKQogICAgICwgbV9leHByZXNzaW9uKFdURjo6bW92ZShleHBy
ZXNzaW9uKSkKICAgICAsIG1fc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlKHNob3VsZENsYW1wVG9O
b25OZWdhdGl2ZSkKIHsKIH0KIAotaW5saW5lIFBhc3NSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gQ1NT
Q2FsY1ZhbHVlOjpjcmVhdGVDYWxjdWxhdGlvblZhbHVlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhKSBjb25zdAoraW5saW5lIFJlZjxDYWxjdWxhdGlvblZh
bHVlPiBDU1NDYWxjVmFsdWU6OmNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENh
bGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShtX2V4cHJlc3Npb24tPmNyZWF0ZUNhbGNFeHByZXNzaW9u
KGNvbnZlcnNpb25EYXRhKSwKICAgICAgICAgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUgPyBD
YWxjdWxhdGlvblJhbmdlTm9uTmVnYXRpdmUgOiBDYWxjdWxhdGlvblJhbmdlQWxsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKaW5kZXggMzJlZWM2ZC4uNTMzNzgwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRG9jdW1lbnQ7
CiAKIGNsYXNzIENTU0NhbnZhc1ZhbHVlIDogcHVibGljIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU0NhbnZhc1ZhbHVlPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBuYW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0NhbnZhc1ZhbHVlKG5h
bWUpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTQ2FudmFzVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIG5hbWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ2FudmFzVmFsdWUobmFtZSkpOyB9
CiAgICAgfkNTU0NhbnZhc1ZhbHVlKCk7CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAppbmRleCAyYzVkYmMxLi4zYmM0ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDY4LDcgKzQ2OCw3IEBA
IHN0YXRpYyBDU1NWYWx1ZUlEIHZhbHVlRm9yUmVwZWF0UnVsZShpbnQgcnVsZSkKICAgICB9CiB9
CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvckltYWdlU2xpY2VT
aWRlKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4g
dmFsdWVGb3JJbWFnZVNsaWNlU2lkZShjb25zdCBMZW5ndGgmIGxlbmd0aCkKIHsKICAgICAvLyBU
aGVzZSB2YWx1ZXMgY2FuIGJlIHBlcmNlbnRhZ2VzLCBudW1iZXJzLCBvciB3aGlsZSBhbiBhbmlt
YXRpb24gb2YgbWl4ZWQgdHlwZXMgaXMgaW4gcHJvZ3Jlc3MsCiAgICAgLy8gYSBjYWxjdWxhdGlv
biB0aGF0IGNvbWJpbmVzIGEgcGVyY2VudGFnZSBhbmQgYSBudW1iZXIuCkBAIC00ODQsNyArNDg0
LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9ySW1hZ2VTbGlj
ZVNpZGUoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZVZhbHVlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKIH0KIAotc3RhdGlj
IFBhc3NSZWY8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdl
U2xpY2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQorc3RhdGljIFJlZjxDU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VTbGljZShjb25zdCBOaW5lUGll
Y2VJbWFnZSYgaW1hZ2UpCiB7CiAgICAgYXV0byYgc2xpY2VzID0gaW1hZ2UuaW1hZ2VTbGljZXMo
KTsKIApAQCAtNTIzLDcgKzUyMyw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZT4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZVNsaWNlKGNvbnN0IE5pbmVQCiAgICAgcmV0
dXJuIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6Y3JlYXRlKGNzc1ZhbHVlUG9vbCgpLmNyZWF0
ZVZhbHVlKHF1YWQucmVsZWFzZSgpKSwgaW1hZ2UuZmlsbCgpKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VRdWFkKGNvbnN0IExl
bmd0aEJveCYgYm94KQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JOaW5l
UGllY2VJbWFnZVF1YWQoY29uc3QgTGVuZ3RoQm94JiBib3gpCiB7CiAgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiB0b3A7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByaWdodDsK
QEAgLTU3NCw3ICs1NzQsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
dWVGb3JOaW5lUGllY2VJbWFnZVF1YWQoY29uc3QgTGVuZ3RoQm94JiBibwogICAgIHJldHVybiBj
c3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShxdWFkLnJlbGVhc2UoKSk7CiB9CiAKLXN0YXRpYyBQ
YXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUmVwZWF0KGNvbnN0IE5pbmVQ
aWVjZUltYWdlJiBpbWFnZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNl
SW1hZ2VSZXBlYXQoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQogewogICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gaG9yaXpvbnRhbFJlcGVhdDsKICAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHZlcnRpY2FsUmVwZWF0OwpAQCAtNTg3LDcgKzU4Nyw3IEBAIHN0YXRpYyBQYXNz
UmVmPENTU1ZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdlUmVwZWF0KGNvbnN0IE5pbmVQaWVj
ZUltYWdlJiBpbWFnCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKFBhaXI6
OmNyZWF0ZShob3Jpem9udGFsUmVwZWF0LnJlbGVhc2UoKSwgdmVydGljYWxSZXBlYXQucmVsZWFz
ZSgpKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUlt
YWdlKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHZh
bHVlRm9yTmluZVBpZWNlSW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQogewogICAg
IGlmICghaW1hZ2UuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwpAQCAtNjEyLDI0ICs2MTIsMjQgQEAg
c3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2UoY29uc3QgTmlu
ZVBpZWNlSW1hZ2UmIGltYWdlKQogICAgIHJldHVybiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKGlt
YWdlVmFsdWUucmVsZWFzZSgpLCBpbWFnZVNsaWNlcy5yZWxlYXNlKCksIGJvcmRlclNsaWNlcy5y
ZWxlYXNlKCksIG91dHNldC5yZWxlYXNlKCksIHJlcGVhdC5yZWxlYXNlKCkpOwogfQogCi1pbmxp
bmUgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHpvb21BZGp1c3RlZFBpeGVsVmFs
dWUoZG91YmxlIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitpbmxpbmUgc3RhdGlj
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShkb3VibGUgdmFs
dWUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3NzVmFsdWVQb29s
KCkuY3JlYXRlVmFsdWUoYWRqdXN0RmxvYXRGb3JBYnNvbHV0ZVpvb20odmFsdWUsIHN0eWxlKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiB9CiAKLWlubGluZSBzdGF0aWMgUGFzc1JlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gem9vbUFkanVzdGVkTnVtYmVyVmFsdWUoZG91YmxlIHZhbHVlLCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitpbmxpbmUgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gem9vbUFkanVzdGVkTnVtYmVyVmFsdWUoZG91YmxlIHZhbHVlLCBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHZh
bHVlIC8gc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
KQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChj
b25zdCBMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlm
IChsZW5ndGguaXNGaXhlZCgpKQogICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZShsZW5ndGgudmFsdWUoKSwgc3R5bGUpOwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZShsZW5ndGgsIHN0eWxlKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHZh
bHVlRm9yUmVmbGVjdGlvbihjb25zdCBTdHlsZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIGNvbnN0
IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yUmVmbGVj
dGlvbihjb25zdCBTdHlsZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSkKIHsKICAgICBpZiAoIXJlZmxlY3Rpb24pCiAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKQEAgLTY1OSw3ICs2
NTksNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JSZWZsZWN0aW9uKGNvbnN0
IFN0eWxlUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgYwogICAgIHJldHVybiBDU1NSZWZsZWN0VmFs
dWU6OmNyZWF0ZShkaXJlY3Rpb24ucmVsZWFzZSgpLCBvZmZzZXQucmVsZWFzZSgpLCB2YWx1ZUZv
ck5pbmVQaWVjZUltYWdlKHJlZmxlY3Rpb24tPm1hc2soKSkpOwogfQogCi1zdGF0aWMgUGFzc1Jl
ZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZVBvc2l0aW9uTGlzdEZvckxheWVyKENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgY29uc3QgRmlsbExheWVyKiBsYXllciwgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZVBvc2l0aW9uTGlzdEZvckxheWVy
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgRmlsbExheWVyKiBsYXllciwgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGF1dG8gcG9zaXRpb25MaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGlmIChsYXllci0+aXNCYWNrZ3JvdW5k
T3JpZ2luU2V0KCkpIHsKQEAgLTcyMyw3ICs3MjMsNyBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Io
UgogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVDb2xvclZhbHVlKGNvbG9yLnJnYigp
KTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHBlcmNlbnRhZ2VPclpv
b21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkK
K3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZh
bHVlKExlbmd0aCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAo
bGVuZ3RoLmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbCgpLmNyZWF0ZVZhbHVlKGxlbmd0aC5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSk7CkBAIC03MzEsNyArNzMxLDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVlKExlbmd0aCBsZW5ndGgs
IGMKICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2YWx1ZUZvckxlbmd0aChsZW5n
dGgsIDApLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBh
dXRvT3Jab29tQWRqdXN0ZWRWYWx1ZShMZW5ndGggbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBhdXRvT3Jab29tQWRqdXN0ZWRW
YWx1ZShMZW5ndGggbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaWYg
KGxlbmd0aC5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwpAQCAtNzM5LDcgKzczOSw3IEBAIHN0YXRpYyBQ
YXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBhdXRvT3Jab29tQWRqdXN0ZWRWYWx1ZShMZW5ndGgg
bGVuZ3RoLCBjb25zdCBSCiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVG
b3JMZW5ndGgobGVuZ3RoLCAwKSwgc3R5bGUpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1
ZUxpc3Q+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhjb25zdCBMZW5ndGhTaXplJiByYWRp
dXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBn
ZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHBlcmNlbnRhZ2VP
clpvb21BZGp1c3RlZFZhbHVlKHJhZGl1cy53aWR0aCgpLCBzdHlsZSkpOwpAQCAtNzQ3LDcgKzc0
Nyw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVy
VmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShjb25zdCBM
ZW5ndGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8
Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0aFNpemUmIHJh
ZGl1cywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmIChyYWRpdXMud2lkdGgo
KSA9PSByYWRpdXMuaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiBwZXJjZW50YWdlT3Jab29tQWRq
dXN0ZWRWYWx1ZShyYWRpdXMud2lkdGgoKSwgc3R5bGUpOwpAQCAtNzU1LDcgKzc1NSw3IEBAIHN0
YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShjb25zdCBM
ZW5ndGhTaXplJiByYWRpdXMsIGNvCiAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZh
bHVlcyhyYWRpdXMsIHN0eWxlKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBn
ZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitz
dGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU2xhc2hTZXBhcmF0ZWQoKTsKICAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVm
dCA9IHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCkgIT0gc3R5bGUtPmJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aCgpOwpAQCAtODA2LDcgKzgwNiw3IEBAIHN0YXRpYyBM
YXlvdXRSZWN0IHNpemluZ0JveChSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogICAgIHJldHVybiBi
b3guc3R5bGUoKS5ib3hTaXppbmcoKSA9PSBCT1JERVJfQk9YID8gYm94LmJvcmRlckJveFJlY3Qo
KSA6IGJveC5jb21wdXRlZENTU0NvbnRlbnRCb3hSZWN0KCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
PFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBtYXRyaXhUcmFuc2Zvcm1WYWx1ZShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitz
dGF0aWMgUmVmPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBtYXRyaXhUcmFuc2Zvcm1WYWx1ZShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUpCiB7CiAgICAgUmVmUHRyPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiB0cmFuc2Zvcm1W
YWx1ZTsKICAgICBpZiAodHJhbnNmb3JtLmlzQWZmaW5lKCkpIHsKQEAgLTg0NSw3ICs4NDUsNyBA
QCBzdGF0aWMgUGFzc1JlZjxXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZT4gbWF0cml4VHJhbnNmb3Jt
VmFsdWUoY29uc3QgVHJhbnNmb3JtYXRpbwogICAgIHJldHVybiB0cmFuc2Zvcm1WYWx1ZS5yZWxl
YXNlTm9uTnVsbCgpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gY29tcHV0ZWRUcmFu
c2Zvcm0oUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQor
c3RhdGljIFJlZjxDU1NWYWx1ZT4gY29tcHV0ZWRUcmFuc2Zvcm0oUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGlmICghcmVuZGVyZXIgfHwg
IXJlbmRlcmVyLT5oYXNUcmFuc2Zvcm0oKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwpAQCAtODY0LDE3ICs4NjQsMTcg
QEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGNvbXB1dGVkVHJhbnNmb3JtKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclMKICAgICByZXR1cm4gV1RGOjptb3ZlKGxpc3QpOwog
fQogCi1zdGF0aWMgaW5saW5lIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGFkanVzdExlbmd0
aEZvclpvb20oZG91YmxlIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBBZGp1c3RQ
aXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgYWRqdXN0KQorc3RhdGljIGlubGluZSBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IGFkanVzdExlbmd0aEZvclpvb20oZG91YmxlIGxlbmd0aCwgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgYWRq
dXN0KQogewogICAgIHJldHVybiBhZGp1c3QgPT0gQWRqdXN0UGl4ZWxWYWx1ZXMgPyB6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlKGxlbmd0aCwgc3R5bGUpIDogY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFs
dWUobGVuZ3RoLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBhZGp1c3RMZW5ndGhGb3Jab29tKGNvbnN0IExl
bmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIEFkanVzdFBpeGVsVmFsdWVz
Rm9yQ29tcHV0ZWRTdHlsZSBhZGp1c3QpCitzdGF0aWMgaW5saW5lIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gYWRqdXN0TGVuZ3RoRm9yWm9vbShjb25zdCBMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgYWRqdXN0
KQogewogICAgIHJldHVybiBhZGp1c3QgPT0gQWRqdXN0UGl4ZWxWYWx1ZXMgPyB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKGxlbmd0aC52YWx1ZSgpLCBzdHlsZSkgOiBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZShsZW5ndGgpOwogfQogCi1QYXNzUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjp2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBBZGp1c3RQaXhlbFZh
bHVlc0ZvckNvbXB1dGVkU3R5bGUgYWRqdXN0KQorUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjp2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBBZGp1c3RQaXhl
bFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgYWRqdXN0KQogewogICAgIGlmICghc2hhZG93KQogICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVl
Tm9uZSk7CkBAIC04OTIsNyArODkyLDcgQEAgUGFzc1JlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSogc2hhZG8KICAgICBy
ZXR1cm4gV1RGOjptb3ZlKGxpc3QpOwogfQogCi1QYXNzUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlck9wZXJhdGlvbnMsIEFkanVzdFBpeGVsVmFsdWVz
Rm9yQ29tcHV0ZWRTdHlsZSBhZGp1c3QpCitSZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVyT3BlcmF0aW9ucywgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21w
dXRlZFN0eWxlIGFkanVzdCkKIHsKICAgICBpZiAoZmlsdGVyT3BlcmF0aW9ucy5vcGVyYXRpb25z
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CkBAIC05ODQsNyArOTg0LDcgQEAgUGFzc1JlZjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWwKIH0KIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi1zdGF0aWMgUGFz
c1JlZjxDU1NWYWx1ZT4gc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IEdy
aWRMZW5ndGgmIHRyYWNrQnJlYWR0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IEdy
aWRMZW5ndGgmIHRyYWNrQnJlYWR0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAg
IGlmICghdHJhY2tCcmVhZHRoLmlzTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2woKS5jcmVhdGVWYWx1ZSh0cmFja0JyZWFkdGguZmxleCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0ZSKTsKQEAgLTk5NSw3ICs5OTUsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gc3Bl
Y2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IEdyaWRMZW5ndGgmIHRyYQogICAg
IHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHRyYWNrQnJlYWR0aExlbmd0
aCwgc3R5bGUpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gc3BlY2lmaWVkVmFsdWVG
b3JHcmlkVHJhY2tTaXplKGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gc3BlY2lmaWVkVmFsdWVGb3JH
cmlkVHJhY2tTaXplKGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlKQogewogICAgIHN3aXRjaCAodHJhY2tTaXplLnR5cGUoKSkgewogICAgIGNh
c2UgTGVuZ3RoVHJhY2tTaXppbmc6CkBAIC0xMDIxLDcgKzEwMjEsNyBAQCBzdGF0aWMgdm9pZCBh
ZGRWYWx1ZXNGb3JOYW1lZEdyaWRMaW5lc0F0SW5kZXgoY29uc3QgT3JkZXJlZE5hbWVkR3JpZExp
bmVzTWFwJiBvcgogICAgIGxpc3QuYXBwZW5kKGxpbmVOYW1lcy5yZWxlYXNlTm9uTnVsbCgpKTsK
IH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckdy
aWRUcmFja0xpc3QoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGNvbnN0IFZl
Y3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5z
ID8gc3R5bGUtPmdyaWRDb2x1bW5zKCkgOiBzdHlsZS0+Z3JpZFJvd3MoKTsKICAgICBjb25zdCBP
cmRlcmVkTmFtZWRHcmlkTGluZXNNYXAmIG9yZGVyZWROYW1lZEdyaWRMaW5lcyA9IGRpcmVjdGlv
biA9PSBGb3JDb2x1bW5zID8gc3R5bGUtPm9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIDog
c3R5bGUtPm9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcygpOwpAQCAtMTA2NCw3ICsxMDY0LDcgQEAg
c3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gZGlyZWN0aW8KICAgICByZXR1cm4gV1RGOjptb3ZlKGxpc3QpOwogfQog
Ci1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb24oY29uc3QgR3Jp
ZFBvc2l0aW9uJiBwb3NpdGlvbikKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFBv
c2l0aW9uKGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKHBvc2l0aW9u
LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlQXV0byk7CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBzdGF0aWMgUGFzc1Jl
ZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJiBwb3Np
dGlvbikKIH0KICNlbmRpZgogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gY3JlYXRlVHJhbnNp
dGlvblByb3BlcnR5VmFsdWUoY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24pCitzdGF0aWMgUmVm
PENTU1ZhbHVlPiBjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShjb25zdCBBbmltYXRpb24m
IGFuaW1hdGlvbikKIHsKICAgICBpZiAoYW5pbWF0aW9uLmFuaW1hdGlvbk1vZGUoKSA9PSBBbmlt
YXRpb246OkFuaW1hdGVOb25lKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CkBAIC0xMDk0LDcgKzEwOTQsNyBAQCBzdGF0
aWMgUGFzc1JlZjxDU1NWYWx1ZT4gY3JlYXRlVHJhbnNpdGlvblByb3BlcnR5VmFsdWUoY29uc3Qg
QW5pbWF0aW9uJiBhbmltYXRpbwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1
ZShnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoYW5pbWF0aW9uLnByb3BlcnR5KCkpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORyk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4g
Z2V0VHJhbnNpdGlvblByb3BlcnR5VmFsdWUoY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3Qp
CitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0VHJhbnNpdGlvblByb3BlcnR5VmFsdWUoY29u
c3QgQW5pbWF0aW9uTGlzdCogYW5pbUxpc3QpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGlmIChhbmltTGlzdCkgewpAQCAtMTEw
Nyw3ICsxMTA3LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRUcmFuc2l0aW9u
UHJvcGVydHlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmkKIAogI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gc2Nyb2xsU25hcERl
c3RpbmF0aW9uKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGVuZ3RoU2l6ZSYgZGVzdGluYXRp
b24pCitzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gc2Nyb2xsU25hcERlc3RpbmF0aW9uKFJlbmRl
clN0eWxlJiBzdHlsZSwgY29uc3QgTGVuZ3RoU2l6ZSYgZGVzdGluYXRpb24pCiB7CiAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKHBlcmNlbnRhZ2VPclpvb21BZGp1c3RlZFZhbHVlKGRlc3RpbmF0aW9uLndp
ZHRoKCksICZzdHlsZSkpOwpAQCAtMTExNSw3ICsxMTE1LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NT
VmFsdWVMaXN0PiBzY3JvbGxTbmFwRGVzdGluYXRpb24oUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBMZW4KICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHNj
cm9sbFNuYXBQb2ludHMoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBTY3JvbGxTbmFwUG9pbnRz
JiBwb2ludHMpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBzY3JvbGxTbmFwUG9pbnRzKFJlbmRlclN0
eWxlJiBzdHlsZSwgY29uc3QgU2Nyb2xsU25hcFBvaW50cyYgcG9pbnRzKQogewogICAgIGlmIChw
b2ludHMudXNlc0VsZW1lbnRzKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRWxlbWVudHMpOwpAQCAtMTEyNyw3ICsxMTI3LDcgQEAg
c3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHNjcm9sbFNuYXBQb2ludHMoUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBTY3JvbGxTbmFwUG8KICAgICByZXR1cm4gV1RGOjptb3ZlKGxpc3QpOwogfQog
Ci1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gc2Nyb2xsU25hcENvb3JkaW5hdGVzKFJlbmRlclN0
eWxlJiBzdHlsZSwgY29uc3QgVmVjdG9yPExlbmd0aFNpemU+JiBjb29yZGluYXRlcykKK3N0YXRp
YyBSZWY8Q1NTVmFsdWU+IHNjcm9sbFNuYXBDb29yZGluYXRlcyhSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IFZlY3RvcjxMZW5ndGhTaXplPiYgY29vcmRpbmF0ZXMpCiB7CiAgICAgaWYgKGNvb3Jk
aW5hdGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgc3RhdGlj
IFBhc3NSZWY8Q1NTVmFsdWU+IHNjcm9sbFNuYXBDb29yZGluYXRlcyhSZW5kZXJTdHlsZSYgc3R5
bGUsIGNvbnN0IFZlY3RvcjwKIAogI2VuZGlmCiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlz
dD4gZ2V0RGVsYXlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltTGlzdCkKK3N0YXRpYyBS
ZWY8Q1NTVmFsdWVMaXN0PiBnZXREZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1M
aXN0KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0
ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKQEAgLTExNTksNyArMTE1OSw3IEBAIHN0YXRpYyBQ
YXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0RGVsYXlWYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBh
bmltTGlzdCkKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVM
aXN0PiBnZXREdXJhdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQorc3Rh
dGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldER1cmF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlz
dCogYW5pbUxpc3QpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21t
YVNlcGFyYXRlZCgpOwogICAgIGlmIChhbmltTGlzdCkgewpAQCAtMTE3Miw3ICsxMTcyLDcgQEAg
c3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXREdXJhdGlvblZhbHVlKGNvbnN0IEFuaW1h
dGlvbkxpc3QqIGFuaW1MaXN0KQogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUGFzc1Jl
ZjxDU1NWYWx1ZT4gY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBUaW1pbmdGdW5jdGlv
biogdGltaW5nRnVuY3Rpb24pCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVUaW1pbmdGdW5j
dGlvblZhbHVlKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKIHsKICAgICBz
d2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLT50eXBlKCkpIHsKICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9u
OjpDdWJpY0JlemllckZ1bmN0aW9uOiB7CkBAIC0xMjA4LDcgKzEyMDgsNyBAQCBzdGF0aWMgUGFz
c1JlZjxDU1NWYWx1ZT4gY3JlYXRlVGltaW5nRnVuY3Rpb25WYWx1ZShjb25zdCBUaW1pbmdGdW5j
dGlvbiogdGltaW5nRgogICAgIH0KIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBn
ZXRUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXN0KQorc3Rh
dGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgQW5pbWF0
aW9uTGlzdCogYW5pbUxpc3QpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGlmIChhbmltTGlzdCkgewpAQCAtMTIyMCw3ICsxMjIw
LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRUaW1pbmdGdW5jdGlvblZhbHVl
KGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1MaXMKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3Rh
dGljIFBhc3NSZWY8Q1NTVmFsdWU+IGNyZWF0ZUxpbmVCb3hDb250YWluVmFsdWUodW5zaWduZWQg
bGluZUJveENvbnRhaW4pCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBjcmVhdGVMaW5lQm94Q29udGFp
blZhbHVlKHVuc2lnbmVkIGxpbmVCb3hDb250YWluKQogewogICAgIGlmICghbGluZUJveENvbnRh
aW4pCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVOb25lKTsKQEAgLTEzMzYsMTQgKzEzMzYsMTQgQEAgc3RhdGljIENTU1ZhbHVlSUQg
aWRlbnRpZmllckZvckZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKICAgICByZXR1
cm4gQ1NTVmFsdWVJbnZhbGlkOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gdmFsdWVGb3JGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCitzdGF0aWMgUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvckZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseSkKIHsKICAgICBpZiAoQ1NTVmFsdWVJRCBmYW1pbHlJZGVudGlmaWVyID0gaWRlbnRpZmll
ckZvckZhbWlseShmYW1pbHkpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKGZhbWlseUlkZW50aWZpZXIpOwogICAgIHJldHVybiBjc3NWYWx1ZVBv
b2woKS5jcmVhdGVWYWx1ZShmYW1pbHkuc3RyaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
U1RSSU5HKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0
aW9uRmxhZ3NUb0NTU1ZhbHVlKGludCB0ZXh0RGVjb3JhdGlvbikKK3N0YXRpYyBSZWY8Q1NTVmFs
dWU+IHJlbmRlclRleHREZWNvcmF0aW9uRmxhZ3NUb0NTU1ZhbHVlKGludCB0ZXh0RGVjb3JhdGlv
bikKIHsKICAgICAvLyBCbGluayB2YWx1ZSBpcyBpZ25vcmVkLgogICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CkBAIC0x
MzYzLDcgKzEzNjMsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29y
YXRpb25GbGFnc1RvQ1NTVmFsdWUoaW50IHRleHREZWNvcmF0aW9uKQogICAgIHJldHVybiBsaXN0
LnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiByZW5kZXJU
ZXh0RGVjb3JhdGlvblN0eWxlRmxhZ3NUb0NTU1ZhbHVlKFRleHREZWNvcmF0aW9uU3R5bGUgdGV4
dERlY29yYXRpb25TdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0
aW9uU3R5bGVGbGFnc1RvQ1NTVmFsdWUoVGV4dERlY29yYXRpb25TdHlsZSB0ZXh0RGVjb3JhdGlv
blN0eWxlKQogewogICAgIHN3aXRjaCAodGV4dERlY29yYXRpb25TdHlsZSkgewogICAgIGNhc2Ug
VGV4dERlY29yYXRpb25TdHlsZVNvbGlkOgpAQCAtMTM4Miw3ICsxMzgyLDcgQEAgc3RhdGljIFBh
c3NSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NTVmFsdWUo
VGV4dERlY29yYXRpb24KICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlRXhwbGljaXRJ
bml0aWFsVmFsdWUoKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHRE
ZWNvcmF0aW9uU2tpcEZsYWdzVG9DU1NWYWx1ZShUZXh0RGVjb3JhdGlvblNraXAgdGV4dERlY29y
YXRpb25Ta2lwKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25Ta2lw
RmxhZ3NUb0NTU1ZhbHVlKFRleHREZWNvcmF0aW9uU2tpcCB0ZXh0RGVjb3JhdGlvblNraXApCiB7
CiAgICAgc3dpdGNoICh0ZXh0RGVjb3JhdGlvblNraXApIHsKICAgICBjYXNlIFRleHREZWNvcmF0
aW9uU2tpcEF1dG86CkBAIC0xMzk5LDcgKzEzOTksNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1
ZT4gcmVuZGVyVGV4dERlY29yYXRpb25Ta2lwRmxhZ3NUb0NTU1ZhbHVlKFRleHREZWNvcmF0aW9u
UwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVFeHBsaWNpdEluaXRpYWxWYWx1ZSgp
OwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gcmVuZGVyRW1waGFzaXNQb3NpdGlvbkZs
YWdzVG9DU1NWYWx1ZShUZXh0RW1waGFzaXNQb3NpdGlvbiB0ZXh0RW1waGFzaXNQb3NpdGlvbikK
K3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhhc2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFs
dWUoVGV4dEVtcGhhc2lzUG9zaXRpb24gdGV4dEVtcGhhc2lzUG9zaXRpb24pCiB7CiAgICAgQVNT
RVJUKCEoKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRpb25PdmVyKSAm
JiAodGV4dEVtcGhhc2lzUG9zaXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvblVuZGVyKSkpOwog
ICAgIEFTU0VSVCghKCh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRFbXBoYXNpc1Bvc2l0aW9u
TGVmdCkgJiYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRpb25SaWdo
dCkpKTsKQEAgLTE0MTgsNyArMTQxOCw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiByZW5k
ZXJFbXBoYXNpc1Bvc2l0aW9uRmxhZ3NUb0NTU1ZhbHVlKFRleHRFbXBoYXNpc1Bvc2l0CiAgICAg
cmV0dXJuIGxpc3QucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFs
dWU+IGZpbGxSZXBlYXRUb0NTU1ZhbHVlKEVGaWxsUmVwZWF0IHhSZXBlYXQsIEVGaWxsUmVwZWF0
IHlSZXBlYXQpCitzdGF0aWMgUmVmPENTU1ZhbHVlPiBmaWxsUmVwZWF0VG9DU1NWYWx1ZShFRmls
bFJlcGVhdCB4UmVwZWF0LCBFRmlsbFJlcGVhdCB5UmVwZWF0KQogewogICAgIC8vIEZvciBiYWNr
d2FyZHMgY29tcGF0aWJpbGl0eSwgaWYgYm90aCB2YWx1ZXMgYXJlIGVxdWFsLCBqdXN0IHJldHVy
biBvbmUgb2YgdGhlbS4gQW5kCiAgICAgLy8gaWYgdGhlIHR3byB2YWx1ZXMgYXJlIGVxdWl2YWxl
bnQgdG8gcmVwZWF0LXggb3IgcmVwZWF0LXksIGp1c3QgcmV0dXJuIHRoZSBzaG9ydGhhbmQuCkBA
IC0xNDM1LDcgKzE0MzUsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gZmlsbFJlcGVhdFRv
Q1NTVmFsdWUoRUZpbGxSZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeQogICAgIHJldHVybiBX
VEY6Om1vdmUobGlzdCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBmaWxsU291cmNl
VHlwZVRvQ1NTVmFsdWUoRU1hc2tTb3VyY2VUeXBlIHR5cGUpCitzdGF0aWMgUmVmPENTU1ZhbHVl
PiBmaWxsU291cmNlVHlwZVRvQ1NTVmFsdWUoRU1hc2tTb3VyY2VUeXBlIHR5cGUpCiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBNYXNrQWxwaGE6CkBAIC0xNDQ2LDcgKzE0NDYsNyBA
QCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gZmlsbFNvdXJjZVR5cGVUb0NTU1ZhbHVlKEVNYXNr
U291cmNlVHlwZSB0eXBlKQogICAgIH0KIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGZp
bGxTaXplVG9DU1NWYWx1ZShjb25zdCBGaWxsU2l6ZSYgZmlsbFNpemUsIGNvbnN0IFJlbmRlclN0
eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGZpbGxTaXplVG9DU1NWYWx1ZShjb25z
dCBGaWxsU2l6ZSYgZmlsbFNpemUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBp
ZiAoZmlsbFNpemUudHlwZSA9PSBDb250YWluKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ29udGFpbik7CkBAIC0xNDYzLDEyICsx
NDYzLDEyIEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBmaWxsU2l6ZVRvQ1NTVmFsdWUoY29u
c3QgRmlsbFNpemUmIGZpbGxTaXplLCBjb25zdCBSZW5kCiAgICAgcmV0dXJuIFdURjo6bW92ZShs
aXN0KTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGFsdFRleHRUb0NTU1ZhbHVlKGNv
bnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IGFsdFRleHRUb0NT
U1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPmNvbnRlbnRBbHRUZXh0KCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfU1RSSU5HKTsKIH0KICAgICAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4g
Y29udGVudFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxD
U1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkK
IHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CiAgICAgZm9yIChjb25zdCBDb250ZW50RGF0YSogY29udGVudERhdGEgPSBzdHlsZS0+Y29udGVu
dERhdGEoKTsgY29udGVudERhdGE7IGNvbnRlbnREYXRhID0gY29udGVudERhdGEtPm5leHQoKSkg
ewpAQCAtMTUwOCw3ICsxNTA4LDcgQEAgc3RhdGljIHZvaWQgbG9nVW5pbXBsZW1lbnRlZFByb3Bl
cnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogICAgIExPR19FUlJPUigiV2ViS2l0IGRv
ZXMgbm90IHlldCBpbXBsZW1lbnQgZ2V0Q29tcHV0ZWRTdHlsZSBmb3IgJyVzJy4iLCBnZXRQcm9w
ZXJ0eU5hbWUocHJvcGVydHlJRCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+
IGZvbnRGYW1pbHlGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NW
YWx1ZUxpc3Q+IGZvbnRGYW1pbHlGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAg
IGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGUtPmZvbnQoKS5mYW1pbHlDb3VudCgpOyArK2kp
CkBAIC0xNTE2LDcgKzE1MTYsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGZvbnRG
YW1pbHlGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIHJldHVybiBsaXN0OwogfQog
Ci1zdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZUhlaWdodEZyb21TdHlsZShS
ZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5lSGVp
Z2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBMZW5ndGggbGVuZ3RoID0g
c3R5bGUtPmxpbmVIZWlnaHQoKTsKICAgICBpZiAobGVuZ3RoLmlzTmVnYXRpdmUoKSkKQEAgLTE1
MzEsMjYgKzE1MzEsMjYgQEAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpbmVI
ZWlnaHRGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoLCAwKSwgc3R5bGUpOwogfQog
Ci1zdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFNpemVGcm9tU3R5bGUoUmVu
ZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFNpemVG
cm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIHJldHVybiB6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlKHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFBpeGVsU2l6ZSgpLCBz
dHlsZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250U3R5bGVG
cm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gZm9udFN0eWxlRnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAoc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSXRhbGljKTsKICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKIH0K
IAotc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRWYXJpYW50RnJvbVN0eWxl
KFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRW
YXJpYW50RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBpZiAoc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLnNtYWxsQ2FwcygpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlU21hbGxDYXBzKTsKICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKTsKIH0K
IAotc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRXZWlnaHRGcm9tU3R5bGUo
UmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFdl
aWdodEZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkpIHsKICAgICBjYXNlIEZvbnRXZWlnaHQxMDA6CkBA
IC0xNjY2LDcgKzE2NjYsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgIHJldHVybiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yKG1fbm9kZSwgbV9hbGxvd1Zpc2l0ZWRTdHlsZSwgbV9wc2V1
ZG9FbGVtZW50U3BlY2lmaWVyKS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5SUQsIHVwZGF0ZUxheW91
dCk7CiB9CiAKLVBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpjb3B5UHJvcGVydGllcygpIGNvbnN0CitSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjb3B5UHJvcGVydGllcygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IobV9ub2RlLCBtX2FsbG93
VmlzaXRlZFN0eWxlLCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIpLmNvcHlQcm9wZXJ0aWVzKCk7
CiB9CkBAIC0xNzE3LDcgKzE3MTcsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IGNvbXB1dGVSZW5kZXJTdHlsZUZvclByb3BlcnR5KE5vZGUqIHN0eWxlZAogfQogCiAj
aWYgRU5BQkxFKENTU19TSEFQRVMpCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gc2hhcGVQcm9w
ZXJ0eVZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgU2hhcGVWYWx1ZSogc2hh
cGVWYWx1ZSkKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHNoYXBlUHJvcGVydHlWYWx1ZShjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUpCiB7CiAgICAg
aWYgKCFzaGFwZVZhbHVlKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CkBAIC0zMjU1LDcgKzMyNTUsNyBAQCBib29sIENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5TWF0Y2hlcyhDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQsIGNvbnN0IENTUwogICAgIHJldHVybiBjb21wdXRlZFZhbHVlICYmIHZhbHVlICYmIGNv
bXB1dGVkVmFsdWUtPmVxdWFscygqdmFsdWUpOwogfQogCi1QYXNzUmVmPE11dGFibGVTdHlsZVBy
b3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzKCkgY29uc3QK
K1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5
UHJvcGVydGllcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29t
cHV0ZWRQcm9wZXJ0aWVzLCBudW1Db21wdXRlZFByb3BlcnRpZXMpOwogfQpAQCAtMzMwOCw3ICsz
MzA4LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3IKICAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCk7CiB9CiAKLVBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Y29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVu
c2lnbmVkIGxlbmd0aCkgY29uc3QKK1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQq
IHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwg
MjU2PiBsaXN0OwogICAgIGxpc3QucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4
IGYzM2Y4ZTkuLjNhNGMxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTUyLDEzICs1MiwxMyBAQCBwdWJsaWM6CiAgICAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5
b3V0ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKIAogICAgIC8vIEhlbHBlciBtZXRob2RzIGZvciBI
VE1MIGVkaXRpbmcuCi0gICAgUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJv
cGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBj
b25zdDsKLSAgICBQYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVz
KCkgY29uc3Q7CisgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVz
SW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Owor
ICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0Owog
ICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdldEZvbnRTaXplQ1NTVmFsdWVQcmVm
ZXJyaW5nS2V5d29yZCgpIGNvbnN0OwogICAgIGJvb2wgdXNlRml4ZWRGb250RGVmYXVsdFNpemUo
KSBjb25zdDsKICAgICBib29sIHByb3BlcnR5TWF0Y2hlcyhDU1NQcm9wZXJ0eUlELCBjb25zdCBD
U1NWYWx1ZSopIGNvbnN0OwogCi0gICAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9y
RmlsdGVyKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYsIEFkanVz
dFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSA9IEFkanVzdFBpeGVsVmFsdWVzKTsKKyAgICBz
dGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5kZXJTdHlsZSosIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUg
PSBBZGp1c3RQaXhlbFZhbHVlcyk7CiAKIHByaXZhdGU6CiAgICAgLy8gVGhlIHN0eWxlZCBub2Rl
IGlzIGVpdGhlciB0aGUgbm9kZSBwYXNzZWQgaW50byBjb21wdXRlZFByb3BlcnR5VmFsdWUsIG9y
IHRoZQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IHN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCkgY29uc3Q7CiAg
ICAgUGFzc1JlZlB0cjxTVkdQYWludD4gYWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoUGFz
c1JlZlB0cjxTVkdQYWludD4sIFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUGFz
c1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSosIENTU1Byb3Bl
cnR5SUQsIGNvbnN0IFJlbmRlclN0eWxlKiwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0
eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMpOworICAgIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVl
Rm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBSZW5kZXJT
dHlsZSosIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSA9IEFkanVzdFBpeGVsVmFs
dWVzKTsKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29sb3JPclZh
bGlkQ29sb3IoUmVuZGVyU3R5bGUqLCBjb25zdCBDb2xvciYpIGNvbnN0OwogCiAgICAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJikgY29uc3Q7CkBAIC0xMTUsNyArMTE1
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3Bl
cnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3Bl
cnRpZXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5
b3V0ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuaAppbmRleCA1MDY3ZWJjLi5hMmZiYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jv
c3NmYWRlVmFsdWUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIENT
U0Nyb3NzZmFkZVZhbHVlIDogcHVibGljIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUgewogICAgIGZy
aWVuZCBjbGFzcyBDcm9zc2ZhZGVTdWJpbWFnZU9ic2VydmVyUHJveHk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWY8Q1NTQ3Jvc3NmYWRlVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPENTU1Zh
bHVlPiBmcm9tVmFsdWUsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHRvVmFsdWUpCisgICAgc3RhdGlj
IFJlZjxDU1NDcm9zc2ZhZGVWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGZyb21W
YWx1ZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdG9WYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENTU0Nyb3NzZmFkZVZhbHVlKGZyb21WYWx1ZSwgdG9WYWx1ZSkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAppbmRleCA3
YTEyZjdhLi4yNDFmNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFs
dWUuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBpbmxpbmUgU1ZHQ3Vyc29yRWxlbWVudCog
cmVzb3VyY2VSZWZlcmVuY2VkQnlDdXJzb3JFbGVtZW50KGNvbnN0IFN0cmluZyYKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1
ZShQYXNzUmVmPENTU1ZhbHVlPiBpbWFnZVZhbHVlLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0IElu
dFBvaW50JiBob3RTcG90KQorQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1
ZShSZWY8Q1NTVmFsdWU+JiYgaW1hZ2VWYWx1ZSwgYm9vbCBoYXNIb3RTcG90LCBjb25zdCBJbnRQ
b2ludCYgaG90U3BvdCkKICAgICA6IENTU1ZhbHVlKEN1cnNvckltYWdlQ2xhc3MpCiAgICAgLCBt
X2ltYWdlVmFsdWUoV1RGOjptb3ZlKGltYWdlVmFsdWUpKQogICAgICwgbV9oYXNIb3RTcG90KGhh
c0hvdFNwb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAppbmRleCA4
NmRmN2FkLi42MWEyOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVl
LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgU1ZHRWxlbWVudDsKIAogY2xhc3MgQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWY8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gY3JlYXRlKFBhc3NSZWY8Q1NTVmFsdWU+IGltYWdlVmFs
dWUsIGJvb2wgaGFzSG90U3BvdCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCisgICAgc3RhdGlj
IFJlZjxDU1NDdXJzb3JJbWFnZVZhbHVlPiBjcmVhdGUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFs
dWUsIGJvb2wgaGFzSG90U3BvdCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXJzb3JJbWFnZVZhbHVlKFdURjo6bW92ZShp
bWFnZVZhbHVlKSwgaGFzSG90U3BvdCwgaG90U3BvdCkpOwogICAgIH0KQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0N1cnNvckltYWdlVmFsdWUmKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKFBhc3NSZWY8Q1NTVmFs
dWU+IGltYWdlVmFsdWUsIGJvb2wgaGFzSG90U3BvdCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3Qp
OworICAgIENTU0N1cnNvckltYWdlVmFsdWUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIGJv
b2wgaGFzSG90U3BvdCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpOwogCiAgICAgdm9pZCBkZXRh
Y2hQZW5kaW5nSW1hZ2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmgKaW5kZXggYmQwNTI0YS4uN2QxOTI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFN0eWxlUmVzb2x2ZXI7CiBjbGFz
cyBDU1NGaWx0ZXJJbWFnZVZhbHVlIDogcHVibGljIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUgewog
ICAgIGZyaWVuZCBjbGFzcyBGaWx0ZXJTdWJpbWFnZU9ic2VydmVyUHJveHk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWY8Q1NTRmlsdGVySW1hZ2VWYWx1ZT4gY3JlYXRlKFBhc3NSZWY8Q1NT
VmFsdWU+IGltYWdlVmFsdWUsIFBhc3NSZWY8Q1NTVmFsdWU+IGZpbHRlclZhbHVlKQorICAgIHN0
YXRpYyBSZWY8Q1NTRmlsdGVySW1hZ2VWYWx1ZT4gY3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBpbWFn
ZVZhbHVlLCBSZWY8Q1NTVmFsdWU+JiYgZmlsdGVyVmFsdWUpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NGaWx0ZXJJbWFnZVZhbHVlKFdURjo6bW92ZShpbWFnZVZhbHVl
KSwgV1RGOjptb3ZlKGZpbHRlclZhbHVlKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IDYwYWM4N2MuLjdhOTgwZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApAQCAtMzksMTEgKzM5LDExIEBAIGNsYXNzIFNW
R0ZvbnRGYWNlRWxlbWVudDsKIAogY2xhc3MgQ1NTRm9udEZhY2VTcmNWYWx1ZSA6IHB1YmxpYyBD
U1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTRm9udEZhY2VTcmNWYWx1
ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2UpCisgICAgc3RhdGljIFJlZjxDU1NGb250
RmFjZVNyY1ZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ZvbnRGYWNlU3JjVmFsdWUocmVzb3VyY2UsIGZh
bHNlKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmPENTU0ZvbnRGYWNlU3JjVmFsdWU+IGNy
ZWF0ZUxvY2FsKGNvbnN0IFN0cmluZyYgcmVzb3VyY2UpCisgICAgc3RhdGljIFJlZjxDU1NGb250
RmFjZVNyY1ZhbHVlPiBjcmVhdGVMb2NhbChjb25zdCBTdHJpbmcmIHJlc291cmNlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRm9udEZhY2VTcmNWYWx1ZShyZXNvdXJj
ZSwgdHJ1ZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmVhdHVyZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZlYXR1cmVWYWx1ZS5o
CmluZGV4IGNmNmMzODEuLjIxNGNiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmVhdHVyZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGZWF0
dXJlVmFsdWUuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENTU0ZvbnRGZWF0dXJlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmPENTU0ZvbnRGZWF0dXJlVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRh
ZywgaW50IHZhbHVlKQorICAgIHN0YXRpYyBSZWY8Q1NTRm9udEZlYXR1cmVWYWx1ZT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgdGFnLCBpbnQgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NGb250RmVhdHVyZVZhbHVlKHRhZywgdmFsdWUpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFZhbHVlLmgKaW5kZXggMDBkNzAxZi4uNTIwYTQ3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250VmFsdWUuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBDU1NWYWx1ZUxpc3Q7CiAK
IGNsYXNzIENTU0ZvbnRWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWY8Q1NTRm9udFZhbHVlPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8Q1NTRm9u
dFZhbHVlPiBjcmVhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
Rm9udFZhbHVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVu
Y3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAppbmRl
eCA1NTFmNDVlLi5kNTVjZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVu
Y3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgK
QEAgLTM1LDEyICszNSwxMiBAQCBzdHJ1Y3QgQ1NTUGFyc2VyRnVuY3Rpb247CiAKIGNsYXNzIENT
U0Z1bmN0aW9uVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmPENTU0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShDU1NQYXJzZXJGdW5jdGlvbiogZnVuY3Rp
b24pCisgICAgc3RhdGljIFJlZjxDU1NGdW5jdGlvblZhbHVlPiBjcmVhdGUoQ1NTUGFyc2VyRnVu
Y3Rpb24qIGZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
RnVuY3Rpb25WYWx1ZShmdW5jdGlvbikpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPENT
U0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShTdHJpbmcgbmFtZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGFyZ3MpCisgICAgc3RhdGljIFJlZjxDU1NGdW5jdGlvblZhbHVlPiBjcmVhdGUoU3RyaW5n
IG5hbWUsIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBhcmdzKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRnVuY3Rpb25WYWx1ZShuYW1lLCBhcmdzKSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKaW5kZXggNmFiNzhkYi4uYWQyYjU4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBAIC0xMzQsNyArMTM0LDcgQEAg
cHJvdGVjdGVkOgogY2xhc3MgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NHcmFk
aWVudFZhbHVlIHsKIHB1YmxpYzoKIAotICAgIHN0YXRpYyBQYXNzUmVmPENTU0xpbmVhckdyYWRp
ZW50VmFsdWU+IGNyZWF0ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIENTU0dyYWRpZW50VHlw
ZSBncmFkaWVudFR5cGUgPSBDU1NMaW5lYXJHcmFkaWVudCkKKyAgICBzdGF0aWMgUmVmPENTU0xp
bmVhckdyYWRpZW50VmFsdWU+IGNyZWF0ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIENTU0dy
YWRpZW50VHlwZSBncmFkaWVudFR5cGUgPSBDU1NMaW5lYXJHcmFkaWVudCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0xpbmVhckdyYWRpZW50VmFsdWUocmVwZWF0LCBn
cmFkaWVudFR5cGUpKTsKICAgICB9CkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIC8v
IENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEgZ2l2ZW4gc2l6ZS4KICAgICBQYXNzUmVmUHRyPEdy
YWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiwgY29uc3QgRmxvYXRTaXplJik7
CiAKLSAgICBQYXNzUmVmPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IGNsb25lKCkgY29uc3QKKyAg
ICBSZWY8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gY2xvbmUoKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSgqdGhpcykpOwog
ICAgIH0KQEAgLTE3MCwxMiArMTcwLDEyIEBAIHByaXZhdGU6CiAKIGNsYXNzIENTU1JhZGlhbEdy
YWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTR3JhZGllbnRWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWY8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVw
ZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSA9IENTU1JhZGlhbEdyYWRp
ZW50KQorICAgIHN0YXRpYyBSZWY8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gY3JlYXRlKENTU0dy
YWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSA9IENTU1Jh
ZGlhbEdyYWRpZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUmFk
aWFsR3JhZGllbnRWYWx1ZShyZXBlYXQsIGdyYWRpZW50VHlwZSkpOwogICAgIH0KIAotICAgIFBh
c3NSZWY8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gY2xvbmUoKSBjb25zdAorICAgIFJlZjxDU1NS
YWRpYWxHcmFkaWVudFZhbHVlPiBjbG9uZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKCp0aGlzKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmgKaW5kZXggNDk4
NGU3Ni4uMWQ5NzUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1w
bGF0ZUFyZWFzVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRl
QXJlYXNWYWx1ZS5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZT4gY3JlYXRlKGNv
bnN0IE5hbWVkR3JpZEFyZWFNYXAmIGdyaWRBcmVhTWFwLCBzaXplX3Qgcm93Q291bnQsIHNpemVf
dCBjb2x1bW5Db3VudCkKKyAgICBzdGF0aWMgUmVmPENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWU+
IGNyZWF0ZShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBncmlkQXJlYU1hcCwgc2l6ZV90IHJvd0Nv
dW50LCBzaXplX3QgY29sdW1uQ291bnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlKGdyaWRBcmVhTWFwLCByb3dDb3VudCwgY29s
dW1uQ291bnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VTZXRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAppbmRl
eCA0MGE5OTY1Li4xYjA1MTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VTZXRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgK
QEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKIGNsYXNzIENT
U0ltYWdlU2V0VmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWVMaXN0IHsKIHB1YmxpYzoKIAotICAgIHN0
YXRpYyBQYXNzUmVmPENTU0ltYWdlU2V0VmFsdWU+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxD
U1NJbWFnZVNldFZhbHVlPiBjcmVhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTSW1hZ2VTZXRWYWx1ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFs
dWUuaAppbmRleCA5YzQyMDhmLi4yMzI1MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmgKQEAgLTM1LDggKzM1LDggQEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKIAogY2xh
c3MgQ1NTSW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWY8Q1NTSW1hZ2VWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IENTU0ltYWdlVmFsdWUodXJsKSk7IH0KLSAgICBzdGF0aWMgUGFzc1Jl
ZjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIFN0eWxlSW1hZ2UqIGlt
YWdlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ltYWdlVmFsdWUodXJsLCBpbWFnZSkpOyB9
CisgICAgc3RhdGljIFJlZjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTSW1hZ2VWYWx1ZSh1cmwpKTsgfQorICAgIHN0YXRp
YyBSZWY8Q1NTSW1hZ2VWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBTdHlsZUltYWdl
KiBpbWFnZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFnZVZhbHVlKHVybCwgaW1hZ2Up
KTsgfQogICAgIH5DU1NJbWFnZVZhbHVlKCk7CiAKICAgICBTdHlsZUNhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAppbmRleCAzMTY3MWJhLi44
YTYzNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaApAQCAtMjgsNyAr
MjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0luaGVyaXRlZFZhbHVlIDog
cHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NJbmhlcml0
ZWRWYWx1ZT4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPENTU0luaGVyaXRlZFZhbHVlPiBjcmVh
dGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTSW5oZXJpdGVkVmFs
dWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaAppbmRleCA5MTE2YzE4
Li5hNzExYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCkBAIC0yOCwxMSAr
MjgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NJbml0aWFsVmFsdWUgOiBw
dWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU0luaXRpYWxW
YWx1ZT4gY3JlYXRlRXhwbGljaXQoKQorICAgIHN0YXRpYyBSZWY8Q1NTSW5pdGlhbFZhbHVlPiBj
cmVhdGVFeHBsaWNpdCgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJ
bml0aWFsVmFsdWUoLyogaW1wbGljaXQgKi8gZmFsc2UpKTsKICAgICB9Ci0gICAgc3RhdGljIFBh
c3NSZWY8Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVJbXBsaWNpdCgpCisgICAgc3RhdGljIFJlZjxD
U1NJbml0aWFsVmFsdWU+IGNyZWF0ZUltcGxpY2l0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU0luaXRpYWxWYWx1ZSgvKiBpbXBsaWNpdCAqLyB0cnVlKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAppbmRleCA0MWQ3YjgzLi44Mjlm
MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcApAQCAtMzMsNyArMzMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0eWxlS2V5ZnJhbWU6OlN0eWxlS2V5ZnJh
bWUoUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMpCitTdHlsZUtleWZyYW1lOjpT
dHlsZUtleWZyYW1lKFJlZjxTdHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKICAgICA6IG1f
cHJvcGVydGllcyhXVEY6Om1vdmUocHJvcGVydGllcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
S2V5ZnJhbWVSdWxlLmgKaW5kZXggYTczZTFiNC4uNDMwM2MwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NLZXlmcmFtZVJ1bGUuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBDU1NLZXlmcmFtZXNSdWxl
OwogY2xhc3MgU3R5bGVLZXlmcmFtZSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlS2V5ZnJhbWU+
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHlsZUtleWZyYW1lPiBjcmVhdGUoUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+IHBy
b3BlcnRpZXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4gY3JlYXRlKFJl
ZjxTdHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU3R5bGVLZXlmcmFtZShXVEY6Om1vdmUocHJvcGVydGllcykpKTsKICAgICB9
CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFN0eWxlS2V5ZnJhbWUoUGFzc1JlZjxTdHlsZVByb3Bl
cnRpZXM+KTsKKyAgICBleHBsaWNpdCBTdHlsZUtleWZyYW1lKFJlZjxTdHlsZVByb3BlcnRpZXM+
JiYpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIHBhcnNlS2V5U3RyaW5nKGNvbnN0IFN0cmluZyYs
IFZlY3Rvcjxkb3VibGU+JiBrZXlzKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVz
UnVsZS5oCmluZGV4IDZmMTU0YTkuLjQ0OWQ4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZy
YW1lc1J1bGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBDU1NLZXlmcmFtZVJ1bGU7CiAKIGNs
YXNzIFN0eWxlUnVsZUtleWZyYW1lcyA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlS2V5ZnJhbWVzKCkpOyB9CisgICAgc3RhdGljIFJlZjxT
dHlsZVJ1bGVLZXlmcmFtZXM+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVS
dWxlS2V5ZnJhbWVzKCkpOyB9CiAgICAgCiAgICAgflN0eWxlUnVsZUtleWZyYW1lcygpOwogICAg
IApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgaW50IGZpbmRLZXlmcmFtZUlu
ZGV4KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKIAotICAgIFBhc3NSZWY8U3R5bGVSdWxlS2V5
ZnJhbWVzPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVLZXlm
cmFtZXMoKnRoaXMpKTsgfQorICAgIFJlZjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNvcHkoKSBjb25z
dCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUtleWZyYW1lcygqdGhpcykpOyB9CiAK
IHByaXZhdGU6CiAgICAgU3R5bGVSdWxlS2V5ZnJhbWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0xpbmVCb3hDb250YWluVmFsdWUuaAppbmRleCBkNzY0M2ZhLi4xNjAxNjIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKQEAgLTQxLDcgKzQxLDcg
QEAgdHlwZWRlZiB1bnNpZ25lZCBMaW5lQm94Q29udGFpbjsKIC8vIFVzZWQgZm9yIHRleHQtQ1NT
TGluZUJveENvbnRhaW4gYW5kIGJveC1DU1NMaW5lQm94Q29udGFpbgogY2xhc3MgQ1NTTGluZUJv
eENvbnRhaW5WYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWY8Q1NTTGluZUJveENvbnRhaW5WYWx1ZT4gY3JlYXRlKExpbmVCb3hDb250YWluIHZhbHVl
KQorICAgIHN0YXRpYyBSZWY8Q1NTTGluZUJveENvbnRhaW5WYWx1ZT4gY3JlYXRlKExpbmVCb3hD
b250YWluIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTTGlu
ZUJveENvbnRhaW5WYWx1ZSh2YWx1ZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
aW5kZXggOTE2NGViYi4uNTJmYjcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE5
MSw3ICsxOTEsNyBAQCBzdGF0aWMgYm9vbCBoYXNQcmVmaXgoY29uc3QgY2hhciogc3RyaW5nLCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IGNoYXIqIHByZWZpeCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVWYWx1
ZVBhaXIoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZmlyc3QsIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHNlY29uZCkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNy
ZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBmaXJz
dCwgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2Vjb25kKQogewogICAgIHJldHVybiBj
c3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoZmlyc3QsIHNlY29uZCkpOwog
fQpAQCAtMTM5MywxNCArMTM5MywxNCBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VTZWxlY3Rvcihj
b25zdCBTdHJpbmcmIHN0cmluZywgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3RvckxpcwogICAgIG1f
c2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvciA9IG51bGxwdHI7CiB9CiAKLVBhc3NSZWY8SW1t
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NQYXJzZXI6OnBhcnNlSW5saW5lU3R5bGVEZWNsYXJh
dGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywgRWxlbWVudCogZWxlbWVudCkKK1JlZjxJbW11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6cGFyc2VJbmxpbmVTdHlsZURlY2xhcmF0aW9u
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBFbGVtZW50KiBlbGVtZW50KQogewogICAgIENTU1BhcnNl
ckNvbnRleHQgY29udGV4dCA9IGVsZW1lbnQtPmRvY3VtZW50KCkuZWxlbWVudFNoZWV0KCkuY29u
dGVudHMoKS5wYXJzZXJDb250ZXh0KCk7CiAgICAgY29udGV4dC5tb2RlID0gc3RyaWN0VG9DU1NQ
YXJzZXJNb2RlKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQo
KS5pblF1aXJrc01vZGUoKSk7CiAgICAgcmV0dXJuIENTU1BhcnNlcihjb250ZXh0KS5wYXJzZURl
Y2xhcmF0aW9uKHN0cmluZywgJmVsZW1lbnQtPmRvY3VtZW50KCkuZWxlbWVudFNoZWV0KCkuY29u
dGVudHMoKSk7CiB9CiAKLVBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NQYXJz
ZXI6OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHJpbmcsIFN0eWxlU2hlZXRDb250
ZW50cyogY29udGV4dFN0eWxlU2hlZXQpCitSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBD
U1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHJpbmcsIFN0eWxlU2hl
ZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgc2V0U3R5bGVTaGVldChjb250
ZXh0U3R5bGVTaGVldCk7CiAKQEAgLTE0MTEsNyArMTQxMSw3IEBAIFBhc3NSZWY8SW1tdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5n
JiBzdHJpCiAgICAgaWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQogICAgICAgICBkZWxldGVG
b250RmFjZU9ubHlWYWx1ZXMoKTsKIAotICAgIFBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBzdHlsZSA9IGNyZWF0ZVN0eWxlUHJvcGVydGllcygpOworICAgIFJlZjxJbW11dGFibGVT
dHlsZVByb3BlcnRpZXM+IHN0eWxlID0gY3JlYXRlU3R5bGVQcm9wZXJ0aWVzKCk7CiAgICAgY2xl
YXJQcm9wZXJ0aWVzKCk7CiAgICAgcmV0dXJuIHN0eWxlOwogfQpAQCAtMTUwNiw3ICsxNTA2LDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGZpbHRlclByb3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNv
bnN0IENTU1BhcnNlcjo6UGFyc2VkUHJvcGUKICAgICB9CiB9CiAKLVBhc3NSZWY8SW1tdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUHJvcGVydGllcygpCitSZWY8
SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUHJvcGVydGll
cygpCiB7CiAgICAgc3RkOjpiaXRzZXQ8bnVtQ1NTUHJvcGVydGllcz4gc2VlblByb3BlcnRpZXM7
CiAgICAgc2l6ZV90IHVudXNlZEVudHJpZXMgPSBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOwpA
QCAtMTcwNCw3ICsxNzA0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnZhbGlkVW5pdChDU1NQYXJzZXJW
YWx1ZSYgdmFsdWUsIFVuaXRzIHVuaXRmbGFncywgQ1NTUGFyc2VyTW9kZQogICAgIHJldHVybiBi
OwogfQogCi1pbmxpbmUgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpjcmVh
dGVQcmltaXRpdmVOdW1lcmljVmFsdWUoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQoraW5saW5lIFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFs
dWUoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChtX3BhcnNlZENhbGN1bGF0aW9u
KSB7CiAgICAgICAgIEFTU0VSVChpc0NhbGN1bGF0aW9uKHZhbHVlKSk7CkBAIC0xNzI0LDcgKzE3
MjQsNyBAQCBpbmxpbmUgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpjcmVh
dGVQcmltaXRpdmVOdW1lcmljVmFsdWUoQ1NTUGFycwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2wo
KS5jcmVhdGVWYWx1ZSh2YWx1ZS5mVmFsdWUsIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM+KHZhbHVlLnVuaXQpKTsKIH0KIAotaW5saW5lIFBhc3NSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IENTU1BhcnNlcjo6Y3JlYXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUoQ1NTUGFyc2Vy
VmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpj
cmVhdGVQcmltaXRpdmVTdHJpbmdWYWx1ZShDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
QVNTRVJUKHZhbHVlLnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcgfHwgdmFs
dWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKTsKICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sKCkuY3JlYXRlVmFsdWUodmFsdWUuc3RyaW5nLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORyk7CkBAIC0zMTI4LDcgKzMxMjgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIENTU1BhcnNlcjo6YWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4m
IGx2YWwsIFBhc3NSZWY8Q1NTVmFsdWU+IHJ2YWwpCit2b2lkIENTU1BhcnNlcjo6YWRkRmlsbFZh
bHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFJlZjxDU1NWYWx1ZT4mJiBydmFsKQogewogICAg
IGlmICghbHZhbCkgewogICAgICAgICBsdmFsID0gV1RGOjptb3ZlKHJ2YWwpOwpAQCAtMzQzNiw3
ICszNDM2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbFNob3J0aGFuZChDU1NQcm9wZXJ0
eUlEIHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHIKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBDU1NQYXJzZXI6OmFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2
YWwsIFBhc3NSZWY8Q1NTVmFsdWU+IHJ2YWwpCit2b2lkIENTU1BhcnNlcjo6YWRkQW5pbWF0aW9u
VmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUmVmPENTU1ZhbHVlPiYmIHJ2YWwpCiB7CiAg
ICAgaWYgKCFsdmFsKSB7CiAgICAgICAgIGx2YWwgPSBXVEY6Om1vdmUocnZhbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmgKaW5kZXggNjVmMGVjYi4uMjk4OGE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBwYXJzZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VWYWxpZFByaW1pdGl2ZShDU1NWYWx1ZUlE
IGlkZW50LCBDU1NQYXJzZXJWYWx1ZSYpOwogICAgIGJvb2wgcGFyc2VEZWNsYXJhdGlvbihNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzKiwgY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxDU1NSdWxlU291
cmNlRGF0YT4sIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpOwotICAgIHN0
YXRpYyBQYXNzUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyc2VJbmxpbmVTdHlsZURl
Y2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUmVmPEltbXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyc2VJbmxpbmVTdHlsZURlY2xhcmF0aW9uKGNvbnN0IFN0
cmluZyYsIEVsZW1lbnQqKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeT4gcGFyc2VN
ZWRpYVF1ZXJ5KGNvbnN0IFN0cmluZyYpOwogI2lmIEVOQUJMRShQSUNUVVJFX1NJWkVTKQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VTaXplTGlzdD4gcGFyc2VTaXplc0F0dHJpYnV0ZShjb25z
dCBTdHJpbmcmKTsKQEAgLTEzOCw4ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZUZp
bGxQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMSwg
Q1NTUHJvcGVydHlJRCYgcHJvcElkMiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1
ZT4mKTsKICAgICBib29sIHBhcnNlRmlsbFNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBjb25zdCBD
U1NQcm9wZXJ0eUlEKiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRh
bnQpOwogCi0gICAgdm9pZCBhZGRGaWxsVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFz
c1JlZjxDU1NWYWx1ZT4gcnZhbCk7Ci0gICAgdm9pZCBhZGRBbmltYXRpb25WYWx1ZShSZWZQdHI8
Q1NTVmFsdWU+JiBsdmFsLCBQYXNzUmVmPENTU1ZhbHVlPiBydmFsKTsKKyAgICB2b2lkIGFkZEZp
bGxWYWx1ZShSZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBSZWY8Q1NTVmFsdWU+JiYgcnZhbCk7Cisg
ICAgdm9pZCBhZGRBbmltYXRpb25WYWx1ZShSZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBSZWY8Q1NT
VmFsdWU+JiYgcnZhbCk7CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlv
bkRlbGF5KCk7CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25EaXJlY3Rp
b24oKTsKQEAgLTMzMiw3ICszMzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyUHJvcGVy
dGllcygpOwogCi0gICAgUGFzc1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZVN0
eWxlUHJvcGVydGllcygpOworICAgIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNyZWF0
ZVN0eWxlUHJvcGVydGllcygpOwogCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBtX2NvbnRleHQ7CiAK
QEAgLTQwNCw4ICs0MDQsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNl
PiBjcmVhdGVWaWV3cG9ydFJ1bGUoKTsKICNlbmRpZgogCi0gICAgUGFzc1JlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKENTU1BhcnNlclZhbHVlJik7Ci0g
ICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUo
Q1NTUGFyc2VyVmFsdWUmKTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1p
dGl2ZU51bWVyaWNWYWx1ZShDU1NQYXJzZXJWYWx1ZSYpOworICAgIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gY3JlYXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUoQ1NTUGFyc2VyVmFsdWUmKTsKIAogICAg
IHN0YXRpYyBVUkwgY29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsIGNvbnN0IFN0
cmluZyYgdXJsKTsKIApAQCAtNTA3LDcgKzUwNyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwYXJz
ZUdlbmVyYXRlZEltYWdlKENTU1BhcnNlclZhbHVlTGlzdCYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsK
IAogICAgIGJvb2wgcGFyc2VWYWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiwgQ1NTUHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIFN0eWxlU2hlZXRDb250ZW50cyog
Y29udGV4dFN0eWxlU2hlZXQpOwotICAgIFBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
PiBwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIFN0eWxlU2hlZXRDb250ZW50cyogY29u
dGV4dFN0eWxlU2hlZXQpOworICAgIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IHBhcnNl
RGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5
bGVTaGVldCk7CiAKICAgICBQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGU+IHBhcnNlSW5zZXRSb3Vu
ZGVkQ29ybmVycyhQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGVJbnNldD4sIENTU1BhcnNlclZhbHVl
TGlzdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBi
N2IzNTQ3Li45Y2UwNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAKQEAgLTk0NSwxMyArOTQ1LDEzIEBAIFBhaXIqIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRQYWly
VmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmFsdWUucGFpcjsK
IH0KIAotTkVWRVJfSU5MSU5FIFBhc3NSZWY8U3RyaW5nSW1wbD4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIqIHN1ZmZpeCwgdW5zaWduZWQgc3VmZml4TGVu
Z3RoKSBjb25zdAorTkVWRVJfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBDU1NQcmltaXRpdmVWYWx1
ZTo6Zm9ybWF0TnVtYmVyVmFsdWUoY29uc3QgY2hhciogc3VmZml4LCB1bnNpZ25lZCBzdWZmaXhM
ZW5ndGgpIGNvbnN0CiB7CiAgICAgRGVjaW1hbE51bWJlciBkZWNpbWFsKG1fdmFsdWUubnVtKTsK
IAogICAgIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCA9IGRlY2ltYWwuYnVmZmVyTGVuZ3RoRm9yU3Ry
aW5nRGVjaW1hbCgpICsgc3VmZml4TGVuZ3RoOwogICAgIExDaGFyKiBidWZmZXI7Ci0gICAgUGFz
c1JlZjxTdHJpbmdJbXBsPiBzdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVk
KGJ1ZmZlckxlbmd0aCwgYnVmZmVyKTsKKyAgICBSZWY8U3RyaW5nSW1wbD4gc3RyaW5nID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChidWZmZXJMZW5ndGgsIGJ1ZmZlcik7CiAKICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBkZWNpbWFsLnRvU3RyaW5nRGVjaW1hbChidWZmZXIsIGJ1ZmZl
ckxlbmd0aCk7CiAKQEAgLTk2Miw3ICs5NjIsNyBAQCBORVZFUl9JTkxJTkUgUGFzc1JlZjxTdHJp
bmdJbXBsPiBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyVmFsdWUoY29uc3QgY2hhcgog
fQogCiB0ZW1wbGF0ZSA8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+Ci1BTFdBWVNfSU5MSU5FIFBh
c3NSZWY8U3RyaW5nSW1wbD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlclZhbHVlKGNv
bnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pIGNvbnN0CitBTFdBWVNfSU5M
SU5FIFJlZjxTdHJpbmdJbXBsPiBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyVmFsdWUo
Y29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gZm9ybWF0TnVtYmVyVmFsdWUoY2hhcmFjdGVycywgY2hhcmFjdGVyQ291bnQgLSAxKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggYWI2ZDZkYS4uZWRk
NzYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTIyMiwxNyAr
MjIyLDE3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmFsdWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1ZBTFVFX0lEOyB9CiAgICAgYm9vbCBpc0ZsZXgoKSBj
b25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX0ZSOyB9CiAKLSAgICBzdGF0aWMg
UGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUlEIHZh
bHVlSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWVJRCkp
OyB9Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZp
ZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHByb3BlcnR5SUQpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiBjcmVhdGVQYXJzZXJPcGVyYXRvcihpbnQgcGFyc2VyT3BlcmF0b3IpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocGFyc2VyT3BlcmF0b3IpKTsgfQor
ICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFs
dWVJRCB2YWx1ZUlEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZh
bHVlSUQpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50
aWZpZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKHByb3BlcnR5SUQpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNyZWF0ZVBhcnNlck9wZXJhdG9yKGludCBwYXJzZXJPcGVyYXRvcikgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZShwYXJzZXJPcGVyYXRvcikpOyB9CiAK
LSAgICBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQ29sb3IodW5zaWdu
ZWQgcmdiVmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUocmdi
VmFsdWUpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUo
ZG91YmxlIHZhbHVlLCBVbml0VHlwZXMgdHlwZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQ
cmltaXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSkpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBVbml0VHlwZXMgdHlwZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSkpOyB9
Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBMZW5n
dGgmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUsIHN0eWxlKSk7IH0KLSAgICBzdGF0aWMgUGFzc1Jl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGNvbnN0IExlbmd0aFNpemUmIHZhbHVlLCBjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUodmFsdWUsIHN0eWxlKSk7IH0KKyAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBjcmVhdGVDb2xvcih1bnNpZ25lZCByZ2JWYWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NQcmltaXRpdmVWYWx1ZShyZ2JWYWx1ZSkpOyB9CisgICAgc3RhdGljIFJlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gY3JlYXRlKGRvdWJsZSB2YWx1ZSwgVW5pdFR5cGVzIHR5cGUpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUsIHR5cGUpKTsgfQorICAgIHN0YXRp
YyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBVbml0
VHlwZXMgdHlwZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSwgdHlwZSkpOyB9CisgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGNv
bnN0IExlbmd0aCYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsgfQorICAgIHN0YXRp
YyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBMZW5ndGhTaXplJiB2YWx1ZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHZhbHVlLCBzdHlsZSkpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKFQgdmFsdWUpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKFQg
dmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZSkpOwogICAgIH0KQEAgLTI0MSw3ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VGhlIGJhc2ljIGlkZWEgaXMgdGhhdCBhIHN0eWxlc2hlZXQgY2FuIHVzZSB0aGUgdmFsdWUgX19x
ZW0gKGZvciBxdWlya3kgZW0pIGluc3RlYWQgb2YgZW0uCiAgICAgLy8gV2hlbiB0aGUgcXVpcmt5
IHZhbHVlIGlzIHVzZWQsIGlmIHlvdSdyZSBpbiBxdWlya3MgbW9kZSwgdGhlIG1hcmdpbiB3aWxs
IGNvbGxhcHNlIGF3YXkKICAgICAvLyBpbnNpZGUgYSB0YWJsZSBjZWxsLgotICAgIHN0YXRpYyBQ
YXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVBbGxvd2luZ01hcmdpblF1aXJrKGRvdWJs
ZSB2YWx1ZSwgVW5pdFR5cGVzIHR5cGUpCisgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gY3JlYXRlQWxsb3dpbmdNYXJnaW5RdWlyayhkb3VibGUgdmFsdWUsIFVuaXRUeXBlcyB0eXBl
KQogICAgIHsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHF1aXJrVmFsdWUgPSBuZXcgQ1NT
UHJpbWl0aXZlVmFsdWUodmFsdWUsIHR5cGUpOwogICAgICAgICBxdWlya1ZhbHVlLT5tX2lzUXVp
cmtWYWx1ZSA9IHRydWU7CkBAIC00MDQsOCArNDA0LDggQEAgcHJpdmF0ZToKIAogICAgIEFMV0FZ
U19JTkxJTkUgU3RyaW5nIGZvcm1hdE51bWJlckZvckN1c3RvbUNTU1RleHQoKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZSA8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+Ci0gICAgQUxXQVlTX0lOTElORSBQ
YXNzUmVmPFN0cmluZ0ltcGw+IGZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJDb3VudF0pIGNvbnN0OwotICAgIE5FVkVSX0lOTElORSBQYXNzUmVmPFN0
cmluZ0ltcGw+IGZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIqIHN1ZmZpeCwgdW5zaWduZWQg
c3VmZml4TGVuZ3RoKSBjb25zdDsKKyAgICBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBm
b3JtYXROdW1iZXJWYWx1ZShjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRd
KSBjb25zdDsKKyAgICBORVZFUl9JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IGZvcm1hdE51bWJlclZh
bHVlKGNvbnN0IGNoYXIqIHN1ZmZpeCwgdW5zaWduZWQgc3VmZml4TGVuZ3RoKSBjb25zdDsKIAog
ICAgIHVuaW9uIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1JlZmxlY3RWYWx1ZS5oCmluZGV4IDcyZTM2NmQuLjBiNTVmNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ1NTUHJpbWl0
aXZlVmFsdWU7CiAKIGNsYXNzIENTU1JlZmxlY3RWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTUmVmbGVjdFZhbHVlPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGlyZWN0aW9uLAorICAgIHN0YXRpYyBSZWY8Q1NTUmVm
bGVjdFZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGlyZWN0aW9u
LAogICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBvZmZzZXQsIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IG1hc2spCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NSZWZsZWN0VmFsdWUoZGlyZWN0aW9uLCBvZmZzZXQsIG1hc2spKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFkb3dWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NoYWRvd1ZhbHVlLmgKaW5kZXggMDA2YzYyOS4uMzBkM2I0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NoYWRvd1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NoYWRvd1ZhbHVlLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7
CiAvLyBVc2VkIGZvciB0ZXh0LXNoYWRvdyBhbmQgYm94LXNoYWRvdwogY2xhc3MgQ1NTU2hhZG93
VmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENT
U1NoYWRvd1ZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geCwKKyAg
ICBzdGF0aWMgUmVmPENTU1NoYWRvd1ZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4geCwKICAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geSwKICAg
ICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYmx1ciwKICAgICAgICAgUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3ByZWFkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmgKaW5kZXggZDI3NzQ0MC4uMjQ3NWMxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJikgPSAwOwog
Ci0gICAgdmlydHVhbCBQYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0
aWVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+
IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5jcHAKaW5kZXggOGU2ZTQwZi4uN2Y3MDIwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtNzUsMjMgKzc1LDIzIEBAIHN0YXRpYyBib29sIGlzQWNj
ZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJlbnQoTm9kZSogcGFyZW50Tm9kZSkKIH0KICNlbmRpZgog
Ci1QYXNzUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShQYXNzUmVmPFN0
eWxlU2hlZXRDb250ZW50cz4gc2hlZXQsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKK1JlZjxD
U1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiBzaGVldCwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKQogeyAKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NTdHlsZVNoZWV0KFdURjo6bW92ZShzaGVldCksIG93bmVyUnVsZSkpOwog
fQogCi1QYXNzUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShQYXNzUmVm
PFN0eWxlU2hlZXRDb250ZW50cz4gc2hlZXQsIE5vZGUqIG93bmVyTm9kZSkKK1JlZjxDU1NTdHls
ZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBz
aGVldCwgTm9kZSogb3duZXJOb2RlKQogeyAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NT
dHlsZVNoZWV0KFdURjo6bW92ZShzaGVldCksIG93bmVyTm9kZSwgZmFsc2UpKTsKIH0KIAotUGFz
c1JlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3du
ZXJOb2RlLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCitSZWY8
Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKE5vZGUmIG93bmVyTm9k
ZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogewogICAgIENT
U1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dChvd25lck5vZGUuZG9jdW1lbnQoKSwgYmFzZVVS
TCwgZW5jb2RpbmcpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxlU2hlZXQoU3R5
bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoYmFzZVVSTC5zdHJpbmcoKSwgcGFyc2VyQ29udGV4dCks
ICZvd25lck5vZGUsIHRydWUpKTsKIH0KIAotQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChQ
YXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gY29udGVudHMsIENTU0ltcG9ydFJ1bGUqIG93bmVy
UnVsZSkKK0NTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiBjb250ZW50cywgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKQogICAgIDogbV9jb250ZW50
cyhXVEY6Om1vdmUoY29udGVudHMpKQogICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQoZmFsc2Up
CiAgICAgLCBtX2lzRGlzYWJsZWQoZmFsc2UpCkBAIC0xMDEsNyArMTAxLDcgQEAgQ1NTU3R5bGVT
aGVldDo6Q1NTU3R5bGVTaGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gY29udGVudHMs
IENTU0ltcG9ydFJ1bGUKICAgICBtX2NvbnRlbnRzLT5yZWdpc3RlckNsaWVudCh0aGlzKTsKIH0K
IAotQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4gY29udGVudHMsIE5vZGUqIG93bmVyTm9kZSwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpCitD
U1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29u
dGVudHMsIE5vZGUqIG93bmVyTm9kZSwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpCiAgICAgOiBt
X2NvbnRlbnRzKFdURjo6bW92ZShjb250ZW50cykpCiAgICAgLCBtX2lzSW5saW5lU3R5bGVzaGVl
dChpc0lubGluZVN0eWxlc2hlZXQpCiAgICAgLCBtX2lzRGlzYWJsZWQoZmFsc2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCA0MDE3YjlmLi4xODkwNTM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmgKQEAgLTQ5LDkgKzQ5LDkgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9u
Q29kZTsKIAogY2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUGFzc1Jl
ZjxTdHlsZVNoZWV0Q29udGVudHM+LCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKLSAg
ICBzdGF0aWMgUGFzc1JlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUGFzc1JlZjxTdHlsZVNoZWV0
Q29udGVudHM+LCBOb2RlKiBvd25lck5vZGUpOwotICAgIHN0YXRpYyBQYXNzUmVmPENTU1N0eWxl
U2hlZXQ+IGNyZWF0ZUlubGluZShOb2RlJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZyA9IFN0cmluZygpKTsKKyAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShS
ZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsK
KyAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRl
bnRzPiYmLCBOb2RlKiBvd25lck5vZGUpOworICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4g
Y3JlYXRlSW5saW5lKE5vZGUmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nID0g
U3RyaW5nKCkpOwogCiAgICAgdmlydHVhbCB+Q1NTU3R5bGVTaGVldCgpOwogCkBAIC0xMTgsOCAr
MTE4LDggQEAgcHVibGljOgogICAgIHZvaWQgZGV0YWNoRnJvbURvY3VtZW50KCkgeyBtX293bmVy
Tm9kZSA9IG51bGxwdHI7IH0KIAogcHJpdmF0ZToKLSAgICBDU1NTdHlsZVNoZWV0KFBhc3NSZWY8
U3R5bGVTaGVldENvbnRlbnRzPiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKTsKLSAgICBDU1NT
dHlsZVNoZWV0KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiwgTm9kZSogb3duZXJOb2RlLCBi
b29sIGlzSW5saW5lU3R5bGVzaGVldCk7CisgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVl
dENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUpOworICAgIENTU1N0eWxlU2hl
ZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSogb3duZXJOb2RlLCBib29sIGlzSW5s
aW5lU3R5bGVzaGVldCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHR5cGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBBU0NJSUxpdGVyYWwoInRleHQvY3NzIik7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCmluZGV4IGMzOWFiMGMuLmRh
Y2I0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaApA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0N1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWY8Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlPiBjcmVhdGUo
ZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQorICAgIHN0YXRpYyBS
ZWY8Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlPiBjcmVhdGUoZG91YmxlIHgxLCBk
b3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKHgxLCB5MSwgeDIs
IHkyKSk7CiAgICAgfQpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBDU1NTdGVw
c1RpbWluZ0Z1bmN0aW9uVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmPENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKGludCBzdGVw
cywgYm9vbCBzdGVwQXRTdGFydCkKKyAgICBzdGF0aWMgUmVmPENTU1N0ZXBzVGltaW5nRnVuY3Rp
b25WYWx1ZT4gY3JlYXRlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZShzdGVw
cywgc3RlcEF0U3RhcnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVW5pY29kZVJhbmdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFu
Z2VWYWx1ZS5oCmluZGV4IDA2YzE3NzQuLjI2NDMwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NVbmljb2RlUmFuZ2VWYWx1ZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ1NTVW5pY29kZVJhbmdlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmPENTU1VuaWNvZGVSYW5nZVZhbHVlPiBjcmVhdGUoVUNo
YXIzMiBmcm9tLCBVQ2hhcjMyIHRvKQorICAgIHN0YXRpYyBSZWY8Q1NTVW5pY29kZVJhbmdlVmFs
dWU+IGNyZWF0ZShVQ2hhcjMyIGZyb20sIFVDaGFyMzIgdG8pCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NVbmljb2RlUmFuZ2VWYWx1ZShmcm9tLCB0bykpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IGE2YzNjZTYuLjI3NTIzNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmNwcApAQCAtNzIsNyArNzIsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoQ1NT
VmFsdWUpID09IHNpemVvZihTYW1lU2l6ZUFzQ1NTVmFsdWUpLCBDU1NfdmFsdWVfc2hvdWxkXwog
CiBjbGFzcyBUZXh0Q2xvbmVDU1NWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWY8VGV4dENsb25lQ1NTVmFsdWU+IGNyZWF0ZShDbGFzc1R5cGUgY2xh
c3NUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpCisgICAgc3RhdGljIFJlZjxUZXh0Q2xvbmVDU1NW
YWx1ZT4gY3JlYXRlKENsYXNzVHlwZSBjbGFzc1R5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRDbG9uZUNTU1ZhbHVlKGNsYXNz
VHlwZSwgdGV4dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAppbmRleCBjODlm
OTU4Li5hNDczY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC0zNCwxOSArMzQs
MTkgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZjxDU1NWYWx1ZT4sIDQ+OjppdGVy
YXRvciBpdGVyYXRvcjsKICAgICB0eXBlZGVmIFZlY3RvcjxSZWY8Q1NTVmFsdWU+LCA0Pjo6Y29u
c3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1
ZUxpc3Q+IGNyZWF0ZUNvbW1hU2VwYXJhdGVkKCkKKyAgICBzdGF0aWMgUmVmPENTU1ZhbHVlTGlz
dD4gY3JlYXRlQ29tbWFTZXBhcmF0ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTVmFsdWVMaXN0KENvbW1hU2VwYXJhdG9yKSk7CiAgICAgfQotICAgIHN0YXRpYyBQ
YXNzUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlU3BhY2VTZXBhcmF0ZWQoKQorICAgIHN0YXRpYyBS
ZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVTcGFjZVNlcGFyYXRlZCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NWYWx1ZUxpc3QoU3BhY2VTZXBhcmF0b3IpKTsKICAgICB9
Ci0gICAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVTbGFzaFNlcGFyYXRlZCgp
CisgICAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZVNsYXNoU2VwYXJhdGVkKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhbHVlTGlzdChTbGFzaFNlcGFy
YXRvcikpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUZy
b21QYXJzZXJWYWx1ZUxpc3QoQ1NTUGFyc2VyVmFsdWVMaXN0JiBsaXN0KQorICAgIHN0YXRpYyBS
ZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVGcm9tUGFyc2VyVmFsdWVMaXN0KENTU1BhcnNlclZhbHVl
TGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhbHVl
TGlzdChsaXN0KSk7CiAgICAgfQpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgaXRlcmF0
b3IgYmVnaW4oKSB7IHJldHVybiBtX3ZhbHVlcy5iZWdpbigpOyB9CiAgICAgaXRlcmF0b3IgZW5k
KCkgeyByZXR1cm4gbV92YWx1ZXMuZW5kKCk7IH0KIAotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWY8
Q1NTVmFsdWU+KTsKLSAgICB2b2lkIHByZXBlbmQoUGFzc1JlZjxDU1NWYWx1ZT4pOworICAgIHZv
aWQgYXBwZW5kKFJlZjxDU1NWYWx1ZT4mJik7CisgICAgdm9pZCBwcmVwZW5kKFJlZjxDU1NWYWx1
ZT4mJik7CiAgICAgYm9vbCByZW1vdmVBbGwoQ1NTVmFsdWUqKTsKICAgICBib29sIGhhc1ZhbHVl
KENTU1ZhbHVlKikgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvcHkoKTsK
QEAgLTg5LDEyICs4OSwxMiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWY8Q1NTVmFsdWU+LCA0
PiBtX3ZhbHVlczsKIH07CiAKLWlubGluZSB2b2lkIENTU1ZhbHVlTGlzdDo6YXBwZW5kKFBhc3NS
ZWY8Q1NTVmFsdWU+IHZhbHVlKQoraW5saW5lIHZvaWQgQ1NTVmFsdWVMaXN0OjphcHBlbmQoUmVm
PENTU1ZhbHVlPiYmIHZhbHVlKQogewogICAgIG1fdmFsdWVzLmFwcGVuZChXVEY6Om1vdmUodmFs
dWUpKTsKIH0KIAotaW5saW5lIHZvaWQgQ1NTVmFsdWVMaXN0OjpwcmVwZW5kKFBhc3NSZWY8Q1NT
VmFsdWU+IHZhbHVlKQoraW5saW5lIHZvaWQgQ1NTVmFsdWVMaXN0OjpwcmVwZW5kKFJlZjxDU1NW
YWx1ZT4mJiB2YWx1ZSkKIHsKICAgICBtX3ZhbHVlcy5pbnNlcnQoMCwgV1RGOjptb3ZlKHZhbHVl
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCmluZGV4IDJkZmJjNjYuLjY2NTkz
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCkBAIC00OSw3ICs0OSw3IEBAIENT
U1ZhbHVlUG9vbDo6Q1NTVmFsdWVQb29sKCkKIHsKIH0KIAotUGFzc1JlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVJRCBpZGVu
dCkKK1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVJRCBpZGVudCkKIHsKICAgICBpZiAoIWlkZW50KQogICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWRlbnQpOwpAQCAtNjAsMjEg
KzYwLDIxIEBAIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSUQgaWRlbnQpCiAgICAgcmV0dXJuICptX2lkZW50aWZp
ZXJWYWx1ZUNhY2hlW2lkZW50XTsKIH0KIAotUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NT
VmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTUHJvcGVydHlJRCBpZGVudCkKK1Jl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTUHJvcGVydHlJRCBpZGVudCkKIHsKICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoaWRlbnQpOwogfQogCi1QYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBD
U1NWYWx1ZVBvb2w6OmNyZWF0ZUNvbG9yVmFsdWUodW5zaWduZWQgcmdiVmFsdWUpCitSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCBy
Z2JWYWx1ZSkKIHsKICAgICAvLyBUaGVzZSBhcmUgdGhlIGVtcHR5IGFuZCBkZWxldGVkIHZhbHVl
cyBvZiB0aGUgaGFzaCB0YWJsZS4KICAgICBpZiAocmdiVmFsdWUgPT0gQ29sb3I6OnRyYW5zcGFy
ZW50KQotICAgICAgICByZXR1cm4gbV9jb2xvclRyYW5zcGFyZW50OworICAgICAgICByZXR1cm4g
bV9jb2xvclRyYW5zcGFyZW50LmNvcHlSZWYoKTsKICAgICBpZiAocmdiVmFsdWUgPT0gQ29sb3I6
OndoaXRlKQotICAgICAgICByZXR1cm4gbV9jb2xvcldoaXRlOworICAgICAgICByZXR1cm4gbV9j
b2xvcldoaXRlLmNvcHlSZWYoKTsKICAgICAvLyBKdXN0IGJlY2F1c2UgaXQgaXMgY29tbW9uLgog
ICAgIGlmIChyZ2JWYWx1ZSA9PSBDb2xvcjo6YmxhY2spCi0gICAgICAgIHJldHVybiBtX2NvbG9y
QmxhY2s7CisgICAgICAgIHJldHVybiBtX2NvbG9yQmxhY2suY29weVJlZigpOwogCiAgICAgLy8g
UmVtb3ZlIG9uZSBlbnRyeSBhdCByYW5kb20gaWYgdGhlIGNhY2hlIGdyb3dzIHRvbyBsYXJnZS4K
ICAgICBjb25zdCBpbnQgbWF4aW11bUNvbG9yQ2FjaGVTaXplID0gNTEyOwpAQCAtODcsNyArODcs
NyBAQCBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUNvbG9y
VmFsdWUodW5zaWduZWQgcmdiVmFsdWUpCiAgICAgcmV0dXJuICplbnRyeS5pdGVyYXRvci0+dmFs
dWU7CiB9CiAKLVBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRl
VmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHR5cGUpCitS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZh
bHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHR5cGUpCiB7CiAgICAgQVNTRVJUKHN0
ZDo6aXNmaW5pdGUodmFsdWUpKTsKIApAQCAtMTE4LDcgKzExOCw3IEBAIFBhc3NSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQ
cmltaXRpdmVWCiAgICAgcmV0dXJuICpjYWNoZVtpbnRWYWx1ZV07CiB9CiAKLVBhc3NSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlRm9udEZhbWlseVZhbHVlKGNvbnN0
IFN0cmluZyYgZmFtaWx5TmFtZSkKK1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29s
OjpjcmVhdGVGb250RmFtaWx5VmFsdWUoY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lKQogewogICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHZhbHVlID0gbV9mb250RmFtaWx5VmFsdWVDYWNo
ZS5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKaW5kZXggMzM5NjQ1My4uNTI2ODBjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaApAQCAtNDQsMTggKzQ0LDE4IEBAIGNsYXNzIENTU1Zh
bHVlUG9vbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3Ry
aW5nJik7Ci0gICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlRm9udEZhbWlseVZh
bHVlKGNvbnN0IFN0cmluZyYpOwotICAgIFBhc3NSZWY8Q1NTSW5oZXJpdGVkVmFsdWU+IGNyZWF0
ZUluaGVyaXRlZFZhbHVlKCkgeyByZXR1cm4gbV9pbmhlcml0ZWRWYWx1ZTsgfQotICAgIFBhc3NS
ZWY8Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpIHsgcmV0dXJu
IG1faW1wbGljaXRJbml0aWFsVmFsdWU7IH0KLSAgICBQYXNzUmVmPENTU0luaXRpYWxWYWx1ZT4g
Y3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKSB7IHJldHVybiBtX2V4cGxpY2l0SW5pdGlhbFZh
bHVlOyB9Ci0gICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlSUQgaWRlbnRpZmllcik7Ci0gICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Byb3BlcnR5SUQgaWRlbnRpZmllcik7Ci0gICAg
UGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCByZ2JW
YWx1ZSk7Ci0gICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoZG91Ymxl
IHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKTsKLSAgICBQYXNzUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzIHR5cGUpIHsgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUodmFsdWUsIHR5cGUpOyB9Ci0gICAgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRl
VmFsdWUoY29uc3QgTGVuZ3RoJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBzdHlsZSk7IH0KLSAgICBQYXNz
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShjb25zdCBMZW5ndGhTaXplJiB2YWx1
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHZhbHVlLCBzdHlsZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
UGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoVCB2YWx1ZSkgeyByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSk7IH0KKyAgICBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmKTsKKyAgICBSZWY8Q1NT
SW5oZXJpdGVkVmFsdWU+IGNyZWF0ZUluaGVyaXRlZFZhbHVlKCkgeyByZXR1cm4gbV9pbmhlcml0
ZWRWYWx1ZS5jb3B5UmVmKCk7IH0KKyAgICBSZWY8Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVJbXBs
aWNpdEluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIG1faW1wbGljaXRJbml0aWFsVmFsdWUuY29weVJl
ZigpOyB9CisgICAgUmVmPENTU0luaXRpYWxWYWx1ZT4gY3JlYXRlRXhwbGljaXRJbml0aWFsVmFs
dWUoKSB7IHJldHVybiBtX2V4cGxpY2l0SW5pdGlhbFZhbHVlLmNvcHlSZWYoKTsgfQorICAgIFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSUQgaWRl
bnRpZmllcik7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTUHJvcGVydHlJRCBpZGVudGlmaWVyKTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+
IGNyZWF0ZUNvbG9yVmFsdWUodW5zaWduZWQgcmdiVmFsdWUpOworICAgIFJlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gY3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzKTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZhbHVlKGNvbnN0IFN0
cmluZyYgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdHlwZSkgeyByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7IH0KKyAgICBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZVZhbHVlKGNvbnN0IExlbmd0aCYgdmFsdWUsIGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwg
c3R5bGUpOyB9CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShjb25zdCBM
ZW5ndGhTaXplJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBzdHlsZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShUIHZhbHVl
KSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlKTsgfQogCiAgICAgdm9p
ZCBkcmFpbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDhkMzUxZTUuLjU3MWQ4NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3Bw
CkBAIC0yOTMsNyArMjkzLDcgQEAgU3R5bGVTaGVldENvbnRlbnRzKiBQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb246OmNvbnRleHRTdHlsZVNoZWV0KCkgY29uc3QKICAgICByZXR1cm4gY3Nz
U3R5bGVTaGVldCA/ICZjc3NTdHlsZVNoZWV0LT5jb250ZW50cygpIDogMDsKIH0KIAotUGFzc1Jl
ZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OmNvcHlQcm9wZXJ0aWVzKCkgY29uc3QKK1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmNvcHlQcm9wZXJ0aWVzKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+bXV0YWJsZUNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAppbmRleCAxMDBi
M2FjLi4zM2EwMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIG92ZXJy
aWRlIGZpbmFsOwogICAgIHZpcnR1YWwgYm9vbCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3Bl
cnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2Rl
Jikgb3ZlcnJpZGUgZmluYWw7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAg
dmlydHVhbCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKIAogICAgIENTU1ZhbHVlKiBjbG9uZUFuZENhY2hlRm9yQ1NTT00o
Q1NTVmFsdWUqKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5k
ZXggM2IwOWNjZi4uMTc3ZmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5j
cHAKQEAgLTUzLDEzICs1MywxMyBAQCBzdGF0aWMgYm9vbCBpc0luaXRpYWxPckluaGVyaXQoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUubGVuZ3RoKCkgPT0gNyAmJiAodmFs
dWUgPT0gImluaXRpYWwiIHx8IHZhbHVlID09ICJpbmhlcml0Iik7CiB9CiAKLVBhc3NSZWY8SW1t
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBJbW11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShj
b25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgdW5zaWduZWQgY291bnQsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSkKK1JlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IEltbXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1
bnNpZ25lZCBjb3VudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewogICAgIHZvaWQq
IHNsb3QgPSBXVEY6OmZhc3RNYWxsb2Moc2l6ZUZvckltbXV0YWJsZVN0eWxlUHJvcGVydGllc1dp
dGhQcm9wZXJ0eUNvdW50KGNvdW50KSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51
bGwsIHNsb3QpIEltbXV0YWJsZVN0eWxlUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBjb3VudCwgY3Nz
UGFyc2VyTW9kZSkpOwogfQogCi1QYXNzUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gU3R5
bGVQcm9wZXJ0aWVzOjppbW11dGFibGVDb3B5SWZOZWVkZWQoKSBjb25zdAorUmVmPEltbXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gU3R5bGVQcm9wZXJ0aWVzOjppbW11dGFibGVDb3B5SWZOZWVkZWQo
KSBjb25zdAogewogICAgIGlmIChpczxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+KCp0aGlzKSkK
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4oY29uc3Rf
Y2FzdDxTdHlsZVByb3BlcnRpZXMmPigqdGhpcykpOwpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgdm9p
ZCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjbGVhcigpCiAKIGNvbnN0IHVuc2lnbmVkIG51bUJs
b2NrUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgoYmxvY2tQcm9wZXJ0aWVzKTsKIAotUGFz
c1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBTdHlsZVByb3BlcnRpZXM6OmNvcHlCbG9ja1By
b3BlcnRpZXMoKSBjb25zdAorUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVy
dGllczo6Y29weUJsb2NrUHJvcGVydGllcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvcHlQcm9w
ZXJ0aWVzSW5TZXQoYmxvY2tQcm9wZXJ0aWVzLCBudW1CbG9ja1Byb3BlcnRpZXMpOwogfQpAQCAt
MTE4OCwxMiArMTE4OCwxMiBAQCBib29sIFN0eWxlUHJvcGVydGllczo6cHJvcGVydHlNYXRjaGVz
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUqCiAgICAgcmV0dXJuIHBy
b3BlcnR5QXQoZm91bmRQcm9wZXJ0eUluZGV4KS52YWx1ZSgpLT5lcXVhbHMoKnByb3BlcnR5VmFs
dWUpOwogfQogCi1QYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFN0eWxlUHJvcGVydGll
czo6bXV0YWJsZUNvcHkoKSBjb25zdAorUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFN0eWxl
UHJvcGVydGllczo6bXV0YWJsZUNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE11dGFibGVTdHlsZVByb3BlcnRpZXMoKnRoaXMpKTsKIH0KIAotUGFzc1JlZjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBTdHlsZVByb3BlcnRpZXM6OmNvcHlQcm9wZXJ0aWVzSW5TZXQoY29u
c3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CitSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gU3R5bGVQcm9wZXJ0aWVzOjpjb3B5UHJvcGVydGllc0luU2V0KGNv
bnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewogICAgIFZl
Y3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiBsaXN0OwogICAgIGxpc3QucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShsZW5ndGgpOwpAQCAtMTI1MCwxMiArMTI1MCwxMiBAQCB2b2lkIFN0eWxlUHJvcGVydGll
czo6c2hvd1N0eWxlKCkKIH0KICNlbmRpZgogCi1QYXNzUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCitSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gTXV0YWJsZVN0eWxlUHJvcGVydGll
czo6Y3JlYXRlKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKGNzc1BhcnNlck1vZGUpKTsKIH0KIAot
UGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpj
cmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2lnbmVkIGNvdW50KQorUmVm
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZShj
b25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgdW5zaWduZWQgY291bnQpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTXV0YWJsZVN0eWxlUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBjb3Vu
dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IGQxZmY2ZTcuLjhk
MzFmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTkyLDE2ICs5Miwx
NiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5
SUQpIGNvbnN0OwogICAgIGJvb2wgaXNQcm9wZXJ0eUltcGxpY2l0KENTU1Byb3BlcnR5SUQpIGNv
bnN0OwogCi0gICAgUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5QmxvY2tQcm9w
ZXJ0aWVzKCkgY29uc3Q7CisgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlCbG9j
a1Byb3BlcnRpZXMoKSBjb25zdDsKIAogICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlck1vZGU+KG1fY3NzUGFyc2VyTW9k
ZSk7IH0KIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJM
PiYsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpIGNvbnN0OwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgUGFzc1JlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxlQ29w
eSgpIGNvbnN0OwotICAgIFBhc3NSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBpbW11dGFi
bGVDb3B5SWZOZWVkZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8TXV0YWJsZVN0
eWxlUHJvcGVydGllcz4gbXV0YWJsZUNvcHkoKSBjb25zdDsKKyAgICBSZWY8SW1tdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBpbW11dGFibGVDb3B5SWZOZWVkZWQoKSBjb25zdDsKIAotICAgIFBhc3NS
ZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQ
cm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CisgICAgUmVmPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCog
c2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwogICAgIAogICAgIFN0cmluZyBhc1RleHQoKSBj
b25zdDsKIApAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiBjbGFzcyBJbW11dGFibGVTdHls
ZVByb3BlcnRpZXMgOiBwdWJsaWMgU3R5bGVQcm9wZXJ0aWVzIHsKIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB+SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKCk7Ci0gICAgc3RhdGljIFBhc3NS
ZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIHBy
b3BlcnRpZXMsIHVuc2lnbmVkIGNvdW50LCBDU1NQYXJzZXJNb2RlKTsKKyAgICBzdGF0aWMgUmVm
PEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9w
ZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCwgQ1NTUGFyc2VyTW9kZSk7CiAKICAgICB1bnNpZ25lZCBw
cm9wZXJ0eUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVNpemU7IH0KICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiAhcHJvcGVydHlDb3VudCgpOyB9CkBAIC0xODIsOCArMTgy
LDggQEAgaW5saW5lIGNvbnN0IFN0eWxlUHJvcGVydHlNZXRhZGF0YSogSW1tdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjptZXRhZGF0YUFycmF5KCkgY28KIAogY2xhc3MgTXV0YWJsZVN0eWxlUHJvcGVy
dGllcyA6IHB1YmxpYyBTdHlsZVByb3BlcnRpZXMgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNyZWF0ZShDU1NQYXJzZXJNb2RlID0gQ1NTUXVp
cmtzTW9kZSk7Ci0gICAgc3RhdGljIFBhc3NSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY3Jl
YXRlKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCk7CisgICAg
c3RhdGljIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjcmVhdGUoQ1NTUGFyc2VyTW9kZSA9
IENTU1F1aXJrc01vZGUpOworICAgIHN0YXRpYyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
Y3JlYXRlKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB+TXV0YWJsZVN0eWxlUHJvcGVydGllcygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggYjE0ZmI3MS4uZTUzNGZjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIGlubGluZSB2b2lk
IFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjppbml0Rm9yU3R5bGVSZXNvbHZlKERvY3VtZW50JiBkb2N1
bWVudCwgRWxlbWVuCiAgICAgdXBkYXRlQ29udmVyc2lvbkRhdGEoKTsKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBtX3N0eWxlID0gV1RGOjptb3ZlKHN0eWxlKTsKICAg
ICB1cGRhdGVDb252ZXJzaW9uRGF0YSgpOwpAQCAtNzM5LDcgKzczOSw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0F0U2hhZG93Qm91bmRhcnkoY29uc3QgRWxlbWVudCogZWxlbWVudCkKICAgICBy
ZXR1cm4gcGFyZW50Tm9kZSAmJiBwYXJlbnROb2RlLT5pc1NoYWRvd1Jvb3QoKTsKIH0KIAotUGFz
c1JlZjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQq
IGVsZW1lbnQsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LAorUmVmPFJlbmRlclN0eWxlPiBT
dHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgUmVuZGVyU3R5
bGUqIGRlZmF1bHRQYXJlbnQsCiAgICAgU3R5bGVTaGFyaW5nQmVoYXZpb3Igc2hhcmluZ0JlaGF2
aW9yLCBSdWxlTWF0Y2hpbmdCZWhhdmlvciBtYXRjaGluZ0JlaGF2aW9yLCBjb25zdCBSZW5kZXJS
ZWdpb24qIHJlZ2lvbkZvclN0eWxpbmcpCiB7CiAgICAgLy8gT25jZSBhbiBlbGVtZW50IGhhcyBh
IHJlbmRlcmVyLCB3ZSBkb24ndCB0cnkgdG8gZGVzdHJveSBpdCwgc2luY2Ugb3RoZXJ3aXNlIHRo
ZSByZW5kZXJlcgpAQCAtODExLDcgKzgxMSw3IEBAIFBhc3NSZWY8UmVuZGVyU3R5bGU+IFN0eWxl
UmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTdHlsCiAg
ICAgcmV0dXJuIHN0YXRlLnRha2VTdHlsZSgpOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBT
dHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50
U3R5bGUsIGNvbnN0IFN0eWxlS2V5ZnJhbWUqIGtleWZyYW1lLCBLZXlmcmFtZVZhbHVlJiBrZXlm
cmFtZVZhbHVlKQorUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZy
YW1lKGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIGNvbnN0IFN0eWxlS2V5ZnJhbWUq
IGtleWZyYW1lLCBLZXlmcmFtZVZhbHVlJiBrZXlmcmFtZVZhbHVlKQogewogICAgIE1hdGNoUmVz
dWx0IHJlc3VsdDsKICAgICByZXN1bHQuYWRkTWF0Y2hlZFByb3BlcnRpZXMoa2V5ZnJhbWUtPnBy
b3BlcnRpZXMoKSk7CkBAIC05ODUsNyArOTg1LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
U3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIGMK
ICAgICByZXR1cm4gc3RhdGUudGFrZVN0eWxlKCk7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+
IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4KQorUmVmPFJlbmRlclN0
eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKIHsKICAgICBt
X3N0YXRlLmluaXRGb3JTdHlsZVJlc29sdmUobV9kb2N1bWVudCwgbV9kb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQoKSwgbV9kb2N1bWVudC5yZW5kZXJTdHlsZSgpKTsKIApAQCAtMTAyNSw3ICsxMDI1
LDcgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKGlu
dCBwYWdlSW5kZXgpCiAgICAgcmV0dXJuIG1fc3RhdGUudGFrZVN0eWxlKCk7CiB9CiAKLVBhc3NS
ZWY8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OmRlZmF1bHRTdHlsZUZvckVsZW1lbnQoKQor
UmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpkZWZhdWx0U3R5bGVGb3JFbGVtZW50KCkK
IHsKICAgICBtX3N0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGUoKSk7CiAgICAgLy8g
TWFrZSBzdXJlIG91ciBmb250cyBhcmUgaW5pdGlhbGl6ZWQgaWYgd2UgZG9uJ3QgaW5oZXJpdCB0
aGVtIGZyb20gb3VyIHBhcmVudCBzdHlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmlu
ZGV4IDA3MjY5ZGIuLmQ4ODY3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAt
MTQ3LDE1ICsxNDcsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcHVzaFBhcmVudEVsZW1lbnQoRWxl
bWVudCopOwogICAgIHZvaWQgcG9wUGFyZW50RWxlbWVudChFbGVtZW50Kik7CiAKLSAgICBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnQoRWxlbWVudCosIFJlbmRlclN0eWxlKiBw
YXJlbnRTdHlsZSwgU3R5bGVTaGFyaW5nQmVoYXZpb3IgPSBBbGxvd1N0eWxlU2hhcmluZywKKyAg
ICBSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50KiwgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlLCBTdHlsZVNoYXJpbmdCZWhhdmlvciA9IEFsbG93U3R5bGVTaGFyaW5nLAog
ICAgICAgICBSdWxlTWF0Y2hpbmdCZWhhdmlvciA9IE1hdGNoQWxsUnVsZXMsIGNvbnN0IFJlbmRl
clJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZyA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBrZXlmcmFt
ZVN0eWxlc0ZvckFuaW1hdGlvbihFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBLZXlmcmFt
ZUxpc3QmKTsKIAogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxl
bWVudChFbGVtZW50KiwgY29uc3QgUHNldWRvU3R5bGVSZXF1ZXN0JiwgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlKTsKIAotICAgIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUGFnZShpbnQg
cGFnZUluZGV4KTsKLSAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBkZWZhdWx0U3R5bGVGb3JFbGVt
ZW50KCk7CisgICAgUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7
CisgICAgUmVmPFJlbmRlclN0eWxlPiBkZWZhdWx0U3R5bGVGb3JFbGVtZW50KCk7CiAKICAgICBS
ZW5kZXJTdHlsZSogc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0eWxlKCk7IH0KICAg
ICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnBhcmVu
dFN0eWxlKCk7IH0KQEAgLTE4MSw3ICsxODEsNyBAQCBwcml2YXRlOgogICAgIFN0eWxlZEVsZW1l
bnQqIGZpbmRTaWJsaW5nRm9yU3R5bGVTaGFyaW5nKE5vZGUqLCB1bnNpZ25lZCYgY291bnQpIGNv
bnN0OwogICAgIGJvb2wgY2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqKSBj
b25zdDsKIAotICAgIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yS2V5ZnJhbWUoY29uc3Qg
UmVuZGVyU3R5bGUqLCBjb25zdCBTdHlsZUtleWZyYW1lKiwgS2V5ZnJhbWVWYWx1ZSYpOworICAg
IFJlZjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSosIGNv
bnN0IFN0eWxlS2V5ZnJhbWUqLCBLZXlmcmFtZVZhbHVlJik7CiAKIHB1YmxpYzoKICAgICAvLyBU
aGVzZSBtZXRob2RzIHdpbGwgZ2l2ZSBiYWNrIHRoZSBzZXQgb2YgcnVsZXMgdGhhdCBtYXRjaGVk
IGZvciBhIGdpdmVuIGVsZW1lbnQgKG9yIGEgcHNldWRvLWVsZW1lbnQpLgpAQCAtMzYzLDExICsz
NjMsMTEgQEAgcHVibGljOgogICAgICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX2VsZW1lbnQtPmRvY3VtZW50KCk7IH0KICAgICAgICAgRWxlbWVudCogZWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgICAgICBTdHlsZWRFbGVtZW50KiBzdHls
ZWRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZWRFbGVtZW50OyB9Ci0gICAgICAgIHZv
aWQgc2V0U3R5bGUoUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgICAgICB2b2lkIHNldFN0eWxl
KFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KLSAgICAgICAgUGFzc1JlZjxSZW5kZXJTdHlsZT4g
dGFrZVN0eWxlKCkgeyByZXR1cm4gbV9zdHlsZS5yZWxlYXNlTm9uTnVsbCgpOyB9CisgICAgICAg
IFJlZjxSZW5kZXJTdHlsZT4gdGFrZVN0eWxlKCkgeyByZXR1cm4gbV9zdHlsZS5yZWxlYXNlTm9u
TnVsbCgpOyB9CiAKLSAgICAgICAgdm9pZCBzZXRQYXJlbnRTdHlsZShQYXNzUmVmPFJlbmRlclN0
eWxlPiBwYXJlbnRTdHlsZSkgeyBtX3BhcmVudFN0eWxlID0gV1RGOjptb3ZlKHBhcmVudFN0eWxl
KTsgfQorICAgICAgICB2b2lkIHNldFBhcmVudFN0eWxlKFJlZjxSZW5kZXJTdHlsZT4mJiBwYXJl
bnRTdHlsZSkgeyBtX3BhcmVudFN0eWxlID0gV1RGOjptb3ZlKHBhcmVudFN0eWxlKTsgfQogICAg
ICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFN0
eWxlLmdldCgpOyB9CiAgICAgICAgIFJlbmRlclN0eWxlKiByb290RWxlbWVudFN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9yb290RWxlbWVudFN0eWxlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5j
cHAKaW5kZXggODlkYmM3Yy4uYTVmNDljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAg
LTEwMSw3ICsxMDEsNyBAQCB2b2lkIFN0eWxlUnVsZUJhc2U6OmRlc3Ryb3koKQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi1QYXNzUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJh
c2U6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHko
KSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAgY2FzZSBTdHlsZToKQEAgLTEz
Nyw3ICsxMzcsNyBAQCBQYXNzUmVmPFN0eWxlUnVsZUJhc2U+IFN0eWxlUnVsZUJhc2U6OmNvcHko
KSBjb25zdAogICAgIH0KICAgICBDUkFTSCgpOwogICAgIC8vIEhBQ0s6IEVGTCB3b24ndCBidWls
ZCB3aXRob3V0IHRoaXMgKG9sZCBHQ0Mgd2l0aCBjcmFwcHkgLVdlcnJvcj1yZXR1cm4tdHlwZSkK
LSAgICByZXR1cm4gUGFzc1JlZjxTdHlsZVJ1bGVCYXNlPigqc3RhdGljX2Nhc3Q8U3R5bGVSdWxl
QmFzZSo+KG51bGxwdHIpKTsKKyAgICByZXR1cm4gUmVmPFN0eWxlUnVsZUJhc2U+KCpzdGF0aWNf
Y2FzdDxTdHlsZVJ1bGVCYXNlKj4obnVsbHB0cikpOwogfQogCiBQYXNzUmVmUHRyPENTU1J1bGU+
IFN0eWxlUnVsZUJhc2U6OmNyZWF0ZUNTU09NV3JhcHBlcihDU1NTdHlsZVNoZWV0KiBwYXJlbnRT
aGVldCwgQ1NTUnVsZSogcGFyZW50UnVsZSkgY29uc3QKQEAgLTE5NSw3ICsxOTUsNyBAQCB1bnNp
Z25lZCBTdHlsZVJ1bGU6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCiAgICAgcmV0dXJuIHNpemVvZihT
dHlsZVJ1bGUpICsgc2l6ZW9mKENTU1NlbGVjdG9yKSArIFN0eWxlUHJvcGVydGllczo6YXZlcmFn
ZVNpemVJbkJ5dGVzKCk7CiB9CiAKLVN0eWxlUnVsZTo6U3R5bGVSdWxlKGludCBzb3VyY2VMaW5l
LCBQYXNzUmVmPFN0eWxlUHJvcGVydGllcz4gcHJvcGVydGllcykKK1N0eWxlUnVsZTo6U3R5bGVS
dWxlKGludCBzb3VyY2VMaW5lLCBSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCiAg
ICAgOiBTdHlsZVJ1bGVCYXNlKFN0eWxlLCBzb3VyY2VMaW5lKQogICAgICwgbV9wcm9wZXJ0aWVz
KFdURjo6bW92ZShwcm9wZXJ0aWVzKSkKIHsKQEAgLTIxOSw3ICsyMTksNyBAQCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzJiBTdHlsZVJ1bGU6Om11dGFibGVQcm9wZXJ0aWVzKCkKICAgICByZXR1cm4g
ZG93bmNhc3Q8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4obV9wcm9wZXJ0aWVzLmdldCgpKTsKIH0K
IAotUGFzc1JlZjxTdHlsZVJ1bGU+IFN0eWxlUnVsZTo6Y3JlYXRlKGludCBzb3VyY2VMaW5lLCBj
b25zdCBWZWN0b3I8Y29uc3QgQ1NTU2VsZWN0b3IqPiYgc2VsZWN0b3JzLCBQYXNzUmVmPFN0eWxl
UHJvcGVydGllcz4gcHJvcGVydGllcykKK1JlZjxTdHlsZVJ1bGU+IFN0eWxlUnVsZTo6Y3JlYXRl
KGludCBzb3VyY2VMaW5lLCBjb25zdCBWZWN0b3I8Y29uc3QgQ1NTU2VsZWN0b3IqPiYgc2VsZWN0
b3JzLCBSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCiB7CiAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNlbGVjdG9ycy5pc0VtcHR5KCkpOwogICAgIENTU1Nl
bGVjdG9yKiBzZWxlY3Rvckxpc3RBcnJheSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q1NTU2VsZWN0b3Iq
PihmYXN0TWFsbG9jKHNpemVvZihDU1NTZWxlY3RvcikgKiBzZWxlY3RvcnMuc2l6ZSgpKSk7CkBA
IC0yNTcsNyArMjU3LDcgQEAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBTdHlsZVJ1bGU6OnNw
bGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNlbGVjdG9yQ28KICAgICByZXR1cm4gcnVs
ZXM7CiB9CiAKLVN0eWxlUnVsZVBhZ2U6OlN0eWxlUnVsZVBhZ2UoUGFzc1JlZjxTdHlsZVByb3Bl
cnRpZXM+IHByb3BlcnRpZXMpCitTdHlsZVJ1bGVQYWdlOjpTdHlsZVJ1bGVQYWdlKFJlZjxTdHls
ZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKICAgICA6IFN0eWxlUnVsZUJhc2UoUGFnZSkKICAg
ICAsIG1fcHJvcGVydGllcyhXVEY6Om1vdmUocHJvcGVydGllcykpCiB7CkBAIC0yODEsNyArMjgx
LDcgQEAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgU3R5bGVSdWxlUGFnZTo6bXV0YWJsZVByb3Bl
cnRpZXMoKQogICAgIHJldHVybiBkb3duY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPihtX3By
b3BlcnRpZXMuZ2V0KCkpOwogfQogCi1TdHlsZVJ1bGVGb250RmFjZTo6U3R5bGVSdWxlRm9udEZh
Y2UoUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMpCitTdHlsZVJ1bGVGb250RmFj
ZTo6U3R5bGVSdWxlRm9udEZhY2UoUmVmPFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQog
ICAgIDogU3R5bGVSdWxlQmFzZShGb250RmFjZSwgMCkKICAgICAsIG1fcHJvcGVydGllcyhXVEY6
Om1vdmUocHJvcGVydGllcykpCiB7CkBAIC0zMTgsNyArMzE4LDcgQEAgU3R5bGVSdWxlR3JvdXA6
OlN0eWxlUnVsZUdyb3VwKGNvbnN0IFN0eWxlUnVsZUdyb3VwJiBvKQogICAgICAgICBtX2NoaWxk
UnVsZXMudW5jaGVja2VkQXBwZW5kKG8ubV9jaGlsZFJ1bGVzW2ldLT5jb3B5KCkpOwogfQogCi12
b2lkIFN0eWxlUnVsZUdyb3VwOjp3cmFwcGVySW5zZXJ0UnVsZSh1bnNpZ25lZCBpbmRleCwgUGFz
c1JlZjxTdHlsZVJ1bGVCYXNlPiBydWxlKQordm9pZCBTdHlsZVJ1bGVHcm91cDo6d3JhcHBlcklu
c2VydFJ1bGUodW5zaWduZWQgaW5kZXgsIFJlZjxTdHlsZVJ1bGVCYXNlPiYmIHJ1bGUpCiB7CiAg
ICAgbV9jaGlsZFJ1bGVzLmluc2VydChpbmRleCwgV1RGOjptb3ZlKHJ1bGUpKTsKIH0KQEAgLTM3
MSw3ICszNzEsNyBAQCBTdHlsZVJ1bGVSZWdpb246OlN0eWxlUnVsZVJlZ2lvbihjb25zdCBTdHls
ZVJ1bGVSZWdpb24mIG8pCiAKIAogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCi1T
dHlsZVJ1bGVWaWV3cG9ydDo6U3R5bGVSdWxlVmlld3BvcnQoUGFzc1JlZjxTdHlsZVByb3BlcnRp
ZXM+IHByb3BlcnRpZXMpCitTdHlsZVJ1bGVWaWV3cG9ydDo6U3R5bGVSdWxlVmlld3BvcnQoUmVm
PFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQogICAgIDogU3R5bGVSdWxlQmFzZShWaWV3
cG9ydCwgMCkKICAgICAsIG1fcHJvcGVydGllcyhXVEY6Om1vdmUocHJvcGVydGllcykpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggYWVhZTlkZi4uZTlhNjM2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGUuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBib29sIGlzSW1w
b3J0UnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBJbXBvcnQ7IH0KIAotICAgIFBhc3NS
ZWY8U3R5bGVSdWxlQmFzZT4gY29weSgpIGNvbnN0OworICAgIFJlZjxTdHlsZVJ1bGVCYXNlPiBj
b3B5KCkgY29uc3Q7CiAKICAgICBpbnQgc291cmNlTGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlTGluZTsgfQogCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKIGNsYXNzIFN0eWxlUnVs
ZSA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVJ1bGU+IGNyZWF0ZShpbnQgc291cmNl
TGluZSwgUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMpCisgICAgc3RhdGljIFJl
ZjxTdHlsZVJ1bGU+IGNyZWF0ZShpbnQgc291cmNlTGluZSwgUmVmPFN0eWxlUHJvcGVydGllcz4m
JiBwcm9wZXJ0aWVzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVS
dWxlKHNvdXJjZUxpbmUsIFdURjo6bW92ZShwcm9wZXJ0aWVzKSkpOwogICAgIH0KQEAgLTExOCwx
NyArMTE4LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdChD
U1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdCA9IFdURjo6bW92ZShz
ZWxlY3RvcnMpOyB9CiAgICAgdm9pZCBwYXJzZXJBZG9wdFNlbGVjdG9yQXJyYXkoQ1NTU2VsZWN0
b3IqIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yQXJyYXkoc2VsZWN0
b3JzKTsgfQogCi0gICAgUGFzc1JlZjxTdHlsZVJ1bGU+IGNvcHkoKSBjb25zdCB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlUnVsZSgqdGhpcykpOyB9CisgICAgUmVmPFN0eWxlUnVsZT4gY29w
eSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlKCp0aGlzKSk7IH0KIAog
ICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gc3BsaXRJbnRvTXVsdGlwbGVSdWxlc1dpdGhN
YXhpbXVtU2VsZWN0b3JDb21wb25lbnRDb3VudCh1bnNpZ25lZCkgY29uc3Q7CiAKICAgICBzdGF0
aWMgdW5zaWduZWQgYXZlcmFnZVNpemVJbkJ5dGVzKCk7CiAKIHByaXZhdGU6Ci0gICAgU3R5bGVS
dWxlKGludCBzb3VyY2VMaW5lLCBQYXNzUmVmPFN0eWxlUHJvcGVydGllcz4pOworICAgIFN0eWxl
UnVsZShpbnQgc291cmNlTGluZSwgUmVmPFN0eWxlUHJvcGVydGllcz4mJik7CiAgICAgU3R5bGVS
dWxlKGNvbnN0IFN0eWxlUnVsZSYpOwogCi0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVSdWxlPiBj
cmVhdGUoaW50IHNvdXJjZUxpbmUsIGNvbnN0IFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+Jiwg
UGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+KTsKKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZT4gY3Jl
YXRlKGludCBzb3VyY2VMaW5lLCBjb25zdCBWZWN0b3I8Y29uc3QgQ1NTU2VsZWN0b3IqPiYsIFJl
ZjxTdHlsZVByb3BlcnRpZXM+JiYpOwogCiAgICAgUmVmPFN0eWxlUHJvcGVydGllcz4gbV9wcm9w
ZXJ0aWVzOwogICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9yTGlzdDsKQEAgLTEzNiwxOCAr
MTM2LDE4IEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0eWxlUnVsZUZvbnRGYWNlIDogcHVibGljIFN0
eWxlUnVsZUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlUnVsZUZvbnRG
YWNlPiBjcmVhdGUoUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+IHByb3BlcnRpZXMpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlRm9udEZhY2UoV1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7
IH0KKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZUZvbnRGYWNlPiBjcmVhdGUoUmVmPFN0eWxlUHJv
cGVydGllcz4mJiBwcm9wZXJ0aWVzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUZv
bnRGYWNlKFdURjo6bW92ZShwcm9wZXJ0aWVzKSkpOyB9CiAgICAgCiAgICAgflN0eWxlUnVsZUZv
bnRGYWNlKCk7CiAKICAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMmIHByb3BlcnRpZXMoKSBjb25z
dCB7IHJldHVybiBtX3Byb3BlcnRpZXM7IH0KICAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBt
dXRhYmxlUHJvcGVydGllcygpOwogCi0gICAgUGFzc1JlZjxTdHlsZVJ1bGVGb250RmFjZT4gY29w
eSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlRm9udEZhY2UoKnRoaXMp
KTsgfQorICAgIFJlZjxTdHlsZVJ1bGVGb250RmFjZT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVSdWxlRm9udEZhY2UoKnRoaXMpKTsgfQogCiAKIHByaXZhdGU6Ci0g
ICAgU3R5bGVSdWxlRm9udEZhY2UoUGFzc1JlZjxTdHlsZVByb3BlcnRpZXM+KTsKKyAgICBleHBs
aWNpdCBTdHlsZVJ1bGVGb250RmFjZShSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmKTsKICAgICBTdHls
ZVJ1bGVGb250RmFjZShjb25zdCBTdHlsZVJ1bGVGb250RmFjZSYpOwogCiAgICAgUmVmPFN0eWxl
UHJvcGVydGllcz4gbV9wcm9wZXJ0aWVzOwpAQCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiAK
IGNsYXNzIFN0eWxlUnVsZVBhZ2UgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWY8U3R5bGVSdWxlUGFnZT4gY3JlYXRlKFBhc3NSZWY8U3R5bGVQcm9w
ZXJ0aWVzPiBwcm9wZXJ0aWVzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVBhZ2Uo
V1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZVBhZ2U+
IGNyZWF0ZShSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVSdWxlUGFnZShXVEY6Om1vdmUocHJvcGVydGllcykpKTsgfQogCiAgICAg
flN0eWxlUnVsZVBhZ2UoKTsKIApAQCAtMTY2LDEwICsxNjYsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgcGFyc2VyQWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1Bh
cnNlclNlbGVjdG9yPj4mIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9y
VmVjdG9yKHNlbGVjdG9ycyk7IH0KICAgICB2b2lkIHdyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdChD
U1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdCA9IFdURjo6bW92ZShz
ZWxlY3RvcnMpOyB9CiAKLSAgICBQYXNzUmVmPFN0eWxlUnVsZVBhZ2U+IGNvcHkoKSBjb25zdCB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVBhZ2UoKnRoaXMpKTsgfQorICAgIFJlZjxT
dHlsZVJ1bGVQYWdlPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1
bGVQYWdlKCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKLSAgICBTdHlsZVJ1bGVQYWdlKFBhc3NSZWY8
U3R5bGVQcm9wZXJ0aWVzPik7CisgICAgZXhwbGljaXQgU3R5bGVSdWxlUGFnZShSZWY8U3R5bGVQ
cm9wZXJ0aWVzPiYmKTsKICAgICBTdHlsZVJ1bGVQYWdlKGNvbnN0IFN0eWxlUnVsZVBhZ2UmKTsK
ICAgICAKICAgICBSZWY8U3R5bGVQcm9wZXJ0aWVzPiBtX3Byb3BlcnRpZXM7CkBAIC0xODAsNyAr
MTgwLDcgQEAgY2xhc3MgU3R5bGVSdWxlR3JvdXAgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBw
dWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGNoaWxkUnVs
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkUnVsZXM7IH0KICAgICAKLSAgICB2b2lkIHdyYXBw
ZXJJbnNlcnRSdWxlKHVuc2lnbmVkLCBQYXNzUmVmPFN0eWxlUnVsZUJhc2U+KTsKKyAgICB2b2lk
IHdyYXBwZXJJbnNlcnRSdWxlKHVuc2lnbmVkLCBSZWY8U3R5bGVSdWxlQmFzZT4mJik7CiAgICAg
dm9pZCB3cmFwcGVyUmVtb3ZlUnVsZSh1bnNpZ25lZCk7CiAgICAgCiBwcm90ZWN0ZWQ6CkBAIC0x
OTMsMTQgKzE5MywxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBTdHlsZVJ1bGVNZWRpYSA6IHB1Ymxp
YyBTdHlsZVJ1bGVHcm91cCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVSdWxl
TWVkaWE+IGNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhLCBWZWN0b3I8UmVm
UHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVs
ZU1lZGlhPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVNZWRpYShtZWRpYSwgYWRvcHRSdWxlcykpOwogICAgIH0K
IAogICAgIE1lZGlhUXVlcnlTZXQqIG1lZGlhUXVlcmllcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVk
aWFRdWVyaWVzLmdldCgpOyB9CiAKLSAgICBQYXNzUmVmPFN0eWxlUnVsZU1lZGlhPiBjb3B5KCkg
Y29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVNZWRpYSgqdGhpcykpOyB9Cisg
ICAgUmVmPFN0eWxlUnVsZU1lZGlhPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVJ1bGVNZWRpYSgqdGhpcykpOyB9CiAKIHByaXZhdGU6CiAgICAgU3R5bGVSdWxlTWVk
aWEoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
Pj4mIGFkb3B0UnVsZXMpOwpAQCAtMjExLDE0ICsyMTEsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
U3R5bGVSdWxlU3VwcG9ydHMgOiBwdWJsaWMgU3R5bGVSdWxlR3JvdXAgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmPFN0eWxlUnVsZVN1cHBvcnRzPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBj
b25kaXRpb25UZXh0LCBib29sIGNvbmRpdGlvbklzU3VwcG9ydGVkLCBWZWN0b3I8UmVmUHRyPFN0
eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZVN1cHBv
cnRzPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBjb25kaXRpb25UZXh0LCBib29sIGNvbmRpdGlvbklz
U3VwcG9ydGVkLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVN1cHBvcnRzKGNvbmRp
dGlvblRleHQsIGNvbmRpdGlvbklzU3VwcG9ydGVkLCBhZG9wdFJ1bGVzKSk7CiAgICAgfQogCiAg
ICAgU3RyaW5nIGNvbmRpdGlvblRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbmRpdGlvblRleHQ7
IH0KICAgICBib29sIGNvbmRpdGlvbklzU3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb25k
aXRpb25Jc1N1cHBvcnRlZDsgfQotICAgIFBhc3NSZWY8U3R5bGVSdWxlU3VwcG9ydHM+IGNvcHko
KSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVN1cHBvcnRzKCp0aGlzKSk7
IH0KKyAgICBSZWY8U3R5bGVSdWxlU3VwcG9ydHM+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFN0eWxlUnVsZVN1cHBvcnRzKCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKICAgICBT
dHlsZVJ1bGVTdXBwb3J0cyhjb25zdCBTdHJpbmcmIGNvbmRpdGlvblRleHQsIGJvb2wgY29uZGl0
aW9uSXNTdXBwb3J0ZWQsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVz
KTsKQEAgLTIzMCwxNCArMjMwLDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0eWxlUnVsZVJlZ2lv
biA6IHB1YmxpYyBTdHlsZVJ1bGVHcm91cCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8
U3R5bGVSdWxlUmVnaW9uPiBjcmVhdGUoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9w
dFJ1bGVzKQorICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlUmVnaW9uPiBjcmVhdGUoVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVSdWxlUmVnaW9uKHNlbGVjdG9ycywgYWRvcHRSdWxlcykpOwogICAg
IH0KIAogICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWxlY3Rvckxpc3Q7IH0KIAotICAgIFBhc3NSZWY8U3R5bGVSdWxlUmVnaW9uPiBj
b3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVSZWdpb24oKnRoaXMp
KTsgfQorICAgIFJlZjxTdHlsZVJ1bGVSZWdpb24+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFN0eWxlUnVsZVJlZ2lvbigqdGhpcykpOyB9CiAKIHByaXZhdGU6CiAgICAgU3R5
bGVSdWxlUmVnaW9uKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pios
IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKTsKQEAgLTI0OSwxNyAr
MjQ5LDE3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKIGNs
YXNzIFN0eWxlUnVsZVZpZXdwb3J0IDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlUnVsZVZpZXdwb3J0PiBjcmVhdGUoUGFzc1JlZjxTdHls
ZVByb3BlcnRpZXM+IHByb3BlcnRpZXMpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxl
Vmlld3BvcnQoV1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFN0eWxl
UnVsZVZpZXdwb3J0PiBjcmVhdGUoUmVmPFN0eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVZpZXdwb3J0KFdURjo6bW92ZShwcm9wZXJ0
aWVzKSkpOyB9CiAKICAgICB+U3R5bGVSdWxlVmlld3BvcnQoKTsKIAogICAgIGNvbnN0IFN0eWxl
UHJvcGVydGllcyYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5nZXQo
KTsgfQogICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAK
LSAgICBQYXNzUmVmPFN0eWxlUnVsZVZpZXdwb3J0PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZVJ1bGVWaWV3cG9ydCgqdGhpcykpOyB9CisgICAgUmVmPFN0eWxlUnVs
ZVZpZXdwb3J0PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVW
aWV3cG9ydCgqdGhpcykpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3R5bGVSdWxlVmlld3BvcnQoUGFz
c1JlZjxTdHlsZVByb3BlcnRpZXM+KTsKKyAgICBleHBsaWNpdCBTdHlsZVJ1bGVWaWV3cG9ydChS
ZWY8U3R5bGVQcm9wZXJ0aWVzPiYmKTsKICAgICBTdHlsZVJ1bGVWaWV3cG9ydChjb25zdCBTdHls
ZVJ1bGVWaWV3cG9ydCYpOwogCiAgICAgUmVmPFN0eWxlUHJvcGVydGllcz4gbV9wcm9wZXJ0aWVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcAppbmRleCBhZTE1MTQwLi5kMTQw
MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcApAQCAtMzQsNyArMzQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWY8U3R5bGVSdWxlSW1wb3J0PiBT
dHlsZVJ1bGVJbXBvcnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQdHI8TWVk
aWFRdWVyeVNldD4gbWVkaWEpCitSZWY8U3R5bGVSdWxlSW1wb3J0PiBTdHlsZVJ1bGVJbXBvcnQ6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVk
aWEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlSW1wb3J0KGhyZWYsIG1l
ZGlhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKaW5kZXggMTEzMWY5NC4u
YmEwYjJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaApAQCAtMzYsNyArMzYs
NyBAQCBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CiBjbGFzcyBTdHlsZVJ1bGVJbXBvcnQgOiBw
dWJsaWMgU3R5bGVSdWxlQmFzZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVSdWxlSW1wb3J0PiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBocmVmLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+KTsKKyAgICBzdGF0aWMgUmVmPFN0
eWxlUnVsZUltcG9ydD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaHJlZiwgUGFzc1JlZlB0cjxNZWRp
YVF1ZXJ5U2V0Pik7CiAKICAgICB+U3R5bGVSdWxlSW1wb3J0KCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKaW5kZXggNzY5OGEwMy4uNjJhOTNkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaApAQCAtNDEsMTUgKzQxLDE1IEBAIGNs
YXNzIFN0eWxlUnVsZUltcG9ydDsKIAogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzIDogcHVibGlj
IFJlZkNvdW50ZWQ8U3R5bGVTaGVldENvbnRlbnRzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBjcmVhdGUoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCA9IENTU1BhcnNlckNvbnRleHQoQ1NTU3RyaWN0TW9kZSkpCisgICAgc3RhdGljIFJl
ZjxTdHlsZVNoZWV0Q29udGVudHM+IGNyZWF0ZShjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0ID0gQ1NTUGFyc2VyQ29udGV4dChDU1NTdHJpY3RNb2RlKSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2hlZXRDb250ZW50cygwLCBTdHJpbmcoKSwgY29udGV4
dCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0KQorICAgIHN0YXRpYyBSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2hlZXRDb250ZW50cygwLCBvcmln
aW5hbFVSTCwgY29udGV4dCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVNoZWV0
Q29udGVudHM+IGNyZWF0ZShTdHlsZVJ1bGVJbXBvcnQqIG93bmVyUnVsZSwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hbFVSTCwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKKyAgICBzdGF0
aWMgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gY3JlYXRlKFN0eWxlUnVsZUltcG9ydCogb3duZXJS
dWxlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGVldENv
bnRlbnRzKG93bmVyUnVsZSwgb3JpZ2luYWxVUkwsIGNvbnRleHQpKTsKICAgICB9CkBAIC0xMjMs
NyArMTIzLDcgQEAgcHVibGljOgogICAgIGJvb2wgd3JhcHBlckluc2VydFJ1bGUoUGFzc1JlZlB0
cjxTdHlsZVJ1bGVCYXNlPiwgdW5zaWduZWQgaW5kZXgpOwogICAgIHZvaWQgd3JhcHBlckRlbGV0
ZVJ1bGUodW5zaWduZWQgaW5kZXgpOwogCi0gICAgUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+
IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2hlZXRDb250ZW50cygq
dGhpcykpOyB9CisgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gY29weSgpIGNvbnN0IHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTaGVldENvbnRlbnRzKCp0aGlzKSk7IH0KIAogICAgIHZv
aWQgcmVnaXN0ZXJDbGllbnQoQ1NTU3R5bGVTaGVldCopOwogICAgIHZvaWQgdW5yZWdpc3RlckNs
aWVudChDU1NTdHlsZVNoZWV0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTRmlsdGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJW
YWx1ZS5oCmluZGV4IGRhZjNhZmIuLjk4ZmYzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRHJv
cFNoYWRvd0ZpbHRlck9wZXJhdGlvbgogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxXZWJL
aXRDU1NGaWx0ZXJWYWx1ZT4gY3JlYXRlKEZpbHRlck9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICBz
dGF0aWMgUmVmPFdlYktpdENTU0ZpbHRlclZhbHVlPiBjcmVhdGUoRmlsdGVyT3BlcmF0aW9uVHlw
ZSB0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0Q1NTRmls
dGVyVmFsdWUodHlwZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTUmVz
b3VyY2VWYWx1ZS5oCmluZGV4IDQ1NzdjNDkuLjIwOTgzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZXNvdXJjZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1Jlc291cmNlVmFsdWUuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFdlYktpdENTU1Jlc291cmNlVmFsdWUgOiBwdWJsaWMgQ1NTVmFs
dWUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFdlYktpdENTU1Jlc291cmNlVmFsdWU+
IGNyZWF0ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiByZXNvdXJjZVZhbHVlKQorICAgIHN0YXRpYyBS
ZWY8V2ViS2l0Q1NTUmVzb3VyY2VWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJl
c291cmNlVmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRD
U1NSZXNvdXJjZVZhbHVlKHJlc291cmNlVmFsdWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCmluZGV4IDlkZWM5NTYuLmMxYzkxY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24KICAg
ICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWY8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IGNyZWF0
ZShUcmFuc2Zvcm1PcGVyYXRpb25UeXBlIHR5cGUpCisgICAgc3RhdGljIFJlZjxXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZT4gY3JlYXRlKFRyYW5zZm9ybU9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKHR5
cGUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaAppbmRleCA3ZTkyM2VlLi5k
NTIxY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgKQEAgLTM1LDcgKzM1LDcgQEAg
Y2xhc3MgQ29udGFpbmVyTm9kZTsKIAogY2xhc3MgRW1wdHlOb2RlTGlzdCBmaW5hbCA6IHB1Ymxp
YyBOb2RlTGlzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8RW1wdHlOb2RlTGlzdD4g
Y3JlYXRlKE5vZGUmIG93bmVyKQorICAgIHN0YXRpYyBSZWY8RW1wdHlOb2RlTGlzdD4gY3JlYXRl
KE5vZGUmIG93bmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlO
b2RlTGlzdChvd25lcikpOwogICAgIH0KQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAogY2xh
c3MgQ2hpbGROb2RlTGlzdCBmaW5hbCA6IHB1YmxpYyBOb2RlTGlzdCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWY8Q2hpbGROb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUmIHBhcmVu
dCkKKyAgICBzdGF0aWMgUmVmPENoaWxkTm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiBw
YXJlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDaGlsZE5vZGVMaXN0
KHBhcmVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc05v
ZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmNwcAppbmRleCBk
MjQzMzZhLi4wZDAxODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NOb2Rl
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxDbGFzc05vZGVM
aXN0PiBDbGFzc05vZGVMaXN0OjpjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0
IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lcykKK1JlZjxDbGFzc05vZGVMaXN0PiBDbGFzc05vZGVM
aXN0OjpjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
Y2xhc3NOYW1lcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGFzc05vZGVMaXN0KHJv
b3ROb2RlLCBjbGFzc05hbWVzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2xhc3NOb2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuaAppbmRl
eCA5MzMyNjIzLi5iZTg4OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xhc3NO
b2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmgKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDbGFzc05vZGVMaXN0IGZp
bmFsIDogcHVibGljIENhY2hlZExpdmVOb2RlTGlzdDxDbGFzc05vZGVMaXN0PiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWY8Q2xhc3NOb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUm
LCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZXMpOworICAgIHN0YXRpYyBSZWY8Q2xhc3NO
b2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUmLCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNz
TmFtZXMpOwogCiAgICAgdmlydHVhbCB+Q2xhc3NOb2RlTGlzdCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCAyOWUwY2Q1Li42MzM3MzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTE5MDMsNyArMTkwMyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cyhEb2N1bWVudDo6UnVuUG9zdExheW91dFRhc2tzCiAgICAgbV9pZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMgPSBvbGRJZ25vcmU7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5
bGU+IERvY3VtZW50OjpzdHlsZUZvckVsZW1lbnRJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyhF
bGVtZW50KiBlbGVtZW50KQorUmVmPFJlbmRlclN0eWxlPiBEb2N1bWVudDo6c3R5bGVGb3JFbGVt
ZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBB
U1NFUlRfQVJHKGVsZW1lbnQsICZlbGVtZW50LT5kb2N1bWVudCgpID09IHRoaXMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IDk0YTQzODYuLjVlYjA3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC02MDQsNyArNjA0LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoUnVuUG9zdExheW91dFRh
c2tzID0gUnVuUG9zdExheW91dFRhc2tzOjpBc3luY2hyb25vdXNseSk7CiAKLSAgICBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnRJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyhF
bGVtZW50Kik7CisgICAgUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnRJZ25vcmluZ1Bl
bmRpbmdTdHlsZXNoZWV0cyhFbGVtZW50Kik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgcGFn
ZSBib3ggKG1hcmdpbiBib3hlcyBhbmQgcGFnZSBib3JkZXJzKSBpcyB2aXNpYmxlLgogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5jcHAKaW5kZXggMmYw
ZWUwMy4uYjVmNzIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hh
cmVkT2JqZWN0UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVk
T2JqZWN0UG9vbC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgaW5saW5lIGJvb2wgaGFzU2FtZUF0dHJp
YnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMsIFNoYXJlYWJsZUVsZW0K
ICAgICByZXR1cm4gIW1lbWNtcChhdHRyaWJ1dGVzLmRhdGEoKSwgZWxlbWVudERhdGEubV9hdHRy
aWJ1dGVBcnJheSwgYXR0cmlidXRlcy5zaXplKCkgKiBzaXplb2YoQXR0cmlidXRlKSk7CiB9CiAK
LVBhc3NSZWY8U2hhcmVhYmxlRWxlbWVudERhdGE+IERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbDo6
Y2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0
cmlidXRlPiYgYXR0cmlidXRlcykKK1JlZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gRG9jdW1lbnRT
aGFyZWRPYmplY3RQb29sOjpjYWNoZWRTaGFyZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVz
KGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghYXR0
cmlidXRlcy5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRTaGFyZWRPYmplY3RQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTaGFy
ZWRPYmplY3RQb29sLmgKaW5kZXggYzZmN2IyZi4uYTA3NDY3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U2hhcmVkT2JqZWN0UG9vbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaApAQCAtMzksNyArMzksNyBAQCBjbGFz
cyBTaGFyZWFibGVFbGVtZW50RGF0YTsKIAogY2xhc3MgRG9jdW1lbnRTaGFyZWRPYmplY3RQb29s
IHsKIHB1YmxpYzoKLSAgICBQYXNzUmVmPFNoYXJlYWJsZUVsZW1lbnREYXRhPiBjYWNoZWRTaGFy
ZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7
CisgICAgUmVmPFNoYXJlYWJsZUVsZW1lbnREYXRhPiBjYWNoZWRTaGFyZWFibGVFbGVtZW50RGF0
YVdpdGhBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CiAKIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVhYmxlRWxlbWVudERhdGE+
LCBBbHJlYWR5SGFzaGVkPiBTaGFyZWFibGVFbGVtZW50RGF0YUNhY2hlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCmluZGV4IDA2
NjI0ODQuLmUyOWJiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAgLTE3NSwxNCArMTc1LDE0IEBAIHZvaWQgRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6aW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hl
KCkKICAgICBtX2RvY3VtZW50LnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUp
OwogfQogCi12b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZEF1dGhvclNoZWV0
KFBhc3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBhdXRob3JTaGVldCkKK3ZvaWQgRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkQXV0aG9yU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiBhdXRob3JTaGVldCkKIHsKICAgICBBU1NFUlQoIWF1dGhvclNoZWV0LmdldCgpLmlzVXNl
clN0eWxlU2hlZXQoKSk7CiAgICAgbV9hdXRob3JTdHlsZVNoZWV0cy5hcHBlbmQoQ1NTU3R5bGVT
aGVldDo6Y3JlYXRlKFdURjo6bW92ZShhdXRob3JTaGVldCksICZtX2RvY3VtZW50KSk7CiAgICAg
bV9kb2N1bWVudC5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsK
IH0KIAotdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphZGRVc2VyU2hlZXQoUGFz
c1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IHVzZXJTaGVldCkKK3ZvaWQgRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6YWRkVXNlclNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgdXNl
clNoZWV0KQogewogICAgIEFTU0VSVCh1c2VyU2hlZXQuZ2V0KCkuaXNVc2VyU3R5bGVTaGVldCgp
KTsKICAgICBtX3VzZXJTdHlsZVNoZWV0cy5hcHBlbmQoQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFdU
Rjo6bW92ZSh1c2VyU2hlZXQpLCAmbV9kb2N1bWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgKaW5kZXggM2QyMzI2ZC4uZWVkZTdi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxl
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbi5oCkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVJbmpl
Y3RlZFN0eWxlU2hlZXRDYWNoZSgpOwogICAgIHZvaWQgdXBkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0
Q2FjaGUoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXV0aG9yU2hlZXQo
UGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IGF1dGhvclNoZWV0KTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFkZFVzZXJTaGVldChQYXNzUmVmPFN0eWxlU2hlZXRDb250ZW50cz4gdXNlclNo
ZWV0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEF1dGhvclNoZWV0KFJlZjxTdHlsZVNo
ZWV0Q29udGVudHM+JiYgYXV0aG9yU2hlZXQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRk
VXNlclNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgdXNlclNoZWV0KTsKIAogICAgIGVu
dW0gVXBkYXRlRmxhZyB7IE5vVXBkYXRlID0gMCwgT3B0aW1pemVkVXBkYXRlLCBGdWxsVXBkYXRl
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA4YmFkMjIyLi45ODc5NDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC0xMzI2LDcgKzEzMjYsNyBAQCBib29sIEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIHJldHVybiBzdHlsZS5k
aXNwbGF5KCkgIT0gTk9ORTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVG
b3IoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggN2U4
MTIzMS4uYWQ0NjA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zMTEsNyArMzExLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBsYXp5UmVhdHRhY2goKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNoYWRvd1Jv
b3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuY3BwCmluZGV4
IDAxNjI1NjUuLmZhZDAzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmNwcApAQCAtNjMs
MTMgKzYzLDEzIEBAIHN0YXRpYyBzaXplX3Qgc2l6ZUZvclNoYXJlYWJsZUVsZW1lbnREYXRhV2l0
aEF0dHJpYnV0ZUNvdW50KHVuc2lnbmVkIGNvdW50KQogICAgIHJldHVybiBzaXplb2YoU2hhcmVh
YmxlRWxlbWVudERhdGEpICsgc2l6ZW9mKEF0dHJpYnV0ZSkgKiBjb3VudDsKIH0KIAotUGFzc1Jl
ZjxTaGFyZWFibGVFbGVtZW50RGF0YT4gU2hhcmVhYmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhB
dHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQorUmVmPFNoYXJl
YWJsZUVsZW1lbnREYXRhPiBTaGFyZWFibGVFbGVtZW50RGF0YTo6Y3JlYXRlV2l0aEF0dHJpYnV0
ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCiB7CiAgICAgdm9pZCogc2xv
dCA9IFdURjo6ZmFzdE1hbGxvYyhzaXplRm9yU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmli
dXRlQ291bnQoYXR0cmlidXRlcy5zaXplKCkpKTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAo
Tm90TnVsbCwgc2xvdCkgU2hhcmVhYmxlRWxlbWVudERhdGEoYXR0cmlidXRlcykpOwogfQogCi1Q
YXNzUmVmPFVuaXF1ZUVsZW1lbnREYXRhPiBVbmlxdWVFbGVtZW50RGF0YTo6Y3JlYXRlKCkKK1Jl
ZjxVbmlxdWVFbGVtZW50RGF0YT4gVW5pcXVlRWxlbWVudERhdGE6OmNyZWF0ZSgpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVW5pcXVlRWxlbWVudERhdGEpOwogfQpAQCAtMTQ4LDE0ICsx
NDgsMTQgQEAgVW5pcXVlRWxlbWVudERhdGE6OlVuaXF1ZUVsZW1lbnREYXRhKGNvbnN0IFNoYXJl
YWJsZUVsZW1lbnREYXRhJiBvdGhlcikKICAgICAgICAgbV9hdHRyaWJ1dGVWZWN0b3IudW5jaGVj
a2VkQXBwZW5kKG90aGVyLm1fYXR0cmlidXRlQXJyYXlbaV0pOwogfQogCi1QYXNzUmVmPFVuaXF1
ZUVsZW1lbnREYXRhPiBFbGVtZW50RGF0YTo6bWFrZVVuaXF1ZUNvcHkoKSBjb25zdAorUmVmPFVu
aXF1ZUVsZW1lbnREYXRhPiBFbGVtZW50RGF0YTo6bWFrZVVuaXF1ZUNvcHkoKSBjb25zdAogewog
ICAgIGlmIChpc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVbmlxdWVF
bGVtZW50RGF0YShzdGF0aWNfY2FzdDxjb25zdCBVbmlxdWVFbGVtZW50RGF0YSY+KCp0aGlzKSkp
OwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVuaXF1ZUVsZW1lbnREYXRhKHN0YXRpY19jYXN0
PGNvbnN0IFNoYXJlYWJsZUVsZW1lbnREYXRhJj4oKnRoaXMpKSk7CiB9CiAKLVBhc3NSZWY8U2hh
cmVhYmxlRWxlbWVudERhdGE+IFVuaXF1ZUVsZW1lbnREYXRhOjptYWtlU2hhcmVhYmxlQ29weSgp
IGNvbnN0CitSZWY8U2hhcmVhYmxlRWxlbWVudERhdGE+IFVuaXF1ZUVsZW1lbnREYXRhOjptYWtl
U2hhcmVhYmxlQ29weSgpIGNvbnN0CiB7CiAgICAgdm9pZCogc2xvdCA9IFdURjo6ZmFzdE1hbGxv
YyhzaXplRm9yU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlQ291bnQobV9hdHRyaWJ1
dGVWZWN0b3Iuc2l6ZSgpKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHNs
b3QpIFNoYXJlYWJsZUVsZW1lbnREYXRhKCp0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5o
CmluZGV4IDQ0MDBiODMuLjA3MTAwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCkBAIC0x
NzksNyArMTc5LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBBdHRyaWJ1dGUqIGZpbmRBdHRyaWJ1
dGVCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBib29sIHNob3VsZElnbm9yZUF0dHJp
YnV0ZUNhc2UpIGNvbnN0OwogICAgIHVuc2lnbmVkIGZpbmRBdHRyaWJ1dGVJbmRleEJ5TmFtZVNs
b3dDYXNlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlKSBjb25zdDsKIAotICAgIFBhc3NSZWY8VW5pcXVlRWxlbWVudERhdGE+IG1ha2VVbmlx
dWVDb3B5KCkgY29uc3Q7CisgICAgUmVmPFVuaXF1ZUVsZW1lbnREYXRhPiBtYWtlVW5pcXVlQ29w
eSgpIGNvbnN0OwogfTsKIAogI2lmIENPTVBJTEVSKE1TVkMpCkBAIC0xODksNyArMTg5LDcgQEAg
cHJpdmF0ZToKIAogY2xhc3MgU2hhcmVhYmxlRWxlbWVudERhdGEgOiBwdWJsaWMgRWxlbWVudERh
dGEgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFNoYXJlYWJsZUVsZW1lbnREYXRhPiBj
cmVhdGVXaXRoQXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYpOworICAgIHN0YXRp
YyBSZWY8U2hhcmVhYmxlRWxlbWVudERhdGE+IGNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGNvbnN0IFZl
Y3RvcjxBdHRyaWJ1dGU+Jik7CiAKICAgICBleHBsaWNpdCBTaGFyZWFibGVFbGVtZW50RGF0YShj
b25zdCBWZWN0b3I8QXR0cmlidXRlPiYpOwogICAgIGV4cGxpY2l0IFNoYXJlYWJsZUVsZW1lbnRE
YXRhKGNvbnN0IFVuaXF1ZUVsZW1lbnREYXRhJik7CkBAIC0yMDYsOCArMjA2LDggQEAgcHVibGlj
OgogCiBjbGFzcyBVbmlxdWVFbGVtZW50RGF0YSA6IHB1YmxpYyBFbGVtZW50RGF0YSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8VW5pcXVlRWxlbWVudERhdGE+IGNyZWF0ZSgpOwotICAg
IFBhc3NSZWY8U2hhcmVhYmxlRWxlbWVudERhdGE+IG1ha2VTaGFyZWFibGVDb3B5KCkgY29uc3Q7
CisgICAgc3RhdGljIFJlZjxVbmlxdWVFbGVtZW50RGF0YT4gY3JlYXRlKCk7CisgICAgUmVmPFNo
YXJlYWJsZUVsZW1lbnREYXRhPiBtYWtlU2hhcmVhYmxlQ29weSgpIGNvbnN0OwogCiAgICAgLy8g
VGhlc2UgZnVuY3Rpb25zIGRvIG5vIGVycm9yL2R1cGxpY2F0ZSBjaGVja2luZy4KICAgICB2b2lk
IGFkZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggOWQ5ODczYS4uZjc3ZDFkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtOTEsNyArOTEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVNYXAoc3RkOjp1bmlxdWVfcHRyPE5hbWVkTm9kZU1h
cD4gYXR0cmlidXRlTWFwKSB7IG1fYXR0cmlidXRlTWFwID0gV1RGOjptb3ZlKGF0dHJpYnV0ZU1h
cCk7IH0KIAogICAgIFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKCkgY29uc3QgeyByZXR1cm4g
bV9jb21wdXRlZFN0eWxlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDb21wdXRlZFN0eWxlKFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IGNvbXB1dGVkU3R5bGUpIHsgbV9jb21wdXRlZFN0eWxlID0gV1RGOjpt
b3ZlKGNvbXB1dGVkU3R5bGUpOyB9CisgICAgdm9pZCBzZXRDb21wdXRlZFN0eWxlKFJlZjxSZW5k
ZXJTdHlsZT4mJiBjb21wdXRlZFN0eWxlKSB7IG1fY29tcHV0ZWRTdHlsZSA9IFdURjo6bW92ZShj
b21wdXRlZFN0eWxlKTsgfQogCiAgICAgQ2xhc3NMaXN0KiBjbGFzc0xpc3QoKSBjb25zdCB7IHJl
dHVybiBtX2NsYXNzTGlzdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q2xhc3NMaXN0KHN0ZDo6dW5p
cXVlX3B0cjxDbGFzc0xpc3Q+IGNsYXNzTGlzdCkgeyBtX2NsYXNzTGlzdCA9IFdURjo6bW92ZShj
bGFzc0xpc3QpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgKaW5kZXggMjBkZjIyYS4uOWY5
Y2U0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBOb2RlTGlzdCB3aGljaCBsaXN0cyBhbGwgTm9kZXMgaW4gYSBF
bGVtZW50IHdpdGggYSBnaXZlbiAibmFtZSIgYXR0cmlidXRlCiBjbGFzcyBOYW1lTm9kZUxpc3Qg
ZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5hbWVOb2RlTGlzdD4gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmPE5hbWVOb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgc3RhdGljIFJlZjxOYW1l
Tm9kZUxpc3Q+IGNyZWF0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmFtZU5vZGVM
aXN0KHJvb3ROb2RlLCBuYW1lKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxv
d0NvbGxlY3Rpb24uY3BwCmluZGV4IDY4Njc4NDAuLjZiZDc2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgV2ViS2l0TmFt
ZWRGbG93KiBOYW1lZEZsb3dDb2xsZWN0aW9uOjpmbG93QnlOYW1lKGNvbnN0IFN0cmluZyYgZmxv
d05hbWUpCiAgICAgcmV0dXJuICppdDsKIH0KIAotUGFzc1JlZjxXZWJLaXROYW1lZEZsb3c+IE5h
bWVkRmxvd0NvbGxlY3Rpb246OmVuc3VyZUZsb3dXaXRoTmFtZShjb25zdCBTdHJpbmcmIGZsb3dO
YW1lKQorUmVmPFdlYktpdE5hbWVkRmxvdz4gTmFtZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxv
d1dpdGhOYW1lKGNvbnN0IFN0cmluZyYgZmxvd05hbWUpCiB7CiAgICAgTmFtZWRGbG93U2V0Ojpp
dGVyYXRvciBpdCA9IG1fbmFtZWRGbG93cy5maW5kPFN0cmluZywgTmFtZWRGbG93SGFzaFRyYW5z
bGF0b3I+KGZsb3dOYW1lKTsKICAgICBpZiAoaXQgIT0gbV9uYW1lZEZsb3dzLmVuZCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAppbmRleCBlMTI2M2RkLi44ZWYy
ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAgcHVibGljOgogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+PiBu
YW1lZEZsb3dzKCk7CiAgICAgV2ViS2l0TmFtZWRGbG93KiBmbG93QnlOYW1lKGNvbnN0IFN0cmlu
ZyYpOwotICAgIFBhc3NSZWY8V2ViS2l0TmFtZWRGbG93PiBlbnN1cmVGbG93V2l0aE5hbWUoY29u
c3QgU3RyaW5nJik7CisgICAgUmVmPFdlYktpdE5hbWVkRmxvdz4gZW5zdXJlRmxvd1dpdGhOYW1l
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBkaXNjYXJkTmFtZWRGbG93KFdlYktpdE5hbWVk
RmxvdyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggOTc2YTQ2NC4uYjE2NTBj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBtX2NoaWxkTm9kZUxpc3QtPmludmFsaWRhdGVDYWNoZSgpOwogICAgIH0K
IAotICAgIFBhc3NSZWY8Q2hpbGROb2RlTGlzdD4gZW5zdXJlQ2hpbGROb2RlTGlzdChDb250YWlu
ZXJOb2RlJiBub2RlKQorICAgIFJlZjxDaGlsZE5vZGVMaXN0PiBlbnN1cmVDaGlsZE5vZGVMaXN0
KENvbnRhaW5lck5vZGUmIG5vZGUpCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fZW1wdHlDaGls
ZE5vZGVMaXN0KTsKICAgICAgICAgaWYgKG1fY2hpbGROb2RlTGlzdCkKQEAgLTg3LDcgKzg3LDcg
QEAgcHVibGljOgogICAgICAgICBtX2NoaWxkTm9kZUxpc3QgPSBudWxscHRyOwogICAgIH0KIAot
ICAgIFBhc3NSZWY8RW1wdHlOb2RlTGlzdD4gZW5zdXJlRW1wdHlDaGlsZE5vZGVMaXN0KE5vZGUm
IG5vZGUpCisgICAgUmVmPEVtcHR5Tm9kZUxpc3Q+IGVuc3VyZUVtcHR5Q2hpbGROb2RlTGlzdChO
b2RlJiBub2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2NoaWxkTm9kZUxpc3QpOwogICAg
ICAgICBpZiAobV9lbXB0eUNoaWxkTm9kZUxpc3QpCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGlj
OgogICAgIHR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBUYWdOb2RlTGlzdCo+IFRhZ05v
ZGVMaXN0Q2FjaGVOUzsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnRh
aW5lclR5cGU+Ci0gICAgQUxXQVlTX0lOTElORSBQYXNzUmVmPFQ+IGFkZENhY2hlV2l0aEF0b21p
Y05hbWUoQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
CisgICAgQUxXQVlTX0lOTElORSBSZWY8VD4gYWRkQ2FjaGVXaXRoQXRvbWljTmFtZShDb250YWlu
ZXJUeXBlJiBjb250YWluZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7CiAgICAg
ICAgIE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9hdG9t
aWNOYW1lQ2FjaGVzLmZhc3RBZGQobmFtZWROb2RlTGlzdEtleTxUPihuYW1lKSwgbnVsbHB0cik7
CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFBh
c3NSZWY8VGFnTm9kZUxpc3Q+IGFkZENhY2hlV2l0aFF1YWxpZmllZE5hbWUoQ29udGFpbmVyTm9k
ZSYgbm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxOYW1lKQorICAgIEFMV0FZU19JTkxJTkUgUmVmPFRhZ05vZGVMaXN0PiBhZGRD
YWNoZVdpdGhRdWFsaWZpZWROYW1lKENvbnRhaW5lck5vZGUmIG5vZGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKICAgICB7
CiAgICAgICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBuYW1lc3Bh
Y2VVUkkpOwogICAgICAgICBUYWdOb2RlTGlzdENhY2hlTlM6OkFkZFJlc3VsdCByZXN1bHQgPSBt
X3RhZ05vZGVMaXN0Q2FjaGVOUy5mYXN0QWRkKG5hbWUsIG51bGxwdHIpOwpAQCAtMTQzLDcgKzE0
Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBDb250YWluZXJUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZjxUPiBhZGRDYWNoZWRD
b2xsZWN0aW9uKENvbnRhaW5lclR5cGUmIGNvbnRhaW5lciwgQ29sbGVjdGlvblR5cGUgY29sbGVj
dGlvblR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICBBTFdBWVNfSU5MSU5FIFJl
ZjxUPiBhZGRDYWNoZWRDb2xsZWN0aW9uKENvbnRhaW5lclR5cGUmIGNvbnRhaW5lciwgQ29sbGVj
dGlvblR5cGUgY29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7
CiAgICAgICAgIENvbGxlY3Rpb25DYWNoZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2FjaGVk
Q29sbGVjdGlvbnMuZmFzdEFkZChuYW1lZENvbGxlY3Rpb25LZXkoY29sbGVjdGlvblR5cGUsIG5h
bWUpLCBudWxscHRyKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTE1NSw3
ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgQ29udGFpbmVyVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIFBhc3NSZWY8VD4gYWRkQ2Fj
aGVkQ29sbGVjdGlvbihDb250YWluZXJUeXBlJiBjb250YWluZXIsIENvbGxlY3Rpb25UeXBlIGNv
bGxlY3Rpb25UeXBlKQorICAgIEFMV0FZU19JTkxJTkUgUmVmPFQ+IGFkZENhY2hlZENvbGxlY3Rp
b24oQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlw
ZSkKICAgICB7CiAgICAgICAgIENvbGxlY3Rpb25DYWNoZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9
IG1fY2FjaGVkQ29sbGVjdGlvbnMuZmFzdEFkZChuYW1lZENvbGxlY3Rpb25LZXkoY29sbGVjdGlv
blR5cGUsIHN0YXJBdG9tKSwgbnVsbHB0cik7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50
cnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5kZXggN2MyYmNmMi4uNjUwZjcx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApAQCAtMTEyLDcgKzExMiw3IEBA
IHZvaWQgUHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkKICAgICAg
ICAgLy8gV2Ugb25seSBtYW5hZ2UgdGhlIHN0eWxlIGZvciB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQg
d2hpY2ggbXVzdCBiZSBpbWFnZXMgb3IgdGV4dC4KICAgICAgICAgaWYgKCFpczxSZW5kZXJJbWFn
ZT4oKmNoaWxkKSAmJiAhaXM8UmVuZGVyUXVvdGU+KCpjaGlsZCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlZFN0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHlsZShyZW5kZXJlci5zdHls
ZSgpKTsKKyAgICAgICAgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVkU3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKHJlbmRlcmVyLnN0eWxlKCkp
OwogICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLnNldFN0eWxlKFdURjo6
bW92ZShjcmVhdGVkU3R5bGUpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUu
aAppbmRleCAxYTU2ZTlkLi45OGE2NWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgUXVhbGlmaWVkTmFtZSB7CiBwdWJsaWM6CiAgICAgY2xh
c3MgUXVhbGlmaWVkTmFtZUltcGwgOiBwdWJsaWMgUmVmQ291bnRlZDxRdWFsaWZpZWROYW1lSW1w
bD4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWY8UXVhbGlmaWVkTmFtZUlt
cGw+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKQorICAgICAgICBz
dGF0aWMgUmVmPFF1YWxpZmllZE5hbWVJbXBsPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUXVhbGlmaWVkTmFtZUltcGwocHJlZml4LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UYWdOb2RlTGlzdC5oCmluZGV4IGI5MTg1MTYuLjY5MjFiZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UYWdOb2RlTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UYWdOb2RlTGlzdC5oCkBAIC0zMywxMyArMzMsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogLy8gTm9kZUxpc3QgdGhhdCBsaW1pdHMgdG8gYSBwYXJ0aWN1bGFyIHRhZy4K
IGNsYXNzIFRhZ05vZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExpdmVOb2RlTGlzdDxUYWdO
b2RlTGlzdD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFRhZ05vZGVMaXN0PiBjcmVh
dGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
VVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKKyAgICBzdGF0aWMgUmVmPFRhZ05v
ZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChuYW1lc3BhY2VVUkkgIT0gc3RhckF0b20pOwogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUYWdOb2RlTGlzdChyb290Tm9kZSwgbmFtZXNwYWNlVVJJLCBsb2NhbE5h
bWUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxUYWdOb2RlTGlzdD4gY3JlYXRlKENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKKyAg
ICBzdGF0aWMgUmVmPFRhZ05vZGVMaXN0PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVGFnTm9kZUxpc3Qocm9vdE5vZGUsIHN0YXJBdG9tLCBsb2NhbE5hbWUpKTsK
ICAgICB9CkBAIC02Nyw3ICs2Nyw3IEBAIGlubGluZSBib29sIFRhZ05vZGVMaXN0OjplbGVtZW50
TWF0Y2hlcyhFbGVtZW50JiBlbGVtZW50KSBjb25zdAogCiBjbGFzcyBIVE1MVGFnTm9kZUxpc3Qg
ZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2ZU5vZGVMaXN0PEhUTUxUYWdOb2RlTGlzdD4gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmPEhUTUxUYWdOb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5l
ck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKKyAgICBzdGF0
aWMgUmVmPEhUTUxUYWdOb2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEhUTUxUYWdOb2RlTGlzdChyb290Tm9kZSwgbG9jYWxOYW1lKSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAKaW5kZXggODliMjU0
MC4uMzY0MjIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIGJvb2wgQmFzZUJ1dHRvbklucHV0VHlwZTo6YXBwZW5kRm9y
bURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBCYXNlQnV0dG9uSW5wdXRUeXBlOjpjcmVhdGVJbnB1
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IEJhc2VCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJCdXR0
b24+KGVsZW1lbnQoKSwgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
QmFzZUJ1dHRvbklucHV0VHlwZS5oCmluZGV4IDQ2NTcxYzMuLmZlMGE5MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oCkBAIC00Myw3ICs0Myw3IEBAIHByb3Rl
Y3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFNhdmVBbmRSZXN0b3JlRm9y
bUNvbnRyb2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRG
b3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIHN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRlKCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIFRleHRGaWVs
ZEV2ZW50QmVoYXZpb3IpIG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuY3BwCmluZGV4IDA1NDNjNWQuLjcyNDdlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6aGFuZGxl
RE9NQWN0aXZhdGVFdmVudChFdmVudCogZXZlbnQpCiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBGaWxlSW5wdXRUeXBlOjpjcmVh
dGVJbnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEZpbGVJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbD4oZWxlbWVudCgpLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggODhmZGUzMy4uYWFlY2MwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U3RyaW5nVmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2hhbmdlRnJvbUFub3RoZXJUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBGaWxlTGlzdCogZmlsZXMoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKaW5kZXggODJkNjcwZC4uMDE2Njg3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmPEhUTUxBbGxDb2xsZWN0aW9uPiBI
VE1MQWxsQ29sbGVjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5
cGUgdHlwZSkKK1JlZjxIVE1MQWxsQ29sbGVjdGlvbj4gSFRNTEFsbENvbGxlY3Rpb246OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSFRNTEFsbENvbGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaAppbmRleCBiZGY0ZmYxLi41MTQ1MTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCkBAIC0zMiw3ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEFsbENvbGxlY3Rpb24gZmluYWwg
OiBwdWJsaWMgSFRNTENvbGxlY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPEhU
TUxBbGxDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBDb2xsZWN0aW9uVHlwZSk7CisgICAg
c3RhdGljIFJlZjxIVE1MQWxsQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgQ29sbGVjdGlv
blR5cGUpOwogCiAgICAgRWxlbWVudCogbmFtZWRJdGVtV2l0aEluZGV4KGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgdW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFwcGxldEVsZW1lbnQuY3BwCmluZGV4IGFmZTIxYTUuLjVkNmViZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGJvb2wg
SFRNTEFwcGxldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogICAgIHJldHVybiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KHN0eWxlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxBcHBsZXRFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgaWYgKCFjYW5FbWJlZEphdmEo
KSkKICAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGOjpt
b3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKaW5kZXgg
MjA1YWRkYS4uZmI2MDg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBw
bGV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQu
aApAQCAtMzcsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5
bGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBSZW5kZXJXaWRnZXQqIHJl
bmRlcldpZGdldExvYWRpbmdQbHVnaW4oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCmluZGV4IDVhODQ4NTcuLjNmOTg3NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEhUTUxC
UkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYQogICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBzdHlsZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MQlJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEJSRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAg
ICBpZiAoc3R5bGUuZ2V0KCkuaGFzQ29udGVudCgpKQogICAgICAgICByZXR1cm4gUmVuZGVyRWxl
bWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQlJFbGVtZW50LmgKaW5kZXggZDU4YTZmMy4uMGYzYjZjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQlJFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVT
dHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAppbmRleCBhMWZm
NDgzLi41YWQ2ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNw
cApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEhUTUxCdXR0b25FbGVtZW50OjpzZXRUeXBlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSkKICAgICBzZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUpOwog
fQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
QnV0dG9uPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCdXR0b25FbGVtZW50LmgKaW5kZXggYWM2ODdmOS4uMjczZDllNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmKSBvdmVycmlkZTsKIAogICAgIC8vIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgYWx3
YXlzIGNyZWF0ZXMgb25lLCBidXQgYnV0dG9ucyBkb24ndCBuZWVkIGl0LgogICAgIHZpcnR1YWwg
Ym9vbCBhbHdheXNDcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAK
aW5kZXggMjBlNDZkNC4uNzE3MGMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdAog
ICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKTsKICAg
ICBpZiAoZnJhbWUgJiYgZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0
VG9FeGVjdXRlU2NyaXB0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5o
CmluZGV4IGZmZGE2ODIuLmNlMGVmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIEhUTUxDYW52YXNFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5n
ZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNhblN0YXJ0U2Vs
ZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24u
Y3BwCmluZGV4IDQyNzcyMjUuLjNmNzRkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgSFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0
aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgQ29sbGVjdGlvblR5cGUgdHlwZSwgRWwKICAg
ICBBU1NFUlQobV9jb2xsZWN0aW9uVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSkp
OwogfQogCi1QYXNzUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MQ29sbGVjdGlvbjo6Y3JlYXRlKENv
bnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlIHR5cGUpCitSZWY8SFRNTENvbGxlY3Rp
b24+IEhUTUxDb2xsZWN0aW9uOjpjcmVhdGUoQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlv
blR5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MQ29sbGVjdGlvbihi
YXNlLCB0eXBlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xs
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKaW5kZXggMDhm
MTIzYi4uYmViMjZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaApAQCAtNjAs
NyArNjAsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBIVE1MQ29sbGVjdGlvbiA6IHB1YmxpYyBTY3Jp
cHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEhUTUxDb2xsZWN0aW9uPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWY8SFRNTENvbGxlY3Rpb24+IGNyZWF0ZShDb250YWluZXJOb2Rl
JiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7CisgICAgc3RhdGljIFJlZjxIVE1MQ29sbGVjdGlvbj4g
Y3JlYXRlKENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlKTsKICAgICB2aXJ0dWFs
IH5IVE1MQ29sbGVjdGlvbigpOwogCiAgICAgLy8gRE9NIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IGEzNWI1ZDguLjY1OWYwOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBA
QCBIVE1MRGV0YWlsc0VsZW1lbnQ6OkhUTUxEZXRhaWxzRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZAogICAgIEFTU0VSVChoYXNUYWdOYW1lKGRldGFpbHNU
YWcpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyQmxvY2tGbG93PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAppbmRleCBhOTg5NDc0Li4wYThkMDM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgKQEAgLTM1LDcgKzM1LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MRGV0YWlsc0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmlu
ZGV4IGYyODRiOWUuLjIzMTdiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBA
IC03OTYsNyArNzk2LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6
Y3JlYXRlRm9yKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaAppbmRleCBlZTQ4YWVkLi5iNDEwZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGllRm9yYmlkc0luc2VydEhU
TUwoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAogICAgIEhUTUxGb3JtRWxlbWVudCog
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxGb3JtKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKaW5kZXggMDFkZGY0MC4uNGI4ZGU4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0xNDksNyAr
MTQ5LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRmllbGRTZXRFbGVtZW50Ojpmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdAogICAgIHJldHVybiBmaWVsZHNldDsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1M
RmllbGRTZXRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJGaWVsZHNldD4oKnRo
aXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRmllbGRTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNl
dEVsZW1lbnQuaAppbmRleCBlMTc1MGQzLi5iMDRmM2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNvbXB1dGVXaWxsVmFsaWRhdGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNh
YmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggMzhlYzMxZC4uMGRlZWNj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSkKICAgICBB
U1NFUlQoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUpIHx8IGlzPEhUTUxGaWVsZFNldEVs
ZW1lbnQ+KG93bmVyTm9kZSkpOwogfQogCi1QYXNzUmVmPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uPiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y3JlYXRlKENvbnRhaW5lck5vZGUmIG93
bmVyTm9kZSwgQ29sbGVjdGlvblR5cGUpCitSZWY8SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUoQ29udGFpbmVyTm9kZSYgb3duZXJO
b2RlLCBDb2xsZWN0aW9uVHlwZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbihvd25lck5vZGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAppbmRleCAzMTYyYmQ5Li5iMTY4YWQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiAKIGNsYXNzIEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4g
Y3JlYXRlKENvbnRhaW5lck5vZGUmLCBDb2xsZWN0aW9uVHlwZSk7CisgICAgc3RhdGljIFJlZjxI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4gY3JlYXRlKENvbnRhaW5lck5vZGUmLCBDb2xsZWN0
aW9uVHlwZSk7CiAgICAgdmlydHVhbCB+SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oKTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCmluZGV4IGQ2
NTVmMDcuLmQ2NjlmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNw
cApAQCAtNTQsNyArNTQsNyBAQCBib29sIEhUTUxGcmFtZUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmKQogICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKTsKIH0KIAot
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJGcmFtZT4o
KnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnQuaAppbmRleCBkNGQ2MWM4Li43MmY3MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnQuaApAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCAyYjQxNGNmLi45NjhkODBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBA
QCBib29sIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogICAgIHJldHVybiBzdHlsZS5pc1N0eWxlQXZhaWxhYmxlKCk7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gSFRNTEZyYW1lU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAoc3R5bGUuZ2V0KCkuaGFzQ29udGVudCgp
KQogICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEY6Om1v
dmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKaW5k
ZXggYTNiMjcxNy4uNmEzN2VjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRF
bGVtZW50LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCB3
aWxsQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggYWZhNzUwZS4u
ZWQyNTlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAg
LTkwLDcgKzkwLDcgQEAgYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIGlzVVJMQWxsb3dlZCgpICYmIHN0
eWxlLmRpc3BsYXkoKSAhPSBOT05FOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRN
TElGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySUZyYW1lPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKaW5kZXggOWFhYWMxOC4u
OTJkMzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaApAQCAtNDQs
NyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlk
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwCmluZGV4IDJkOWJiYWEuLmY0ZmQ1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgSFRNTEltYWdlRWxlbWVudDo6YWx0VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGZh
c3RHZXRBdHRyaWJ1dGUodGl0bGVBdHRyKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIGlm
IChzdHlsZS5nZXQoKS5oYXNDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJFbGVtZW50
OjpjcmVhdGVGb3IoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuaAppbmRleCBmZDVlMWIzLi44ZTgyNjFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRCZXN0Rml0VVJMQW5kRFBSRnJvbUltYWdl
Q2FuZGlkYXRlKGNvbnN0IEltYWdlQ2FuZGlkYXRlJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2Fu
U3RhcnRTZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCmluZGV4IGMyZmVhZTcuLjc4OTI0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNzYxLDcgKzc2MSw3IEBAIGJvb2wgSFRNTElu
cHV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAg
ICAgcmV0dXJuIG1faW5wdXRUeXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxJ
bnB1dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCiB7CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5jcmVhdGVJbnB1dFJlbmRlcmVyKFdURjo6
bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRl
eCAzZmU1NzdmLi43N2RhNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aApAQCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhdmVTZWxlY3Rpb24o
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlk
ZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRGV0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGUgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNWE4N2E3Zi4uZDU1MThjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQg
SFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29u
c3QgVVJMJiBiYXNlVVJMLCBjCiAgICAgfQogCiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50cz4g
c3R5bGVTaGVldChTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShocmVmLCBwYXJzZXJDb250ZXh0
KSk7Ci0gICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShzdHlsZVNoZWV0LCB0aGlz
KTsKKyAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKHN0eWxlU2hlZXQuY29weVJl
ZigpLCB0aGlzKTsKICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoTWVkaWFRdWVyeVNldDo6
Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChtX21lZGlhKSk7CiAgICAgbV9zaGVldC0+
c2V0VGl0bGUodGl0bGUoKSk7CiAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFz
ZVVSTCwgYwogICAgIHN0eWxlU2hlZXQuZ2V0KCkuY2hlY2tMb2FkZWQoKTsKIAogICAgIGlmIChz
dHlsZVNoZWV0LmdldCgpLmlzQ2FjaGVhYmxlKCkpCi0gICAgICAgIGNvbnN0X2Nhc3Q8Q2FjaGVk
Q1NTU3R5bGVTaGVldCo+KGNhY2hlZFN0eWxlU2hlZXQpLT5zYXZlUGFyc2VkU3R5bGVTaGVldChz
dHlsZVNoZWV0KTsKKyAgICAgICAgY29uc3RfY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0Kj4oY2Fj
aGVkU3R5bGVTaGVldCktPnNhdmVQYXJzZWRTdHlsZVNoZWV0KFdURjo6bW92ZShzdHlsZVNoZWV0
KSk7CiB9CiAKIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzdHlsZVNoZWV0SXNMb2FkaW5nKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDNkY2M4NTIu
LjFkZGY5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
NjIyLDcgKzYyMiw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIGNvbnRyb2xzKCkgJiYgSFRNTEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNZWRpYUVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1lZGlhPigqdGhpcywgV1RGOjptb3ZlKHN0
eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGEwM2Y4
NjIuLjJjNTdjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00
ODksNyArNDg5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5kSWdub3JpbmdUcmFja0Rpc3Bs
YXlVcGRhdGVSZXF1ZXN0cygpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKE1F
RElBX0NPTlRST0xTX1NDUklQVCkKICAgICBib29sIG1lZGlhQ29udHJvbHNEZXBlbmRPblBhZ2VT
Y2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDb250cm9sc0RlcGVuZE9uUGFnZVNj
YWxlRmFjdG9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAppbmRl
eCAxNGRiOGEwLi5mMWQ2NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZXRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVu
dC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgUmVmUHRyPEhUTUxNZXRlckVsZW1lbnQ+IEhUTUxNZXRl
ckVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLAogICAgIHJldHVy
biBtZXRlcjsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNZXRlckVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIGlmICghZG9jdW1lbnQoKS5wYWdl
KCktPnRoZW1lKCkuc3VwcG9ydHNNZXRlcihzdHlsZS5nZXQoKS5hcHBlYXJhbmNlKCkpKQogICAg
ICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgKaW5kZXggNTA2ZTJhYy4u
MTRlNDdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgKQEAgLTcwLDcg
KzcwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5h
bWVDb2xsZWN0aW9uLmgKaW5kZXggYTBmNGJiNS4uMzIwNzQzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCkBAIC00NCw3ICs0NCw3IEBAIHByb3RlY3RlZDoKIAog
Y2xhc3MgV2luZG93TmFtZUNvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0
aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxXaW5kb3dOYW1lQ29sbGVjdGlvbj4g
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQorICAgIHN0YXRpYyBSZWY8V2luZG93TmFtZUNvbGxlY3Rpb24+IGNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdpbmRv
d05hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1lKSk7CiAgICAgfQpAQCAtNjUsNyAr
NjUsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBEb2N1bWVudE5hbWVDb2xsZWN0aW9uIGZpbmFsIDog
cHVibGljIEhUTUxOYW1lQ29sbGVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8
RG9jdW1lbnROYW1lQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVj
dGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorICAgIHN0YXRpYyBSZWY8
RG9jdW1lbnROYW1lQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVj
dGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRG9jdW1lbnROYW1lQ29sbGVjdGlvbihkb2N1bWVudCwgdHlw
ZSwgbmFtZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmNwcAppbmRleCBmMjkyMTJkLi5mYjMzNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCkBAIC0zMSw3ICszMSw3IEBAIEhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uKEhUTUxTZWxlY3RFbGVtZW50JiBz
ZWxlY3QpCiB7CiB9CiAKLVBhc3NSZWY8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBIVE1MT3B0aW9u
c0NvbGxlY3Rpb246OmNyZWF0ZShIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0LCBDb2xsZWN0aW9u
VHlwZSkKK1JlZjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6
Y3JlYXRlKEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3QsIENvbGxlY3Rpb25UeXBlKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxPcHRpb25zQ29sbGVjdGlvbihzZWxlY3QpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCmluZGV4IDE1ODM0
YWIuLjM0MGRhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaApAQCAtMzUsNyArMzUsNyBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFz
cyBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gY3JlYXRl
KEhUTUxTZWxlY3RFbGVtZW50JiwgQ29sbGVjdGlvblR5cGUpOworICAgIHN0YXRpYyBSZWY8SFRN
TE9wdGlvbnNDb2xsZWN0aW9uPiBjcmVhdGUoSFRNTFNlbGVjdEVsZW1lbnQmLCBDb2xsZWN0aW9u
VHlwZSk7CiAKICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0RWxlbWVudCgpIHsgcmV0dXJu
IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50Pihvd25lck5vZGUoKSk7IH0KICAgICBjb25zdCBI
VE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0
PEhUTUxTZWxlY3RFbGVtZW50Pihvd25lck5vZGUoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggZWNiZGU0Yi4uNTU4ZDE0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCBOUE9i
amVjdCogSFRNTFBsdWdJbkVsZW1lbnQ6OmdldE5QT2JqZWN0KCkKIAogI2VuZGlmIC8qIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKSAqLwogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRN
TFBsdWdJbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICBpZiAo
bV9wbHVnaW5SZXBsYWNlbWVudCAmJiBtX3BsdWdpblJlcGxhY2VtZW50LT53aWxsQ3JlYXRlUmVu
ZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIG1fcGx1Z2luUmVwbGFjZW1lbnQtPmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmgKaW5kZXggOGMxOTVmOC4uOGE3NWJiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwog
CiAgICAgdmlydHVhbCBib29sIHJlcXVlc3RPYmplY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIG92ZXJyaWRlOwogCiAg
ICAgLy8gU3ViY2xhc3NlcyBzaG91bGQgdXNlIGd1YXJkZWREaXNwYXRjaEJlZm9yZUxvYWRFdmVu
dCBpbnN0ZWFkIG9mIGNhbGxpbmcgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgZGlyZWN0bHkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBh
NGYwZjI2Li4zZTUzOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OndvdWxkTG9hZEFzTmV0c2NhcGVQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAg
ICAgQVNTRVJUKCFkb2N1bWVudCgpLmluUGFnZUNhY2hlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDgyMGZiNzIuLjJiYzRiNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC0xMTcs
NyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxk
cmVuKCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFVzZXJBZ2VudFNo
YWRvd1Jvb3QoU2hhZG93Um9vdCopIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVy
U3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlIGZpbmFs
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZSBmaW5hbDsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFJlbmRlcmVycygpIG92ZXJyaWRlIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKaW5kZXggOGNmMmQ2
Mi4uZjFiMzFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQu
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFJlZlB0cjxIVE1MUHJvZ3Jlc3NFbGVtZW50PiBIVE1MUHJv
Z3Jlc3NFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnCiAgICAgcmV0dXJu
IHByb2dyZXNzOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFByb2dyZXNzRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgaWYgKCFzdHlsZS5n
ZXQoKS5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVh
dGVGb3IoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cm9ncmVzc0VsZW1lbnQuaAppbmRleCAzNjJmZDJjLi44NWJiNGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBlYXJJbmRldGVybWluYXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICBSZW5kZXJQcm9n
cmVzcyogcmVuZGVyUHJvZ3Jlc3MoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcAppbmRleCA3OTFiYmNiLi44YzVjMzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIGJvb2wgSFRN
TFNlbGVjdEVsZW1lbnQ6OmNhblNlbGVjdEFsbCgpIGNvbnN0CiAgICAgcmV0dXJuICF1c2VzTWVu
dUxpc3QoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxTZWxlY3RFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAjaWYgIVBMQVRGT1JNKElPUykKICAg
ICBpZiAodXNlc01lbnVMaXN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmgKaW5kZXggNGEzYmFlOC4uNGIyNWI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuaApAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0
IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBhcHBl
bmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
dm9pZCByZXNldCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVs
ZW1lbnQuY3BwCmluZGV4IGIwODExZjcuLjEyNTI1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgSFRNTFN1bW1hcnlFbGVt
ZW50OjpIVE1MU3VtbWFyeUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGQKICAgICBBU1NFUlQoaGFzVGFnTmFtZShzdW1tYXJ5VGFnKSk7CiB9CiAKLVJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJsb2NrRmxv
dz4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1
bW1hcnlFbGVtZW50LmgKaW5kZXggMGQ1NmUzYS4uZDIwYzkwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgSFRNTFN1bW1hcnlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0
eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAppbmRleCBiNTlmOTI2Li5mZTBkNjUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcApA
QCAtMTUzLDcgKzE1Myw3IEBAIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpIVE1MVGFibGVSb3dz
Q29sbGVjdGlvbihIVE1MVGFibGVFbGVtZW50JiB0YWJsZSkKIHsKIH0KIAotUGFzc1JlZjxIVE1M
VGFibGVSb3dzQ29sbGVjdGlvbj4gSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OmNyZWF0ZShIVE1M
VGFibGVFbGVtZW50JiB0YWJsZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKK1JlZjxIVE1MVGFibGVS
b3dzQ29sbGVjdGlvbj4gSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OmNyZWF0ZShIVE1MVGFibGVF
bGVtZW50JiB0YWJsZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKIHsKICAgICBBU1NFUlRfVU5VU0VE
KHR5cGUsIHR5cGUgPT0gVGFibGVSb3dzKTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1M
VGFibGVSb3dzQ29sbGVjdGlvbih0YWJsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVSb3dzQ29sbGVjdGlvbi5oCmluZGV4IDBmNWNkZDcuLmYxN2EzMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgKQEAgLTM4LDcgKzM4LDcg
QEAgY2xhc3MgSFRNTFRhYmxlUm93RWxlbWVudDsKIAogY2xhc3MgSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPiBjcmVhdGUoSFRNTFRhYmxlRWxlbWVu
dCYsIENvbGxlY3Rpb25UeXBlKTsKKyAgICBzdGF0aWMgUmVmPEhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uPiBjcmVhdGUoSFRNTFRhYmxlRWxlbWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIAogICAgIEhU
TUxUYWJsZUVsZW1lbnQmIHRhYmxlRWxlbWVudCgpIHsgcmV0dXJuIGRvd25jYXN0PEhUTUxUYWJs
ZUVsZW1lbnQ+KG93bmVyTm9kZSgpKTsgfQogICAgIGNvbnN0IEhUTUxUYWJsZUVsZW1lbnQmIHRh
YmxlRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KG93
bmVyTm9kZSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKaW5kZXggOTFkNzFjMS4uNTU0NjAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWMKICAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxUZXh0QXJl
YUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZT4oKnRoaXMsIFdURjo6bW92
ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaApp
bmRleCBmYzQxNjU2Li4xNTdiYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb2xs
ZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBi
b29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggODZkNzc3NS4uMjhiMmNiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0
eWxlKTsgCiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyVmlkZW8+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggZTVmNjA0OC4uOGVkMmJiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAg
IGJvb2wgc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheU1v
ZGUoKSA9PSBQb3N0ZXIgfHwgZGlzcGxheU1vZGUoKSA9PSBQb3N0ZXJXYWl0aW5nRm9yVmlkZW87
IH0KIAogICAgIFVSTCBwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0OwotICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgSFRNTFZpZGVvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
LCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5jcHAKaW5kZXggZTk0Y2Jm
Ny4uMzk0ZjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5jcHAKQEAgLTQ0
LDcgKzQ0LDcgQEAgSFRNTFdCUkVsZW1lbnQ6OkhUTUxXQlJFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZSh3YnJUYWcpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxXQlJFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFdCUkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlckxpbmVCcmVhaz4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MV0JSRWxlbWVudC5oCmluZGV4IDIxNzdiOTcuLjViZTc0NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdCUkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxXQlJFbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBIVE1MV0JSRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
IAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
Jikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hpZGRlbklucHV0VHlwZS5jcHAKaW5kZXggMTVlYWM1ZC4uZDZlZTE2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBib29sIEhp
ZGRlbklucHV0VHlwZTo6c3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIaWRkZW5JbnB1dFR5cGU6OmNyZWF0
ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pCitSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSGlkZGVuSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHls
ZT4mJikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5oCmluZGV4IGNkMDFlMDAuLmVlNmQzMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaApAQCAtNDQsNyArNDQsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgRm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xT
dGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAppbmRleCBlMzIxYzJlLi45NTQ4YzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZv
aWQgSW1hZ2VJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqIGV2ZW50KQog
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gSW1hZ2VJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1hZ2VJbnB1dFR5cGU6OmNy
ZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbWFnZT4oZWxlbWVudCgpLCBXVEY6Om1vdmUoc3R5bGUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAppbmRleCBlNmVmNWM1Li43MjM2
ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzRm9ybURhdGFBcHBlbmRhYmxlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYs
IGJvb2wpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ZhbGlkYXRp
b24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURPTUFj
dGl2YXRlRXZlbnQoRXZlbnQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYWx0QXR0cmli
dXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzcmNBdHRyaWJ1dGVDaGFu
Z2VkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggODBiNDlmZS4u
YzA4OWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNDc5LDcgKzQ3OSw3IEBA
IFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBJbnB1dFR5cGU6OmZvcm1Gb3JTdWJtaXNzaW9u
KCkgY29uc3QKICAgICByZXR1cm4gZWxlbWVudCgpLmZvcm0oKTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbnB1dFR5cGU6OmNyZWF0
ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4oUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKGVsZW1lbnQo
KSwgV1RGOjptb3ZlKHN0eWxlKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggNzMy
ZWRlYy4uODZhYzhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0yMzIsNyArMjMyLDcg
QEAgcHVibGljOgogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMKICAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZCgpOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCk7CiAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuaAppbmRleCBiODUxYTMxLi5hMTE5ZDNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgTGFiZWxzTm9kZUxpc3QgZmluYWwgOiBwdWJsaWMgQ2FjaGVkTGl2
ZU5vZGVMaXN0PExhYmVsc05vZGVMaXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8
TGFiZWxzTm9kZUxpc3Q+IGNyZWF0ZShMYWJlbGFibGVFbGVtZW50JiBmb3JOb2RlLCBjb25zdCBB
dG9taWNTdHJpbmcmKQorICAgIHN0YXRpYyBSZWY8TGFiZWxzTm9kZUxpc3Q+IGNyZWF0ZShMYWJl
bGFibGVFbGVtZW50JiBmb3JOb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTGFiZWxzTm9kZUxpc3QoZm9yTm9kZSkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKaW5kZXggOGJjZjAyYi4uM2ZjYzk3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBSYWRpb05vZGVMaXN0IGZpbmFsIDogcHVibGljIENhY2hlZExp
dmVOb2RlTGlzdDxSYWRpb05vZGVMaXN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8
UmFkaW9Ob2RlTGlzdD4gY3JlYXRlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpCisgICAgc3RhdGljIFJlZjxSYWRpb05vZGVMaXN0PiBjcmVhdGUoQ29u
dGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJhZGlvTm9kZUxpc3Qocm9vdE5vZGUsIG5hbWUp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDk2YjE4
Y2QuLjg4MTI3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0y
ODQsNyArMjg0LDcgQEAgSFRNTEVsZW1lbnQqIFJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUaHVtYkVs
ZW1lbnQoKSBjb25zdAogICAgIHJldHVybiAmdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKTsKIH0K
IAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJl
bmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2xpZGVyPihlbGVt
ZW50KCksIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlw
ZS5oCmluZGV4IGU3YjVlMTEuLjlkOTE1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRU
eXBlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
TW91c2VEb3duRXZlbnQoTW91c2VFdmVudCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1h
bCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBE
ZWNpbWFsJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1NlYXJjaElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlw
ZS5jcHAKaW5kZXggZmE2OGIyNC4uZWQxMjcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNo
SW5wdXRUeXBlLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6bWF4
UmVzdWx0c0F0dHJpYnV0ZUNoYW5nZWQoKQogICAgICAgICB1cGRhdGVSZXN1bHRCdXR0b25Qc2V1
ZG9UeXBlKCptX3Jlc3VsdHNCdXR0b24sIGVsZW1lbnQoKS5tYXhSZXN1bHRzKCkpOwogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNlYXJjaEZpZWxkPihl
bGVtZW50KCksIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5w
dXRUeXBlLmgKaW5kZXggMTVkZGY5Mi4uMGQ3Mzg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJj
aElucHV0VHlwZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGFkZFNlYXJjaFJlc3VsdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBt
YXhSZXN1bHRzQXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCBlN2JjMjhiLi5iZmUzZjRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0yMjMsNyArMjIz
LDcgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZl
bnQqIGV2ZW50KQogICAgICAgICB8fCBJbnB1dFR5cGU6OnNob3VsZFN1Ym1pdEltcGxpY2l0bHko
ZXZlbnQpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dEZpZWxkSW5wdXRUeXBl
OjpjcmVhdGVJbnB1dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZT4oZWxlbWVudCgpLCBXVEY6Om1vdmUoc3R5bGUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmluZGV4IDRmMGU2
ZjYuLjM3Y2QzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5w
dXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApA
QCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCopIG92ZXJyaWRlIGZpbmFs
OwogICAgIHZpcnR1YWwgdm9pZCBmb3J3YXJkRXZlbnQoRXZlbnQqKSBvdmVycmlkZSBmaW5hbDsK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCopIG92ZXJyaWRl
IGZpbmFsOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBj
b25zdCBvdmVycmlkZTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgU3RyaW5nIHNh
bml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKaW5kZXggNWUz
YWJkMi4uMzdmYTQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0
YWlsc01hcmtlckNvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Rl
dGFpbHNNYXJrZXJDb250cm9sLmNwcApAQCAtNTAsNyArNTAsNyBAQCBEZXRhaWxzTWFya2VyQ29u
dHJvbDo6RGV0YWlsc01hcmtlckNvbnRyb2woRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHNldFBz
ZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtZGV0YWlscy1tYXJrZXIiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBE
ZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IERldGFpbHNNYXJrZXJDb250
cm9sOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewog
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJEZXRhaWxzTWFya2VyPigqdGhpcywgV1RG
Ojptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EZXRhaWxzTWFya2VyQ29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0
YWlsc01hcmtlckNvbnRyb2wuaAppbmRleCAzNmVhNTZmLi44MWNmMWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBEZXRhaWxzTWFya2VyQ29udHJvbChEb2N1
bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IGMwMzQxNDEuLjJk
MzNiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRpbWVs
aW5lQ29udGFpbmVyRWxlbWVudDo6c2V0VGltZURpc3BsYXlzSGlkZGVuKGJvb2wgaGlkZGVuKQog
ICAgIH0KIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KQEAgLTMzMCw3
ICszMzAsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVs
ZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbgogICAgIHJldHVybiBlbGVtZW50LnJl
bGVhc2UoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJN
ZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpA
QCAtMTA4OCw3ICsxMDg4LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXIKICAgICByZXR1cm4g
ZWxlbWVudC5yZWxlYXNlKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
LmgKaW5kZXggZTQ1MmMzMi4uMzljOTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVs
ZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
dm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwog
fTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDU2LDcgKzQ1Niw3IEBA
IHByaXZhdGU6CiAKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50KERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEltYWdlPiBjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdlKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlcHJlc2VudGF0aW9uQm91bmRzQ2hhbmdlZChjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWV0ZXJTaGFkb3dFbGVtZW50LmNwcAppbmRleCA2ZWM0ZTU1Li40MGJkZTExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKQEAgLTcz
LDcgKzczLDcgQEAgYm9vbCBNZXRlcklubmVyRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIHJlbmRlciAmJiAhcmVuZGVyLT50aGVt
ZSgpLnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgJiYgSFRNTERp
dkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gTWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNZXRlcklubmVy
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWV0ZXI+KCp0aGlzLCBXVEY6Om1v
dmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
dGVyU2hhZG93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFk
b3dFbGVtZW50LmgKaW5kZXggZDFiMGU3OC4uZTdkNWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHJp
dmF0ZToKICAgICBNZXRlcklubmVyRWxlbWVudChEb2N1bWVudCYpOwogCiAgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJy
aWRlOwogfTsKIAogaW5saW5lIFBhc3NSZWZQdHI8TWV0ZXJJbm5lckVsZW1lbnQ+IE1ldGVySW5u
ZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAKaW5kZXggOTA0MTdm
MS4uMzI5ZWY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jl
c3NTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9n
cmVzc1NoYWRvd0VsZW1lbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb2dyZXNzSW5uZXJFbGVt
ZW50OjpQcm9ncmVzc0lubmVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBQcm9ncmVzc0lubmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJQ
cm9ncmVzcz4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAppbmRleCAxOGRiYzk5Li4z
NDAxZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBy
b2dyZXNzSW5uZXJFbGVtZW50KERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4p
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cAppbmRleCA0ODNmYWU1Li5iNGM2YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgaW5saW5lIHN0
YXRpYyBib29sIGhhc1ZlcnRpY2FsQXBwZWFyYW5jZShIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCkK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVuZGVyU2xpZGVyVGh1
bWI6OlJlbmRlclNsaWRlclRodW1iKFNsaWRlclRodW1iRWxlbWVudCYgZWxlbWVudCwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTbGlkZXJUaHVtYjo6UmVuZGVyU2xpZGVyVGh1
bWIoU2xpZGVyVGh1bWJFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0K
QEAgLTExMSw3ICsxMTEsNyBAQCBib29sIFJlbmRlclNsaWRlclRodW1iOjppc1NsaWRlclRodW1i
KCkgY29uc3QKIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvNjI1MzUKIGNsYXNzIFJlbmRlclNsaWRl
ckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyU2xpZGVyQ29udGFpbmVyKFNsaWRlckNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIFJlbmRlclNsaWRlckNvbnRhaW5lcihT
bGlkZXJDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiAgICAgICAgIDogUmVuZGVyRmxleGlibGVCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkK
ICAgICB7CiAgICAgfQpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50
OjpzZXRQb3NpdGlvbkZyb21WYWx1ZSgpCiAgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5
b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJUaHVtYkVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclNsaWRlclRodW1iPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CkBAIC02
MTUsNyArNjE1LDcgQEAgUGFzc1JlZlB0cjxTbGlkZXJDb250YWluZXJFbGVtZW50PiBTbGlkZXJD
b250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3UKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNsaWRlckNvbnRhaW5lckVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTbGlk
ZXJDb250YWluZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKaW5kZXggZjNlZWQzMi4uNzIx
Y2VjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTbGlkZXJUaHVt
YkVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8RWxl
bWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0xMTYsNyArMTE2LDcgQEAgaW5saW5lIFBhc3NSZWZQdHI8U2xpZGVyVGh1
bWJFbGVtZW50PiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW0KIAog
Y2xhc3MgUmVuZGVyU2xpZGVyVGh1bWIgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJTbGlkZXJUaHVtYihTbGlkZXJUaHVtYkVsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU2xpZGVyVGh1bWIoU2xpZGVyVGh1bWJFbGVt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2b2lkIHVwZGF0ZUFwcGVhcmFuY2UoUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIAogcHJpdmF0ZToKQEAgLTEzMSw3ICsxMzEsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU2xpZGVyQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYp
OwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBjNzI3ZDdkLi5k
M2RiOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgUGFzc1JlZlB0cjxUZXh0
Q29udHJvbElubmVyQ29udGFpbmVyPiBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyOjpjcmVhdGUo
RG9jdW1lbnQKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRDb250cm9sSW5uZXJDb250YWlu
ZXIoZG9jdW1lbnQpKTsKIH0KICAgICAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29u
dHJvbElubmVyQ29udGFpbmVyOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lckNv
bnRhaW5lcjo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRh
aW5lcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpAQCAtMTEwLDcgKzExMCw3IEBAIHZv
aWQgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KiBldmVudCkKICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZl
bnQpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2s+KCp0aGlzLCBX
VEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKaW5kZXggZDM5Y2RiNy4uYjI0NzUzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFRleHRDb250cm9sSW5uZXJDb250YWluZXI+IGNyZWF0ZShEb2N1bWVudCYpOwogcHJvdGVjdGVk
OgogICAgIFRleHRDb250cm9sSW5uZXJDb250YWluZXIoRG9jdW1lbnQmKTsKLSAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwog
fTsKIAogY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERp
dkVsZW1lbnQgewpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgVGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50Jik7Ci0gICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHls
ZSYgcGFyZW50U3R5bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNh
YmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VD
b250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcAppbmRleCBhMzVhNzY5Li42OTcy
M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250
cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uIGZp
bmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2VD
b250cm9sc0J1dHRvbihIVE1MRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKCk7CiAKIHByaXZhdGU6
CkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9y
Y2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIH07CiAKLVJlbmRlckltYWdlQ29udHJvbHNCdXR0b246OlJlbmRlckltYWdlQ29udHJvbHNC
dXR0b24oSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbjo6UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbihIVE1M
RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVy
QmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CkBAIC0xMjUsNyArMTI1
LDcgQEAgdm9pZCBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCiAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoZXZlbnQpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1hZ2VDb250cm9sc0J1
dHRvbkVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxl
bWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbj4o
KnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaApp
bmRleCA1OTgzYTIwLi41M2Q3MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaApAQCAt
NDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFj
KERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUNvbnRy
b2xzQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNv
bnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCmluZGV4IGQ5NjQ4MTMuLmQ1MjcxZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1l
bnRNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnRNYWMuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUmVuZGVySW1hZ2VDb250cm9scyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9j
a0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlckltYWdlQ29udHJvbHMoSFRNTEVsZW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVu
dCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVySW1hZ2VDb250cm9s
cygpOwogCiBwcml2YXRlOgpAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCi1SZW5kZXJJbWFnZUNvbnRyb2xzOjpSZW5kZXJJbWFn
ZUNvbnRyb2xzKEhUTUxFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlckltYWdlQ29udHJvbHM6OlJlbmRlckltYWdlQ29udHJvbHMoSFRNTEVsZW1lbnQm
IGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxv
dyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpAQCAtMTAyLDcgKzEwMiw3IEBAIElt
YWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6fkltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYygp
CiB7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1l
bnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckltYWdlQ29udHJvbHM+KCp0aGlzLCBXVEY6Om1vdmUo
c3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9J
bWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaAppbmRleCA2OGQyZmNiLi42MGVjNTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9s
c1Jvb3RFbGVtZW50TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0lt
YWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjKERvY3VtZW50Jik7CiAKLSAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92
ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuY3BwCmluZGV4IDM4MjZmM2QuLmE2NjAxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVEN1ZS5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFZU
VEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQoKQogICAgIHJldHVybiB0cmFja0Rpc3Bs
YXlCb3hTaGFkb3dQc2V1ZG9JZDsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFZUVEN1
ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFZUVEN1ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyVlRUQ3VlPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WVFRDdWUuaAppbmRleCA3NjEzZmQ0Li5jYzFkZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVlRUQ3VlLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFZU
VEN1ZUJveChEb2N1bWVudCYsIFZUVEN1ZSYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBv
dmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZSBmaW5hbDsKIAog
ICAgIFZUVEN1ZSYgbV9jdWU7CiAgICAgaW50IG1fZm9udFNpemVGcm9tQ2FwdGlvblVzZXJQcmVm
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcAppbmRleCBlMzcwMTM4Li4xZjQ1ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC0xNzAsNyArMTcwLDcg
QEAgUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IENhY2hlZENTU1N0eWxlU2hlZXQ6OnJl
c3RvcmVQYXJzZWRTdHlsZVNoZWV0KGNvbnMKICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0
Q2FjaGU7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2F2ZVBhcnNlZFN0eWxlU2hl
ZXQoUGFzc1JlZjxTdHlsZVNoZWV0Q29udGVudHM+IHNoZWV0KQordm9pZCBDYWNoZWRDU1NTdHls
ZVNoZWV0OjpzYXZlUGFyc2VkU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNo
ZWV0KQogewogICAgIEFTU0VSVChzaGVldC5nZXQoKS5pc0NhY2hlYWJsZSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXgg
OTQwZmQxZi4uYmEwN2U1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgY29uc3QgU3RyaW5nIHNoZWV0VGV4dChib29sIGVuZm9yY2VNSU1FVHlwZSA9
IHRydWUsIGJvb2wqIGhhc1ZhbGlkTUlNRVR5cGUgPSAwKSBjb25zdDsKIAogICAgICAgICBQYXNz
UmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gcmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQoY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYpOwotICAgICAgICB2b2lkIHNhdmVQYXJzZWRTdHlsZVNoZWV0KFBh
c3NSZWY8U3R5bGVTaGVldENvbnRlbnRzPik7CisgICAgICAgIHZvaWQgc2F2ZVBhcnNlZFN0eWxl
U2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJik7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBib29sIGNhblVzZVNoZWV0KGJvb2wgZW5mb3JjZU1JTUVUeXBlLCBib29sKiBoYXNWYWxpZE1J
TUVUeXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmgKaW5kZXggM2MwZWE1NS4uZWJlM2U0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTY4LDcg
KzY4LDcgQEAgZnJpZW5kIGNsYXNzIEltYWdlTG9hZGVyOwogZnJpZW5kIGNsYXNzIFJlc291cmNl
Q2FjaGVWYWxpZGF0aW9uU3VwcHJlc3NvcjsKIAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
PENhY2hlZFJlc291cmNlTG9hZGVyPiBjcmVhdGUoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9h
ZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlZFJlc291cmNlTG9hZGVyKGRvY3VtZW50
TG9hZGVyKSk7IH0KKyAgICBzdGF0aWMgUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPiBjcmVhdGUo
RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENh
Y2hlZFJlc291cmNlTG9hZGVyKGRvY3VtZW50TG9hZGVyKSk7IH0KICAgICB+Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKTsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiByZXF1
ZXN0SW1hZ2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKaW5kZXggYmRiNmJm
Ni4uZDhkZjRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50LmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIE1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQogICAgIE1hdGhNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgaWYgKGhhc1Rh
Z05hbWUoYW5ub3RhdGlvbl94bWxUYWcpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyTWF0aE1MUm93PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAppbmRleCAz
NjM2YWFiLi43MDlmZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJik7CiAKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
KSBvdmVycmlkZTsKIH07CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1h
dGhFbGVtZW50LmNwcAppbmRleCAzNzlhMmZmLi4zNTA0MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgUGFzc1JlZlB0
cjxNYXRoTUxNYXRoRWxlbWVudD4gTWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWcKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1hdGhNTE1hdGhFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRo
TUxNYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTE1hdGhFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxNYXRoPigqdGhpcywgV1RGOjptb3ZlKHN0eWxl
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCmluZGV4IDJi
MTI5NDMuLjlhZjI1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxN
YXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVu
dC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTWF0aE1MTWF0aEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJp
ZGU7CiB9OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TE1lbmNsb3NlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xv
c2VFbGVtZW50LmNwcAppbmRleCBkNTk3ZTRhLi5jNzU1ZDcxIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQCBQ
YXNzUmVmUHRyPE1hdGhNTE1lbmNsb3NlRWxlbWVudD4gTWF0aE1MTWVuY2xvc2VFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWF0aE1MTWVu
Y2xvc2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxN
ZW5jbG9zZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUpCiB7ICAgIAogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxNZW5j
bG9zZT4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oCmluZGV4IGVlOTczMzUuLjIyYTMzY2QgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1hdGhNTE1lbmNsb3NlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4p
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxT
ZWxlY3RFbGVtZW50LmNwcAppbmRleCA1ZmZhODVjLi42ZDUyOTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFBh
c3NSZWZQdHI8TWF0aE1MU2VsZWN0RWxlbWVudD4gTWF0aE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRoTUxTZWxl
Y3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBNYXRoTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MU2VsZWN0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUm93PigqdGhpcywgV1RG
Ojptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVs
ZW1lbnQuaAppbmRleCAwM2E4NTM0Li4zNTQwMGZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MU2VsZWN0RWxlbWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBNYXRoTUxTZWxlY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50Jik7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVm
PFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKaW5kZXggNTAzMTJiMy4uNDU2Yzgx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCkBAIC03
NSw3ICs3NSw3IEBAIHZvaWQgTWF0aE1MVGV4dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0CiAgICAgTWF0aE1MRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxUZXh0RWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAg
ICBpZiAoaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW9UYWcpKQogICAgICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKaW5kZXggYmVkNzU5
MC4uYzY4NDJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNYXRoTUxUZXh0RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVh
bCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0
IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyYjA0MDA0Li40
OTA2MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE2NDUsNyArMTY0NSw3IEBAIHZvaWQgUGFn
ZTo6c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlciogdXNlckNv
bnRlbnRDb250cm9sbGVyCiAgICAgfQogfQogCi12b2lkIFBhZ2U6OnNldFN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcihQYXNzUmVmPFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyKQordm9pZCBQYWdlOjpzZXRTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoUmVm
PFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4mJiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpCiB7
CiAgICAgbV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXItPnJlbW92ZVBhZ2UoKnRoaXMpOwogICAg
IG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gV1RGOjptb3ZlKHN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcik7CkBAIC0xNjU5LDcgKzE2NTksNyBAQCBWaXNpdGVkTGlua1N0b3JlJiBQYWdlOjp2
aXNpdGVkTGlua1N0b3JlKCkKICAgICByZXR1cm4gbV92aXNpdGVkTGlua1N0b3JlOwogfQogCi12
b2lkIFBhZ2U6OnNldFZpc2l0ZWRMaW5rU3RvcmUoUGFzc1JlZjxWaXNpdGVkTGlua1N0b3JlPiB2
aXNpdGVkTGlua1N0b3JlKQordm9pZCBQYWdlOjpzZXRWaXNpdGVkTGlua1N0b3JlKFJlZjxWaXNp
dGVkTGlua1N0b3JlPiYmIHZpc2l0ZWRMaW5rU3RvcmUpCiB7CiAgICAgbV92aXNpdGVkTGlua1N0
b3JlLT5yZW1vdmVQYWdlKCp0aGlzKTsKICAgICBtX3Zpc2l0ZWRMaW5rU3RvcmUgPSBXVEY6Om1v
dmUodmlzaXRlZExpbmtTdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDVmMzhjYTIuLjhlZTI2M2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCkBAIC00MDMsMTMgKzQwMywxMyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQoKSBjb25zdCB7IHJldHVybiBt
X2xhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZXNDb3VudDsgfQogCiAgICAgU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyJiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKSB7IHJldHVybiBtX3N0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0U3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyKFBhc3NSZWY8U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPik7CisgICAgdm9p
ZCBzZXRTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoUmVmPFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cj4mJik7CiAKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXIqIHVzZXJDb250ZW50Q29udHJvbGxl
cigpIHsgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXRVc2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVyKik7CiAKICAgICBW
aXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCk7Ci0gICAgdm9pZCBzZXRWaXNpdGVk
TGlua1N0b3JlKFBhc3NSZWY8VmlzaXRlZExpbmtTdG9yZT4pOworICAgIHZvaWQgc2V0VmlzaXRl
ZExpbmtTdG9yZShSZWY8VmlzaXRlZExpbmtTdG9yZT4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTZXNzaW9uSUQoU2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFu
ZGxlci5oCmluZGV4IDBmYzQ4OWMuLmIyY2RmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
TWVzc2FnZUhhbmRsZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFVzZXJNZXNzYWdlSGFuZGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJNZXNzYWdl
SGFuZGxlcj4sIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmPFVzZXJNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKEZyYW1lJiBmcmFtZSwg
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKKyAgICBzdGF0aWMgUmVm
PFVzZXJNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKEZyYW1lJiBmcmFtZSwgVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFVzZXJNZXNzYWdlSGFuZGxlcihmcmFtZSwgZGVzY3JpcHRvcikpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmgK
aW5kZXggODE4ZjE1NS4uMzZmOWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgRE9N
V3JhcHBlcldvcmxkOwogCiBjbGFzcyBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8VXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZT4sIHB1YmxpYyBGcmFt
ZURlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFVzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U+IGNyZWF0ZShGcmFtZSYgZnJhbWUpCisgICAgc3RhdGlj
IFJlZjxVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlPiBjcmVhdGUoRnJhbWUmIGZyYW1lKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZShmcmFtZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNDZhZWE2ZS4uNjEwOGJiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlOjphZGRFdmVudFRvRGlzcGF0Y2goUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LAog
ICAgIHN0YXJ0VXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXIoKTsKIH0KIAotdm9pZCBBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YWRkRWxlbWVudENoYW5nZVRvRGlzcGF0Y2goUGFzc1Jl
ZjxFbGVtZW50PiBlbGVtZW50KQordm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YWRk
RWxlbWVudENoYW5nZVRvRGlzcGF0Y2goUmVmPEVsZW1lbnQ+JiYgZWxlbWVudCkKIHsKICAgICBt
X2VsZW1lbnRDaGFuZ2VzVG9EaXNwYXRjaC5hcHBlbmQoV1RGOjptb3ZlKGVsZW1lbnQpKTsKICAg
ICBBU1NFUlQoIW1fZWxlbWVudENoYW5nZXNUb0Rpc3BhdGNoLmxhc3QoKS0+ZG9jdW1lbnQoKS5p
blBhZ2VDYWNoZSgpKTsKQEAgLTUyMiwyMCArNTIyLDIwIEBAIHZvaWQgQW5pbWF0aW9uQ29udHJv
bGxlcjo6Y2FuY2VsQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKICAgICAgICAg
ZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CiB9CiAK
LVBhc3NSZWY8UmVuZGVyU3R5bGU+IEFuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlv
bnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IG5ld1N0eWxl
KQorUmVmPFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25z
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZWY8UmVuZGVyU3R5bGU+JiYgbmV3U3R5bGUpCiB7
CiAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgd2UncmUgaW4gdGhlIGNhY2hlCiAgICAgaWYg
KHJlbmRlcmVyLmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSkKLSAgICAgICAgcmV0dXJuIG5ld1N0
eWxlOworICAgICAgICByZXR1cm4gV1RGOjptb3ZlKG5ld1N0eWxlKTsKIAogICAgIFJlbmRlclN0
eWxlKiBvbGRTdHlsZSA9IHJlbmRlcmVyLmhhc0luaXRpYWxpemVkU3R5bGUoKSA/ICZyZW5kZXJl
ci5zdHlsZSgpIDogbnVsbHB0cjsKIAogICAgIGlmICgoIW9sZFN0eWxlIHx8ICghb2xkU3R5bGUt
PmFuaW1hdGlvbnMoKSAmJiAhb2xkU3R5bGUtPnRyYW5zaXRpb25zKCkpKSAmJiAoIW5ld1N0eWxl
LmdldCgpLmFuaW1hdGlvbnMoKSAmJiAhbmV3U3R5bGUuZ2V0KCkudHJhbnNpdGlvbnMoKSkpCi0g
ICAgICAgIHJldHVybiBuZXdTdHlsZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bW92ZShuZXdTdHls
ZSk7CiAKICAgICAvLyBEb24ndCBydW4gdHJhbnNpdGlvbnMgd2hlbiBwcmludGluZy4KICAgICBp
ZiAocmVuZGVyZXIudmlldygpLnByaW50aW5nKCkpCi0gICAgICAgIHJldHVybiBuZXdTdHlsZTsK
KyAgICAgICAgcmV0dXJuIFdURjo6bW92ZShuZXdTdHlsZSk7CiAKICAgICAvLyBGZXRjaCBvdXIg
Y3VycmVudCBzZXQgb2YgaW1wbGljaXQgYW5pbWF0aW9ucyBmcm9tIGEgaGFzaHRhYmxlLiAgV2Ug
dGhlbiBjb21wYXJlIHRoZW0KICAgICAvLyBhZ2FpbnN0IHRoZSBhbmltYXRpb25zIGluIHRoZSBz
dHlsZSBhbmQgbWFrZSBzdXJlIHdlJ3JlIGluIHN5bmMuICBJZiBkZXN0aW5hdGlvbiB2YWx1ZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xs
ZXIuaAppbmRleCA5ODNiMzIzLi41ZWUzMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1
YmxpYzoKICAgICB+QW5pbWF0aW9uQ29udHJvbGxlcigpOwogCiAgICAgdm9pZCBjYW5jZWxBbmlt
YXRpb25zKFJlbmRlckVsZW1lbnQmKTsKLSAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiB1cGRhdGVB
bmltYXRpb25zKFJlbmRlckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiBuZXdTdHlsZSk7
CisgICAgUmVmPFJlbmRlclN0eWxlPiB1cGRhdGVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+JiYgbmV3U3R5bGUpOwogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IGdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJFbGVtZW50Jik7CiAKICAgICAvLyBU
aGlzIGlzIGNhbGxlZCB3aGVuIGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9u
IGhhcyBhY3R1YWxseSBzdGFydGVkIHRvIGFuaW1hdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaAppbmRl
eCA4NTg2ZGI4Li45OTBhZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTcxLDcgKzcxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXJGaXJlZCgp
OwogICAgIHZvaWQgc3RhcnRVcGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0Y2hlcigpOwogICAgIHZv
aWQgYWRkRXZlbnRUb0Rpc3BhdGNoKFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGVsYXBz
ZWRUaW1lKTsKLSAgICB2b2lkIGFkZEVsZW1lbnRDaGFuZ2VUb0Rpc3BhdGNoKFBhc3NSZWY8RWxl
bWVudD4pOworICAgIHZvaWQgYWRkRWxlbWVudENoYW5nZVRvRGlzcGF0Y2goUmVmPEVsZW1lbnQ+
JiYpOwogCiAgICAgYm9vbCBoYXNBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gIW1fY29tcG9z
aXRlQW5pbWF0aW9ucy5pc0VtcHR5KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKaW5kZXggZGQ1NWMyOC4uN2ZmN2U0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5p
bWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246
OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgUmVuZGUK
ICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbnMucmVtb3ZlKGFuaW1zVG9CZVJlbW92ZWRbal0p
OwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBDb21wb3NpdGVBbmltYXRpb246OmFuaW1hdGUo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRl
clN0eWxlJiB0YXJnZXRTdHlsZSkKK1JlZjxSZW5kZXJTdHlsZT4gQ29tcG9zaXRlQW5pbWF0aW9u
OjphbmltYXRlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogY3VycmVudFN0
eWxlLCBSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUpCiB7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxl
PiByZXN1bHRTdHlsZTsKIApAQCAtMzIyLDcgKzMyMiw5IEBAIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IENvbXBvc2l0ZUFuaW1hdGlvbjo6YW5pbWF0ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUmVu
ZGVyCiAgICAgICAgICAgICBrZXlmcmFtZUFuaW0tPmFuaW1hdGUodGhpcywgJnJlbmRlcmVyLCBj
dXJyZW50U3R5bGUsICZ0YXJnZXRTdHlsZSwgcmVzdWx0U3R5bGUpOwogICAgIH0KIAotICAgIHJl
dHVybiByZXN1bHRTdHlsZSA/IHJlc3VsdFN0eWxlLnJlbGVhc2VOb25OdWxsKCkgOiB0YXJnZXRT
dHlsZTsKKyAgICBpZiAocmVzdWx0U3R5bGUpCisgICAgICAgIHJldHVybiByZXN1bHRTdHlsZS5y
ZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiB0YXJnZXRTdHlsZTsKIH0KIAogUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gQ29tcG9zaXRlQW5pbWF0aW9uOjpnZXRBbmltYXRlZFN0eWxlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFu
aW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0
aW9uLmgKaW5kZXggMmNhMTM4MC4uMWMxNDNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVi
bGljOgogICAgIAogICAgIHZvaWQgY2xlYXJSZW5kZXJlcigpOwogCi0gICAgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gYW5pbWF0ZShSZW5kZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHls
ZSwgUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlKTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IGFuaW1h
dGUoUmVuZGVyRWxlbWVudCYsIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxl
JiB0YXJnZXRTdHlsZSk7CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gZ2V0QW5pbWF0ZWRT
dHlsZSgpIGNvbnN0OwogCiAgICAgZG91YmxlIHRpbWVUb05leHRTZXJ2aWNlKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGI5ZGZj
YTYuLjY0YzBjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0
aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFs
dWUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZjxDYWxjdWxhdGlvblZhbHVlPiBDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoc3RkOjp1bmlxdWVf
cHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVS
YW5nZSByYW5nZSkKK1JlZjxDYWxjdWxhdGlvblZhbHVlPiBDYWxjdWxhdGlvblZhbHVlOjpjcmVh
dGUoc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gdmFsdWUsIENhbGN1bGF0aW9u
UGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
YWxjdWxhdGlvblZhbHVlKFdURjo6bW92ZSh2YWx1ZSksIHJhbmdlKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKaW5kZXggNDQ4YTM1YS4uYjIyOGE0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaApAQCAtMTM2LDcg
KzEzNiw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIENhbGN1bGF0aW9uVmFsdWUgOiBwdWJsaWMgUmVm
Q291bnRlZDxDYWxjdWxhdGlvblZhbHVlPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFBhc3NSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxD
YWxjRXhwcmVzc2lvbk5vZGU+LCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlKHN0ZDo6
dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+LCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVl
UmFuZ2UpOwogICAgIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdDsKIAogICAg
IGJvb2wgc2hvdWxkQ2xhbXBUb05vbk5lZ2F0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRD
bGFtcFRvTm9uTmVnYXRpdmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmluZGV4IDZk
NWE2NWMuLjYyZDBiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMTU3LDcg
KzE1Nyw3IEBAIGNsYXNzIENhbGN1bGF0aW9uVmFsdWVNYXAgewogcHVibGljOgogICAgIENhbGN1
bGF0aW9uVmFsdWVNYXAoKTsKIAotICAgIHVuc2lnbmVkIGluc2VydChQYXNzUmVmPENhbGN1bGF0
aW9uVmFsdWU+KTsKKyAgICB1bnNpZ25lZCBpbnNlcnQoUmVmPENhbGN1bGF0aW9uVmFsdWU+JiYp
OwogICAgIHZvaWQgcmVmKHVuc2lnbmVkIGhhbmRsZSk7CiAgICAgdm9pZCBkZXJlZih1bnNpZ25l
ZCBoYW5kbGUpOwogCkBAIC0xOTIsNyArMTkyLDcgQEAgaW5saW5lIENhbGN1bGF0aW9uVmFsdWVN
YXA6OkNhbGN1bGF0aW9uVmFsdWVNYXAoKQogewogfQogICAgIAotaW5saW5lIHVuc2lnbmVkIENh
bGN1bGF0aW9uVmFsdWVNYXA6Omluc2VydChQYXNzUmVmPENhbGN1bGF0aW9uVmFsdWU+IHZhbHVl
KQoraW5saW5lIHVuc2lnbmVkIENhbGN1bGF0aW9uVmFsdWVNYXA6Omluc2VydChSZWY8Q2FsY3Vs
YXRpb25WYWx1ZT4mJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9uZXh0QXZhaWxhYmxlSGFuZGxl
KTsKIApAQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyBDYWxjdWxhdGlvblZhbHVlTWFwJiBjYWxj
dWxhdGlvblZhbHVlcygpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotTGVuZ3RoOjpMZW5ndGgoUGFz
c1JlZjxDYWxjdWxhdGlvblZhbHVlPiB2YWx1ZSkKK0xlbmd0aDo6TGVuZ3RoKFJlZjxDYWxjdWxh
dGlvblZhbHVlPiYmIHZhbHVlKQogICAgIDogbV9oYXNRdWlyayhmYWxzZSkKICAgICAsIG1fdHlw
ZShDYWxjdWxhdGVkKQogICAgICwgbV9pc0Zsb2F0KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGguaAppbmRleCBiNGM2OGY4Li4wYWU1ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoKGZsb2F0IHZhbHVlLCBMZW5ndGhU
eXBlLCBib29sIGhhc1F1aXJrID0gZmFsc2UpOwogICAgIExlbmd0aChkb3VibGUgdmFsdWUsIExl
bmd0aFR5cGUsIGJvb2wgaGFzUXVpcmsgPSBmYWxzZSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBMZW5ndGgoUGFzc1JlZjxDYWxjdWxhdGlvblZhbHVlPik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgTGVuZ3RoKFJlZjxDYWxjdWxhdGlvblZhbHVlPiYmKTsKIAogICAgIExl
bmd0aChjb25zdCBMZW5ndGgmKTsKICAgICBMZW5ndGgoTGVuZ3RoJiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCAzOTIzMGM4Li44OTBiNjhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNTAsNyArNTAsNyBA
QCB0ZW1wbGF0ZSA8PiB2b2lkIGRlbGV0ZU93bmVkUHRyPFdlYkNvcmU6OlRleHRMYXlvdXQ+KFdl
YkNvcmU6OlRleHRMYXlvdXQqIHB0cikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
UGFzc1JlZjxGb250R2x5cGhzPiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udEdseXBocyhjb25zdCBG
b250RGVzY3JpcHRpb24mLCBQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4pOworc3RhdGljIFJlZjxG
b250R2x5cGhzPiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udEdseXBocyhjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4pOwogCiBjb25zdCB1aW50OF90IEZvbnQ6
OnNfcm91bmRpbmdIYWNrQ2hhcmFjdGVyVGFibGVbMjU2XSA9IHsKICAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAxIC8qXHQqLywgMSAvKlxuKi8sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCkBAIC0yMTUsNyArMjE1LDEw
IEBAIHN0cnVjdCBGb250R2x5cGhzQ2FjaGVLZXkgewogc3RydWN0IEZvbnRHbHlwaHNDYWNoZUVu
dHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBGb250R2x5
cGhzQ2FjaGVFbnRyeShGb250R2x5cGhzQ2FjaGVLZXkmJiBrLCBQYXNzUmVmPEZvbnRHbHlwaHM+
IGcpIDoga2V5KFdURjo6bW92ZShrKSksIGdseXBocyhXVEY6Om1vdmUoZykpIHsgfQorICAgIEZv
bnRHbHlwaHNDYWNoZUVudHJ5KEZvbnRHbHlwaHNDYWNoZUtleSYmIGssIFJlZjxGb250R2x5cGhz
PiYmIGcpCisgICAgICAgIDoga2V5KFdURjo6bW92ZShrKSkKKyAgICAgICAgLCBnbHlwaHMoV1RG
Ojptb3ZlKGcpKQorICAgIHsgfQogICAgIEZvbnRHbHlwaHNDYWNoZUtleSBrZXk7CiAgICAgUmVm
PEZvbnRHbHlwaHM+IGdseXBoczsKIH07CkBAIC0yOTYsNyArMjk5LDcgQEAgdm9pZCBwcnVuZVVu
cmVmZXJlbmNlZEVudHJpZXNGcm9tRm9udEdseXBoc0NhY2hlKCkKICAgICAgICAgZm9udEdseXBo
c0NhY2hlKCkucmVtb3ZlKHRvUmVtb3ZlW2ldKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Rm9udEds
eXBocz4gcmV0cmlldmVPckFkZENhY2hlZEZvbnRHbHlwaHMoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3JpcHRpb24sIFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3Ip
CitzdGF0aWMgUmVmPEZvbnRHbHlwaHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250R2x5cGhzKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBQYXNzUmVmUHRyPEZvbnRTZWxl
Y3Rvcj4gZm9udFNlbGVjdG9yKQogewogICAgIEZvbnRHbHlwaHNDYWNoZUtleSBrZXk7CiAgICAg
bWFrZUZvbnRHbHlwaHNDYWNoZUtleShrZXksIGZvbnREZXNjcmlwdGlvbiwgZm9udFNlbGVjdG9y
LmdldCgpKTsKQEAgLTMwOCw3ICszMTEsNyBAQCBzdGF0aWMgUGFzc1JlZjxGb250R2x5cGhzPiBy
ZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udEdseXBocyhjb25zdCBGb250RGVzY3JpcHRpb24mCiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEdseXBoc0NhY2hlRW50cnk+JiBuZXdFbnRyeSA9IGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgbmV3RW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEZv
bnRHbHlwaHNDYWNoZUVudHJ5PihXVEY6Om1vdmUoa2V5KSwgRm9udEdseXBoczo6Y3JlYXRlKGZv
bnRTZWxlY3RvcikpOwotICAgIFBhc3NSZWY8Rm9udEdseXBocz4gZ2x5cGhzID0gbmV3RW50cnkt
PmdseXBocy5nZXQoKTsKKyAgICBSZWY8Rm9udEdseXBocz4gZ2x5cGhzID0gbmV3RW50cnktPmds
eXBocy5nZXQoKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bnJlZmVyZW5jZWRQcnVu
ZUludGVydmFsID0gNTA7CiAgICAgc3RhdGljIGNvbnN0IGludCBtYXhpbXVtRW50cmllcyA9IDQw
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlw
aHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaAppbmRl
eCAzODY2MzVmLi5jYWVlNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250R2x5cGhzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udEdseXBocy5oCkBAIC02OCw4ICs2OCw4IEBAIHB1YmxpYzoKICAgICAgICAgR2x5cGhQ
YWdlVHJlZU5vZGUqIG1fcGFnZVplcm87CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmPEZv
bnRHbHlwaHM+IGNyZWF0ZShQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnRHbHlwaHMoZm9udFNlbGVjdG9yKSk7IH0KLSAgICBz
dGF0aWMgUGFzc1JlZjxGb250R2x5cGhzPiBjcmVhdGVGb3JQbGF0Zm9ybUZvbnQoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnRH
bHlwaHMocGxhdGZvcm1EYXRhKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZvbnRHbHlwaHM+IGNyZWF0
ZShQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEZvbnRHbHlwaHMoZm9udFNlbGVjdG9yKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZvbnRH
bHlwaHM+IGNyZWF0ZUZvclBsYXRmb3JtRm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udEdseXBocyhwbGF0Zm9ybURhdGEp
KTsgfQogCiAgICAgfkZvbnRHbHlwaHMoKSB7IHJlbGVhc2VGb250RGF0YSgpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCmluZGV4IDQ4NGQ2MDQuLmE0
MjEzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaApA
QCAtNTcsMTEgKzU3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEdyYWRp
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmPEdyYWRpZW50PiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgcDAsIGNv
bnN0IEZsb2F0UG9pbnQmIHAxKQorICAgICAgICBzdGF0aWMgUmVmPEdyYWRpZW50PiBjcmVhdGUo
Y29uc3QgRmxvYXRQb2ludCYgcDAsIGNvbnN0IEZsb2F0UG9pbnQmIHAxKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFkaWVudChwMCwgcDEpKTsKICAgICAg
ICAgfQotICAgICAgICBzdGF0aWMgUGFzc1JlZjxHcmFkaWVudD4gY3JlYXRlKGNvbnN0IEZsb2F0
UG9pbnQmIHAwLCBmbG9hdCByMCwgY29uc3QgRmxvYXRQb2ludCYgcDEsIGZsb2F0IHIxLCBmbG9h
dCBhc3BlY3RSYXRpbyA9IDEpCisgICAgICAgIHN0YXRpYyBSZWY8R3JhZGllbnQ+IGNyZWF0ZShj
b25zdCBGbG9hdFBvaW50JiBwMCwgZmxvYXQgcjAsIGNvbnN0IEZsb2F0UG9pbnQmIHAxLCBmbG9h
dCByMSwgZmxvYXQgYXNwZWN0UmF0aW8gPSAxKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBHcmFkaWVudChwMCwgcjAsIHAxLCByMSwgYXNwZWN0UmF0aW8pKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNzM2YjhmZC4uNDc0OTFkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0z
MzUsMjUgKzMzNSwyNSBAQCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgR3JhcGhpY3NDb250
ZXh0OjpzdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFBhc3NSZWY8UGF0dGVybj4gcGF0dGVybikKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRl
cm4pCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VHcmFkaWVudC5jbGVhcigpOwogICAgIG1fc3RhdGUu
c3Ryb2tlUGF0dGVybiA9IFdURjo6bW92ZShwYXR0ZXJuKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldEZpbGxQYXR0ZXJuKFBhc3NSZWY8UGF0dGVybj4gcGF0dGVybikKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKQogewog
ICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50LmNsZWFyKCk7CiAgICAgbV9zdGF0ZS5maWxsUGF0dGVy
biA9IFdURjo6bW92ZShwYXR0ZXJuKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0
cm9rZUdyYWRpZW50KFBhc3NSZWY8R3JhZGllbnQ+IGdyYWRpZW50KQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCkKIHsKICAg
ICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RGOjptb3ZlKGdyYWRpZW50KTsKICAgICBtX3N0
YXRlLnN0cm9rZVBhdHRlcm4uY2xlYXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dEZpbGxHcmFkaWVudChQYXNzUmVmPEdyYWRpZW50PiBncmFkaWVudCkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50KQogewogICAg
IG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gV1RGOjptb3ZlKGdyYWRpZW50KTsKICAgICBtX3N0YXRl
LmZpbGxQYXR0ZXJuLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDEzZTNhNWQuLjBlZjRiZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0yMzQsMTAgKzIzNCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENvbG9yU3Bh
Y2Ugc3Ryb2tlQ29sb3JTcGFjZSgpIGNvbnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAKLSAgICAgICAgdm9p
ZCBzZXRTdHJva2VQYXR0ZXJuKFBhc3NSZWY8UGF0dGVybj4pOworICAgICAgICB2b2lkIHNldFN0
cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwogICAgICAgICBQYXR0ZXJuKiBzdHJva2VQYXR0
ZXJuKCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChQYXNzUmVmPEdy
YWRpZW50Pik7CisgICAgICAgIHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYm
KTsKICAgICAgICAgR3JhZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3Q7CiAKICAgICAgICAg
V2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdDsKQEAgLTI0NiwxMCArMjQ2LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSgpIGNvbnN0Owog
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYsIENv
bG9yU3BhY2UpOwogCi0gICAgICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUGFzc1JlZjxQYXR0ZXJu
Pik7CisgICAgICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwogICAgICAg
ICBQYXR0ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0OwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0RmlsbEdyYWRpZW50KFBhc3NSZWY8R3JhZGllbnQ+KTsKKyAgICAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmKTsKICAgICAgICAg
R3JhZGllbnQqIGZpbGxHcmFkaWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0U2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oCmluZGV4IGYyMDUz
OGMuLmJiNWNjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU291cmNlUHJp
dmF0ZUNsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVBbmRPcGVuKFBh
c3NSZWY8TWVkaWFTb3VyY2VQcml2YXRlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcml2
YXRlQW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmKSA9IDA7CiAgICAgdmlydHVhbCBN
ZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCmluZGV4IDllMTE0YzYuLmE5YWNjYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCkBAIC0zMSw3
ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZjxQYXR0ZXJuPiBQYXR0
ZXJuOjpjcmVhdGUoUGFzc1JlZlB0cjxJbWFnZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJv
b2wgcmVwZWF0WSkKK1JlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUGFzc1JlZlB0cjxJbWFn
ZT4gdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQYXR0ZXJuKHRpbGVJbWFnZSwgcmVwZWF0WCwgcmVwZWF0WSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCmluZGV4IGY0MjUyNWQu
LjNlZGFmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgK
QEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSW1hZ2U7CiAKIGNsYXNzIFBhdHRlcm4gZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8
UGF0dGVybj4gY3JlYXRlKFBhc3NSZWZQdHI8SW1hZ2U+IHRpbGVJbWFnZSwgYm9vbCByZXBlYXRY
LCBib29sIHJlcGVhdFkpOworICAgIHN0YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFBhc3NSZWZQ
dHI8SW1hZ2U+IHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwogICAgIH5Q
YXR0ZXJuKCk7CiAKICAgICBJbWFnZSogdGlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxl
SW1hZ2UuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgKaW5kZXggNjRl
ZDU0Ni4uNzkyNjJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb25NYWMgOiBwdWJsaWMgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b24gewogcHVibGljOgogICAgIHZpcnR1YWwgflNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uTWFjKCk7Ci0gICAgc3RhdGljIFBhc3NSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb24+IGNyZWF0ZShpZCk7CisgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXBy
ZXNlbnRhdGlvbj4gY3JlYXRlKGlkKTsKIAogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGRlc2Vy
aWFsaXplKEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb25NYWMubW0KaW5kZXggOGQ2MmFiNi4uYTY3NjBhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbQpAQCAtNzEsNyArNzEsNyBAQCBTZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6flNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
TWFjKCkKIHsKIH0KIAotUGFzc1JlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4g
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWM6OmNyZWF0ZShpZCBuYXRpdmVWYWx1
ZSkKK1JlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWM6OmNyZWF0ZShpZCBuYXRpdmVWYWx1ZSkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYyhuYXRp
dmVWYWx1ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9V
c2VyTWVkaWFDbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1VzZXJN
ZWRpYUNsaWVudE1vY2suaAppbmRleCA5MjdhYzc3Li5jZjE2OGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1VzZXJNZWRpYUNsaWVudE1vY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1VzZXJNZWRpYUNsaWVudE1vY2suaApAQCAtMzYsNyAr
MzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFVzZXJNZWRpYUNsaWVudFJlcXVl
c3ROb3RpZmllciA6IHB1YmxpYyBNb2NrTm90aWZpZXIgewogcHVibGljOgotICAgIFVzZXJNZWRp
YUNsaWVudFJlcXVlc3ROb3RpZmllcihQYXNzUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3Qs
IGJvb2wgcmVxdWVzdFN1Y2Nlc3MpCisgICAgVXNlck1lZGlhQ2xpZW50UmVxdWVzdE5vdGlmaWVy
KFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiYmIHJlcXVlc3QsIGJvb2wgcmVxdWVzdFN1Y2Nlc3MpCiAg
ICAgICAgIDogbV9yZXF1ZXN0KFdURjo6bW92ZShyZXF1ZXN0KSkKICAgICAgICAgLCBtX3JlcXVl
c3RTdWNjZXNzKHJlcXVlc3RTdWNjZXNzKQogICAgIHsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpIG92ZXJyaWRl
IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFBhc3NSZWY8VXNlck1l
ZGlhUmVxdWVzdD4gcmVxdWVzdCkgb3ZlcnJpZGUKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBl
cm1pc3Npb24oUmVmPFVzZXJNZWRpYVJlcXVlc3Q+JiYgcmVxdWVzdCkgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIFJlZlB0cjxVc2VyTWVkaWFDbGllbnRSZXF1ZXN0Tm90aWZpZXI+IG5vdGlmaWVy
ID0gYWRvcHRSZWYobmV3IFVzZXJNZWRpYUNsaWVudFJlcXVlc3ROb3RpZmllcihXVEY6Om1vdmUo
cmVxdWVzdCksIHRydWUpKTsKICAgICAgICAgbV90aW1lckV2ZW50cy5hcHBlbmQoYWRvcHRSZWYo
bmV3IFRpbWVyRXZlbnQodGhpcywgbm90aWZpZXIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCmluZGV4IGMxYjgyOTguLmI5MDkwNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCkBAIC05Niw3ICs5Niw3
IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24gZmluYWwgOiBwdWJs
aWMgQ2xpcFBhdGhPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNo
YXBlQ2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmPEJhc2ljU2hhcGU+IHNoYXBlKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0ZShSZWY8
QmFzaWNTaGFwZT4mJiBzaGFwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2hhcGVDbGlwUGF0aE9wZXJhdGlvbihXVEY6Om1vdmUoc2hhcGUpKSk7CiAgICAgfQpAQCAtMTIy
LDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX3NoYXBlLnB0cigpID09IHNo
YXBlQ2xpcC5tX3NoYXBlLnB0cigpOwogICAgIH0KIAotICAgIGV4cGxpY2l0IFNoYXBlQ2xpcFBh
dGhPcGVyYXRpb24oUGFzc1JlZjxCYXNpY1NoYXBlPiBzaGFwZSkKKyAgICBleHBsaWNpdCBTaGFw
ZUNsaXBQYXRoT3BlcmF0aW9uKFJlZjxCYXNpY1NoYXBlPiYmIHNoYXBlKQogICAgICAgICA6IENs
aXBQYXRoT3BlcmF0aW9uKFNoYXBlKQogICAgICAgICAsIG1fc2hhcGUoV1RGOjptb3ZlKHNoYXBl
KSkKICAgICAgICAgLCBtX3JlZmVyZW5jZUJveChCb3hNaXNzaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggN2I0YTg0MS4uN2ZlNmIwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faGFkVmVydGljYWxMYXlvdXRPdmVyZmxvdzsKIH07CiAKLVJlbmRl
ckJsb2NrOjpSZW5kZXJCbG9jayhFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKK1JlbmRlckJsb2NrOjpSZW5kZXJCbG9j
ayhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIHVuc2lnbmVkIGJh
c2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwg
YmFzZVR5cGVGbGFncyB8IFJlbmRlckJsb2NrRmxhZykKICAgICAsIG1fbGluZUhlaWdodCgtMSkK
ICAgICAsIG1faGFzTWFyZ2luQmVmb3JlUXVpcmsoZmFsc2UpCkBAIC0xOTIsNyArMTkyLDcgQEAg
UmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlLCB1bnNpZ25lZAogewogfQogCi1SZW5kZXJCbG9jazo6UmVuZGVyQmxvY2so
RG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQg
YmFzZVR5cGVGbGFncykKK1JlbmRlckJsb2NrOjpSZW5kZXJCbG9jayhEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKICAg
ICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncyB8
IFJlbmRlckJsb2NrRmxhZykKICAgICAsIG1fbGluZUhlaWdodCgtMSkKICAgICAsIG1faGFzTWFy
Z2luQmVmb3JlUXVpcmsoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CmluZGV4IGYxODlkOWQuLjAzMjczZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTGluZUxh
eW91dFN0YXRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyQmxvY2soRWxlbWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKLSAgICBSZW5kZXJCbG9j
ayhEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdz
KTsKKyAgICBSZW5kZXJCbG9jayhFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCB1bnNpZ25l
ZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCbG9jayhEb2N1bWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CiAgICAgdmlydHVhbCB+UmVuZGVyQmxv
Y2soKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcAppbmRleCBhMmMyMDc5Li4xYTM3MDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtOTEsNyArOTEsNyBAQCBSZW5kZXJCbG9ja0Zs
b3c6Ok1hcmdpbkluZm86Ok1hcmdpbkluZm8oUmVuZGVyQmxvY2tGbG93JiBibG9jaywgTGF5b3V0
VW5pdCBiZWZvcgogICAgIG1fbmVnYXRpdmVNYXJnaW4gPSAobV9jYW5Db2xsYXBzZU1hcmdpbkJl
Zm9yZVdpdGhDaGlsZHJlbiAmJiAhYmxvY2subXVzdERpc2NhcmRNYXJnaW5CZWZvcmUoKSkgPyBi
bG9jay5tYXhOZWdhdGl2ZU1hcmdpbkJlZm9yZSgpIDogTGF5b3V0VW5pdCgpOwogfQogCi1SZW5k
ZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvdyhFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93KEVsZW1l
bnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2Nr
KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIFJlbmRlckJsb2NrRmxvd0ZsYWcpCiAjaWYgRU5B
QkxFKElPU19URVhUX0FVVE9TSVpJTkcpCiAgICAgLCBtX3dpZHRoRm9yVGV4dEF1dG9zaXppbmco
LTEpCkBAIC0xMDEsNyArMTAxLDcgQEAgUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3co
RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgc2V0Q2hp
bGRyZW5JbmxpbmUodHJ1ZSk7CiB9CiAKLVJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93
KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJC
bG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5
bGUpLCBSZW5kZXJCbG9ja0Zsb3dGbGFnKQogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5H
KQogICAgICwgbV93aWR0aEZvclRleHRBdXRvc2l6aW5nKC0xKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IGY2MjAzNjYuLmM0MDUyNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTU0LDggKzU0LDggQEAg
ZW51bSBMaW5lQ291bnQgewogCiBjbGFzcyBSZW5kZXJCbG9ja0Zsb3cgOiBwdWJsaWMgUmVuZGVy
QmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckJsb2NrRmxvdyhFbGVtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlckJsb2NrRmxvdyhEb2N1bWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJCbG9ja0Zsb3coRWxlbWVudCYsIFJlZjxSZW5kZXJTdHls
ZT4mJik7CisgICAgUmVuZGVyQmxvY2tGbG93KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJCbG9ja0Zsb3coKTsKICAgICAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAppbmRleCBlNGUwMDFiLi5mMzE0ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBib29sIHNraXBCb2R5QmFj
a2dyb3VuZChjb25zdCBSZW5kZXJCb3gqIGJvZHlFbGVtZW50UmVuZGVyZXIpCiAgICAgICAgICYm
IChkb2N1bWVudEVsZW1lbnRSZW5kZXJlciA9PSBib2R5RWxlbWVudFJlbmRlcmVyLT5wYXJlbnQo
KSk7CiB9CiAKLVJlbmRlckJveDo6UmVuZGVyQm94KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQorUmVuZGVyQm94OjpS
ZW5kZXJCb3goRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCB1bnNp
Z25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZWxlbWVudCwg
V1RGOjptb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncykKICAgICAsIG1fbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoKC0xKQogICAgICwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCkBAIC0x
MjAsNyArMTIwLDcgQEAgUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxlbWVudCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2UKICAgICBzZXRJc0JveCgpOwog
fQogCi1SZW5kZXJCb3g6OlJlbmRlckJveChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQorUmVuZGVyQm94OjpSZW5k
ZXJCb3goRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIHVuc2ln
bmVkIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChkb2N1bWVudCwg
V1RGOjptb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncykKICAgICAsIG1fbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoKC0xKQogICAgICwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggYzc5NzY5NC4uYjU0OGRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNjE1LDggKzYxNSw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNMYXlvdXRBZnRlclJlZ2lvblJhbmdlQ2hhbmdlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckJveChFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOwotICAgIFJl
bmRlckJveChEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlw
ZUZsYWdzKTsKKyAgICBSZW5kZXJCb3goRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwgdW5z
aWduZWQgYmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyQm94KERvY3VtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKIAogICAgIHZpcnR1YWwgdm9pZCBz
dHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBmYmRk
N2YyLi5kZGRlNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKQEAgLTE3MiwxMiArMTcyLDEyIEBAIGJvb2wgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgSW1hCiAgICAgcmV0dXJuIHZpZXcoKS5pbWFnZVF1YWxpdHlDb250cm9sbGVyKCkuc2hvdWxk
UGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcywgaW1hZ2UsIGxheWVyLCBzaXplKTsKIH0K
IAotUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KEVsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdz
KQorUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KEVsZW1lbnQmIGVs
ZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykK
ICAgICA6IFJlbmRlckxheWVyTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwg
YmFzZVR5cGVGbGFncyB8IFJlbmRlckJveE1vZGVsT2JqZWN0RmxhZykKIHsKIH0KIAotUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KERvY3VtZW50JiBkb2N1bWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCitSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCiAgICAg
OiBSZW5kZXJMYXllck1vZGVsT2JqZWN0KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNl
VHlwZUZsYWdzIHwgUmVuZGVyQm94TW9kZWxPYmplY3RGbGFnKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCA0ZjBjZDUyMC4u
MjRjMDgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmgKQEAgLTI1MSw4ICsyNTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kQW5p
bWF0aW9ucyhkb3VibGUgdGltZSA9IDApOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlw
ZUZsYWdzKTsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdz
KTsKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4m
JiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVz
dHJveWVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5jcHAKaW5kZXggOGQzYTEwZS4uMmVmY2VkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJ1dHRvbi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJCdXR0b246OlJlbmRlckJ1dHRv
bihIVE1MRm9ybUNvbnRyb2xFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlckJ1dHRvbjo6UmVuZGVyQnV0dG9uKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQm
IGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxl
Qm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2J1dHRvblRleHQoMCkKICAg
ICAsIG1faW5uZXIoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAppbmRl
eCA3MDEwN2E5Li5mZDc4MjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIC8vIHRvIGRh
dGUgYXMgdGhlIGJ1dHRvbiBjaGFuZ2VzLgogY2xhc3MgUmVuZGVyQnV0dG9uIGZpbmFsIDogcHVi
bGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJCdXR0b24oSFRNTEZv
cm1Db250cm9sRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJCdXR0
b24oSFRNTEZvcm1Db250cm9sRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmly
dHVhbCB+UmVuZGVyQnV0dG9uKCk7CiAKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50JiBmb3Jt
Q29udHJvbEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggMDE0NTViYi4uNWRi
YWExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAg
IGludCBtX29yZGluYWxJdGVyYXRpb247CiB9OwogCi1SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3g6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6UmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDAp
CiB7CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUoZmFsc2UpOyAvLyBBbGwgb2Ygb3VyIGNoaWxkcmVu
IG11c3QgYmUgYmxvY2stbGV2ZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaAppbmRleCAwNWE5YjBmLi44YWRkMjA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveC5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIEZsZXhCb3hJdGVyYXRvcjsKIAog
Y2xhc3MgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IGZpbmFsIDogcHVibGljIFJlbmRlckJs
b2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goRWxlbWVudCYs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3go
RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94KCk7CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCmluZGV4IGFlNTg4
MGEuLmNlZjM0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJE
ZXRhaWxzTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0
YWlsc01hcmtlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJEZXRhaWxzTWFya2VyOjpSZW5kZXJE
ZXRhaWxzTWFya2VyKERldGFpbHNNYXJrZXJDb250cm9sJiBlbGVtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlckRldGFpbHNNYXJrZXI6OlJlbmRlckRldGFpbHNNYXJrZXIo
RGV0YWlsc01hcmtlckNvbnRyb2wmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
ICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgKaW5kZXgg
ZDNhZWFiZS4uYzc4MWQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRldGFpbHNNYXJrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RGV0YWlsc01hcmtlci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUmVuZGVyRGV0YWlsc01hcmtlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cg
ewogcHVibGljOgotICAgIFJlbmRlckRldGFpbHNNYXJrZXIoRGV0YWlsc01hcmtlckNvbnRyb2wm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyRGV0YWlsc01hcmtlcihEZXRhaWxz
TWFya2VyQ29udHJvbCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgRGV0YWlsc01hcmtlckNv
bnRyb2wmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXRhaWxzTWFya2Vy
Q29udHJvbCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogICAgIGVudW0gT3JpZW50YXRp
b24geyBVcCwgRG93biwgTGVmdCwgUmlnaHQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcAppbmRleCA4ZGI2ODM1Li4yMjVhMTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyBI
YXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIENvbnRyb2xTdGF0ZXMqPiYgY29udHJvbFN0YXRl
c1JlbmRlcmVyTWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1pbmxpbmUgUmVuZGVyRWxlbWVu
dDo6UmVuZGVyRWxlbWVudChDb250YWluZXJOb2RlJiBlbGVtZW50T3JEb2N1bWVudCwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCitpbmxpbmUgUmVu
ZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChDb250YWluZXJOb2RlJiBlbGVtZW50T3JEb2N1bWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAg
IDogUmVuZGVyT2JqZWN0KGVsZW1lbnRPckRvY3VtZW50KQogICAgICwgbV9iYXNlVHlwZUZsYWdz
KGJhc2VUeXBlRmxhZ3MpCiAgICAgLCBtX2FuY2VzdG9yTGluZUJveERpcnR5KGZhbHNlKQpAQCAt
OTcsMTIgKzk3LDEyIEBAIGlubGluZSBSZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KENvbnRh
aW5lck5vZGUmIGVsZW1lbnRPckRvY3VtZW50LCBQYXNzUmVmPFJlCiB7CiB9CiAKLVJlbmRlckVs
ZW1lbnQ6OlJlbmRlckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJFbGVtZW50OjpSZW5kZXJF
bGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgdW5zaWdu
ZWQgYmFzZVR5cGVGbGFncykKICAgICA6IFJlbmRlckVsZW1lbnQoc3RhdGljX2Nhc3Q8Q29udGFp
bmVyTm9kZSY+KGVsZW1lbnQpLCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQogewog
fQogCi1SZW5kZXJFbGVtZW50OjpSZW5kZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCitSZW5kZXJF
bGVtZW50OjpSZW5kZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQogICAgIDogUmVuZGVyRWxlbWVudChz
dGF0aWNfY2FzdDxDb250YWluZXJOb2RlJj4oZG9jdW1lbnQpLCBXVEY6Om1vdmUoc3R5bGUpLCBi
YXNlVHlwZUZsYWdzKQogewogfQpAQCAtMTM5LDcgKzEzOSw3IEBAIFJlbmRlckVsZW1lbnQ6On5S
ZW5kZXJFbGVtZW50KCkKICAgICAgICAgdmlldygpLnJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZElt
YWdlQW5pbWF0aW9ucygqdGhpcyk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSZW5k
ZXJFbGVtZW50OjpjcmVhdGVGb3IoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmVuZGVyRWxlbWVudDo6Y3JlYXRl
Rm9yKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICAv
LyBNaW5pbWFsIHN1cHBvcnQgZm9yIGNvbnRlbnQgcHJvcGVydGllcyByZXBsYWNpbmcgYW4gZW50
aXJlIGVsZW1lbnQuCiAgICAgLy8gV29ya3Mgb25seSBpZiB3ZSBoYXZlIGV4YWN0bHkgb25lIHBp
ZWNlIG9mIGNvbnRlbnQgYW5kIGl0J3MgYSBVUkwuCkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBS
ZW5kZXJFbGVtZW50Ojppbml0aWFsaXplU3R5bGUoKQogICAgIC8vIGhhdmUgdGhlaXIgcGFyZW50
IHNldCBiZWZvcmUgZ2V0dGluZyBhIGNhbGwgdG8gaW5pdGlhbGl6ZVN0eWxlKCkgOnwKIH0KIAot
dm9pZCBSZW5kZXJFbGVtZW50OjpzZXRTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K3ZvaWQgUmVuZGVyRWxlbWVudDo6c2V0U3R5bGUoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQog
ewogICAgIC8vIEZJWE1FOiBTaG91bGQgY2hhbmdlIFJlbmRlclZpZXcgc28gaXQgY2FuIHVzZSBp
bml0aWFsaXplU3R5bGUgdG9vLgogICAgIC8vIElmIHdlIGRvIHRoYXQsIHdlIGNhbiBhc3NlcnQg
bV9oYXNJbml0aWFsaXplZFN0eWxlIHVuY29uZGl0aW9uYWxseSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDY2NGFjM2IuLmMzMGNjZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBS
ZW5kZXJFbGVtZW50IDogcHVibGljIFJlbmRlck9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UmVuZGVyRWxlbWVudCgpOwogCi0gICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVGb3IoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBzdGF0aWMg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUZvcihFbGVtZW50JiwgUmVmPFJlbmRlclN0
eWxlPiYmKTsKIAogICAgIGJvb2wgaGFzSW5pdGlhbGl6ZWRTdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzSW5pdGlhbGl6ZWRTdHlsZTsgfQogCkBAIC00Myw5ICs0Myw5IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgaW5pdGlhbGl6ZVN0eWxlKCk7CiAKLSAgICB2b2lkIHNldFN0eWxlKFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKKyAgICB2b2lkIHNldFN0eWxlKFJlZjxSZW5kZXJTdHlsZT4mJik7CiAg
ICAgLy8gQ2FsbGVkIHRvIHVwZGF0ZSBhIHN0eWxlIHRoYXQgaXMgYWxsb3dlZCB0byB0cmlnZ2Vy
IGFuaW1hdGlvbnMuCi0gICAgdm9pZCBzZXRBbmltYXRhYmxlU3R5bGUoUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOworICAgIHZvaWQgc2V0QW5pbWF0YWJsZVN0eWxlKFJlZjxSZW5kZXJTdHlsZT4mJik7
CiAKICAgICAvLyBUaGUgcHNldWRvIGVsZW1lbnQgc3R5bGUgY2FuIGJlIGNhY2hlZCBvciB1bmNh
Y2hlZC4gIFVzZSB0aGUgY2FjaGVkIG1ldGhvZCBpZiB0aGUgcHNldWRvIGVsZW1lbnQgZG9lc24n
dCByZXNwZWN0CiAgICAgLy8gYW55IHBzZXVkbyBjbGFzc2VzIChhbmQgdGhlcmVmb3JlIGhhcyBu
byBjb25jZXB0IG9mIGNoYW5naW5nIHN0YXRlKS4KQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBVcGRhdGVzIG9ubHkgdGhlIGxvY2FsIHN0eWxlIHB0ciBvZiB0aGUgb2JqZWN0
LiBEb2VzIG5vdCB1cGRhdGUgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3QsCiAgICAgLy8gYW5kIHNv
IG9ubHkgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBzdHlsZSBpcyBrbm93biBub3QgdG8gaGF2
ZSBjaGFuZ2VkIChvciBmcm9tIHNldFN0eWxlKS4KLSAgICB2b2lkIHNldFN0eWxlSW50ZXJuYWwo
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpIHsgbV9zdHlsZSA9IFdURjo6bW92ZShzdHlsZSk7
IH0KKyAgICB2b2lkIHNldFN0eWxlSW50ZXJuYWwoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKSB7
IG1fc3R5bGUgPSBXVEY6Om1vdmUoc3R5bGUpOyB9CiAKICAgICAvLyBSZXBhaW50IG9ubHkgaWYg
b3VyIG9sZCBib3VuZHMgYW5kIG5ldyBib3VuZHMgYXJlIGRpZmZlcmVudC4gVGhlIGNhbGxlciBt
YXkgcGFzcyBpbiBuZXdCb3VuZHMgYW5kIG5ld091dGxpbmVCb3ggaWYgdGhleSBhcmUga25vd24u
CiAgICAgYm9vbCByZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBvbGRCb3VuZHMs
IGNvbnN0IExheW91dFJlY3QmIG9sZE91dGxpbmVCb3gsIGNvbnN0IExheW91dFJlY3QqIG5ld0Jv
dW5kc1B0ciA9IG51bGxwdHIsIGNvbnN0IExheW91dFJlY3QqIG5ld091dGxpbmVCb3hQdHIgPSBu
dWxscHRyKTsKQEAgLTIwMSw4ICsyMDEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFJlbmRlckJs
b2NrRmxvd0ZsYWcgPSAxIDw8IDUsCiAgICAgfTsKIAotICAgIFJlbmRlckVsZW1lbnQoRWxlbWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKLSAgICBS
ZW5kZXJFbGVtZW50KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVkIGJh
c2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckVsZW1lbnQoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHls
ZT4mJiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyRWxlbWVudChEb2N1bWVu
dCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CiAKICAgICBi
b29sIGxheWVyQ3JlYXRpb25BbGxvd2VkRm9yU3VidHJlZSgpIGNvbnN0OwogCkBAIC0yMzUsNyAr
MjM1LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGFkZENvbnRyb2xTdGF0ZXNGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqLCBDb250cm9sU3RhdGVzKik7CiAKIHByaXZhdGU6
Ci0gICAgUmVuZGVyRWxlbWVudChDb250YWluZXJOb2RlJiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4s
IHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckVsZW1lbnQoQ29udGFpbmVyTm9k
ZSYsIFJlZjxSZW5kZXJTdHlsZT4mJiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CiAgICAgdm9p
ZCBub2RlKCkgY29uc3QgPSBkZWxldGU7CiAgICAgdm9pZCBub25Qc2V1ZG9Ob2RlKCkgY29uc3Qg
PSBkZWxldGU7CiAgICAgdm9pZCBnZW5lcmF0aW5nTm9kZSgpIGNvbnN0ID0gZGVsZXRlOwpAQCAt
MjkwLDcgKzI5MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc19ub0xvbmdlckFmZmVj
dHNQYXJlbnRCbG9jazsKIH07CiAKLWlubGluZSB2b2lkIFJlbmRlckVsZW1lbnQ6OnNldEFuaW1h
dGFibGVTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK2lubGluZSB2b2lkIFJlbmRl
ckVsZW1lbnQ6OnNldEFuaW1hdGFibGVTdHlsZShSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7
CiAgICAgc2V0U3R5bGUoYW5pbWF0aW9uKCkudXBkYXRlQW5pbWF0aW9ucygqdGhpcywgV1RGOjpt
b3ZlKHN0eWxlKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKaW5kZXggNTU0YTA4My4uYjE5YTIxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBAIC05Niw3ICs5
Niw3IEBAIHN0YXRpYyBjb25zdCBDb2xvciYgdW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigp
CiAgICAgcmV0dXJuIHN0YW5kYXJkOwogfQogCi1SZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVy
RW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckVtYmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJlZGRlZE9i
amVjdChIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBz
dHlsZSkKICAgICA6IFJlbmRlcldpZGdldChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAg
ICwgbV9pc1BsdWdpblVuYXZhaWxhYmxlKGZhbHNlKQogICAgICwgbV9pc1VuYXZhaWxhYmxlUGx1
Z2luSW5kaWNhdG9ySGlkZGVuKGZhbHNlKQpAQCAtMTEyLDcgKzExMiw3IEBAIFJlbmRlckVtYmVk
ZGVkT2JqZWN0Ojp+UmVuZGVyRW1iZWRkZWRPYmplY3QoKQogICAgIHZpZXcoKS5mcmFtZVZpZXco
KS5yZW1vdmVFbWJlZGRlZE9iamVjdFRvVXBkYXRlKCp0aGlzKTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVtYmVkZGVkT2JqZWN0PiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Y3JlYXRlRm9yQXBwbGV0
KEhUTUxBcHBsZXRFbGVtZW50JiBhcHBsZXQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyUHRyPFJlbmRlckVtYmVkZGVkT2JqZWN0PiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Y3Jl
YXRlRm9yQXBwbGV0KEhUTUxBcHBsZXRFbGVtZW50JiBhcHBsZXQsIFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKIHsKICAgICBhdXRvIHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRW1i
ZWRkZWRPYmplY3Q+KGFwcGxldCwgV1RGOjptb3ZlKHN0eWxlKSk7CiAgICAgcmVuZGVyZXItPnNl
dElubGluZSh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVk
ZGVkT2JqZWN0LmgKaW5kZXggMTRmMGEzOC4uODIxNmY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKQEAgLTM1LDEwICszNSwxMCBAQCBj
bGFzcyBUZXh0UnVuOwogLy8gRm9yIGV4YW1wbGUsIDxlbWJlZCBzcmM9ImZvby5odG1sIj4gZG9l
cyBub3QgaW52b2tlIGEgcGx1Zy1pbi4KIGNsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0IDogcHVi
bGljIFJlbmRlcldpZGdldCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRW1iZWRkZWRPYmplY3QoSFRN
TEZyYW1lT3duZXJFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckVt
YmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7
CiAgICAgdmlydHVhbCB+UmVuZGVyRW1iZWRkZWRPYmplY3QoKTsKIAotICAgIHN0YXRpYyBSZW5k
ZXJQdHI8UmVuZGVyRW1iZWRkZWRPYmplY3Q+IGNyZWF0ZUZvckFwcGxldChIVE1MQXBwbGV0RWxl
bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBzdGF0aWMgUmVuZGVyUHRyPFJlbmRl
ckVtYmVkZGVkT2JqZWN0PiBjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxldEVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+JiYpOwogCiAgICAgZW51bSBQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiB7
CiAgICAgICAgIFBsdWdpbk1pc3NpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZpZWxkc2V0LmNwcAppbmRleCAyODFkM2FmLi5mOWRhMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJGaWVsZHNl
dDo6UmVuZGVyRmllbGRzZXQoSFRNTEZpZWxkU2V0RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGaWVsZHNldDo6UmVuZGVyRmllbGRzZXQoSFRNTEZp
ZWxkU2V0RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDog
UmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCmluZGV4IDEzODZjY2UuLjZmODkzMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCkBAIC0zMyw3ICsz
Myw3IEBAIGNsYXNzIEhUTUxGaWVsZFNldEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckZpZWxkc2V0
IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRmll
bGRzZXQoSFRNTEZpZWxkU2V0RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJGaWVsZHNldChIVE1MRmllbGRTZXRFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsK
IAogICAgIGVudW0gRmluZExlZ2VuZE9wdGlvbiB7IElnbm9yZUZsb2F0aW5nT3JPdXRPZkZsb3cs
IEluY2x1ZGVGbG9hdGluZ09yT3V0T2ZGbG93IH07CiAgICAgUmVuZGVyQm94KiBmaW5kTGVnZW5k
KEZpbmRMZWdlbmRPcHRpb24gPSBJZ25vcmVGbG9hdGluZ09yT3V0T2ZGbG93KSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwCmluZGV4IGZhZjU0MTEuLmFlMjFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtNTgsNyArNTgsNyBAQCBj
b25zdCBpbnQgZGVmYXVsdFdpZHRoTnVtQ2hhcnMgPSAzODsKICNlbmRpZgogY29uc3QgaW50IGJ1
dHRvblNoYWRvd0hlaWdodCA9IDI7CiAKLVJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJG
aWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6UmVuZGVyRmlsZVVwbG9hZENv
bnRyb2woSFRNTElucHV0RWxlbWVudCYgaW5wdXQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
ICAgICA6IFJlbmRlckJsb2NrRmxvdyhpbnB1dCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1f
Y2FuUmVjZWl2ZURyb3BwZWRGaWxlcyhpbnB1dC5jYW5SZWNlaXZlRHJvcHBlZEZpbGVzKCkpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5oCmluZGV4IDY2NDYzNDIuLjEwOGRlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNz
IEhUTUxJbnB1dEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckZpbGVVcGxvYWRDb250cm9sIGZpbmFs
IDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2woSFRNTElucHV0RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1MSW5wdXRFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxl
PiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJGaWxlVXBsb2FkQ29udHJvbCgpOwogCiAgICAgU3Ry
aW5nIGJ1dHRvblZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmNwcAppbmRleCAzNmFkNzFlLi41ZjMyZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3Ry
dWN0IFJlbmRlckZsZXhpYmxlQm94OjpWaW9sYXRpb24gewogfTsKIAogCi1SZW5kZXJGbGV4aWJs
ZUJveDo6UmVuZGVyRmxleGlibGVCb3goRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goRWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2so
ZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fb3JkZXJJdGVyYXRvcigqdGhp
cykKICAgICAsIG1fbnVtYmVyT2ZJbkZsb3dDaGlsZHJlbk9uRmlyc3RMaW5lKC0xKQpAQCAtNzQs
NyArNzQsNyBAQCBSZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goRWxlbWVudCYg
ZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bAogICAgIHNldENoaWxkcmVuSW5saW5l
KGZhbHNlKTsgLy8gQWxsIG9mIG91ciBjaGlsZHJlbiBtdXN0IGJlIGJsb2NrLWxldmVsLgogfQog
Ci1SZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goRG9jdW1lbnQmIGRvY3VtZW50
LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJG
bGV4aWJsZUJveChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
ICAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwg
bV9vcmRlckl0ZXJhdG9yKCp0aGlzKQogICAgICwgbV9udW1iZXJPZkluRmxvd0NoaWxkcmVuT25G
aXJzdExpbmUoLTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5oCmluZGV4IDJiNmVmYWMuLjYzOTI1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC0zOCw4ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUmVuZGVyRmxleGlibGVCb3ggOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVi
bGljOgotICAgIFJlbmRlckZsZXhpYmxlQm94KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7Ci0gICAgUmVuZGVyRmxleGlibGVCb3goRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyRmxleGlibGVCb3goRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7
CisgICAgUmVuZGVyRmxleGlibGVCb3goRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlckZsZXhpYmxlQm94KCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCBjMGYwMTNlLi5iYzM2YTYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC01Miw3ICs1
Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyRmxvd1RocmVhZDo6UmVuZGVy
Rmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fcHJldmlvdXNSZWdpb25Db3VudCgwKQogICAg
ICwgbV9hdXRvTG9naWNhbEhlaWdodFJlZ2lvbnNDb3VudCgwKQpAQCAtNjgsNyArNjgsNyBAQCBS
ZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bAogICAgIHNldEZsb3dUaHJlYWRTdGF0ZShJbnNpZGVPdXRP
ZkZsb3dUaHJlYWQpOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJGbG93VGhyZWFk
OjpjcmVhdGVGbG93VGhyZWFkU3R5bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQorUmVmPFJl
bmRlclN0eWxlPiBSZW5kZXJGbG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUoUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlKQogewogICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlKCk7CiAgICAgbmV3U3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKaW5kZXggNjIzZWJm
YS4uODYzYWI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
b3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVh
ZC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB3aGVuIGEgZGVz
Y2VuZGFudCBib3gncyBsYXlvdXQgaXMgZmluaXNoZWQgYW5kIGl0IGhhcyBiZWVuIHBvc2l0aW9u
ZWQgd2l0aGluIGl0cyBjb250YWluZXIuCiAgICAgdmlydHVhbCB2b2lkIGZsb3dUaHJlYWREZXNj
ZW5kYW50Qm94TGFpZE91dChSZW5kZXJCb3gqKSB7IH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPFJl
bmRlclN0eWxlPiBjcmVhdGVGbG93VGhyZWFkU3R5bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
KTsKKyAgICBzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVGbG93VGhyZWFkU3R5bGUoUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7
CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJl
c0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgUmVuZGVyRmxvd1RocmVhZChEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKKyAgICBSZW5kZXJGbG93VGhyZWFkKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsK
IAogICAgIHZpcnR1YWwgUmVuZGVyRmxvd1RocmVhZCogbG9jYXRlRmxvd1RocmVhZENvbnRhaW5p
bmdCbG9jaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyRmxvd1Ro
cmVhZCo+KHRoaXMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3Bw
CmluZGV4IDMwYTJlNjMuLjMwNDQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
bmRlckZyYW1lOjpSZW5kZXJGcmFtZShIVE1MRnJhbWVFbGVtZW50JiBmcmFtZSwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJGcmFtZTo6UmVuZGVyRnJhbWUoSFRNTEZyYW1lRWxl
bWVudCYgZnJhbWUsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckZyYW1l
QmFzZShmcmFtZSwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lLmgKaW5kZXggNzRmNjg4Zi4uOTU2YjczYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRNTEZyYW1lRWxl
bWVudDsKIAogY2xhc3MgUmVuZGVyRnJhbWUgZmluYWwgOiBwdWJsaWMgUmVuZGVyRnJhbWVCYXNl
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGcmFtZShIVE1MRnJhbWVFbGVtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+JiYpOwogCiAgICAgSFRNTEZyYW1lRWxlbWVudCYgZnJhbWVFbGVtZW50KCkgY29u
c3Q7CiAgICAgRnJhbWVFZGdlSW5mbyBlZGdlSW5mbygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAppbmRleCAzYWU0NGJhLi45MjVhMDczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcApAQCAtMzMs
NyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlckZyYW1lQmFzZTo6UmVu
ZGVyRnJhbWVCYXNlKEhUTUxGcmFtZUVsZW1lbnRCYXNlJiBlbGVtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlckZyYW1lQmFzZTo6UmVuZGVyRnJhbWVCYXNlKEhUTUxGcmFt
ZUVsZW1lbnRCYXNlJiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJXaWRnZXQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAppbmRleCAxN2M5ZDhmLi5lN2RkNmJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCkBAIC0zNiw3ICsz
Niw3IEBAIGNsYXNzIEhUTUxGcmFtZUVsZW1lbnRCYXNlOwogLy8gQmFzZSBjbGFzcyBmb3IgUmVu
ZGVyRnJhbWUgYW5kIFJlbmRlcklGcmFtZQogY2xhc3MgUmVuZGVyRnJhbWVCYXNlIDogcHVibGlj
IFJlbmRlcldpZGdldCB7CiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyRnJhbWVCYXNlKEhUTUxGcmFt
ZUVsZW1lbnRCYXNlJiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckZyYW1lQmFz
ZShIVE1MRnJhbWVFbGVtZW50QmFzZSYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAKIHB1YmxpYzoK
ICAgICBGcmFtZVZpZXcqIGNoaWxkVmlldygpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEZyYW1l
Vmlldz4oUmVuZGVyV2lkZ2V0Ojp3aWRnZXQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhbWVTZXQuY3BwCmluZGV4IDJhMWMxZDIuLmMyOTBkYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcApAQCAtNDUsNyArNDUsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlckZyYW1lU2V0OjpSZW5kZXJGcmFtZVNldChI
VE1MRnJhbWVTZXRFbGVtZW50JiBmcmFtZVNldCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitSZW5kZXJGcmFtZVNldDo6UmVuZGVyRnJhbWVTZXQoSFRNTEZyYW1lU2V0RWxlbWVudCYgZnJh
bWVTZXQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChmcmFtZVNl
dCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faXNSZXNpemluZyhmYWxzZSkKICAgICAs
IG1faXNDaGlsZFJlc2l6aW5nKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhbWVTZXQuaAppbmRleCBiMGVlODlhLi5kZDc3OTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhbWVTZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogCiBjbGFz
cyBSZW5kZXJGcmFtZVNldCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgotICAg
IFJlbmRlckZyYW1lU2V0KEhUTUxGcmFtZVNldEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxl
Pik7CisgICAgUmVuZGVyRnJhbWVTZXQoSFRNTEZyYW1lU2V0RWxlbWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyRnJhbWVTZXQoKTsKIAogICAgIEhUTUxGcmFt
ZVNldEVsZW1lbnQmIGZyYW1lU2V0RWxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCmluZGV4IGUxMTVmN2YuLmI1NjMxNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJGdWxsU2NyZWVu
UGxhY2Vob2xkZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXIoUmVuZGVyRnVsbFNjcmVlbiYgb3duZXIsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRl
cihSZW5kZXJGdWxsU2NyZWVuJiBvd25lciwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAg
ICAgICA6IFJlbmRlckJsb2NrRmxvdyhvd25lci5kb2N1bWVudCgpLCBXVEY6Om1vdmUoc3R5bGUp
KQogICAgICAgICAsIG1fb3duZXIob3duZXIpIAogICAgIHsKQEAgLTU0LDcgKzU0LDcgQEAgdm9p
ZCBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXI6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgUmVu
ZGVyQmxvY2tGbG93Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAotUmVuZGVyRnVsbFNjcmVlbjo6
UmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyRnVsbFNjcmVlbjo6UmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94
KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9wbGFjZWhvbGRlcigwKQogewpA
QCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbmRlckZ1bGxTY3JlZW46OndpbGxCZURlc3Ryb3llZCgp
CiAgICAgUmVuZGVyRmxleGlibGVCb3g6OndpbGxCZURlc3Ryb3llZCgpOwogfQogCi1zdGF0aWMg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlRnVsbFNjcmVlblN0eWxlKCkKK3N0YXRpYyBSZWY8
UmVuZGVyU3R5bGU+IGNyZWF0ZUZ1bGxTY3JlZW5TdHlsZSgpCiB7CiAgICAgYXV0byBmdWxsc2Ny
ZWVuU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlRGVmYXVsdFN0eWxlKCk7CiAKQEAgLTE4NSw3
ICsxODUsNyBAQCB2b2lkIFJlbmRlckZ1bGxTY3JlZW46OnNldFBsYWNlaG9sZGVyKFJlbmRlckJs
b2NrKiBwbGFjZWhvbGRlcikKICAgICBtX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7CiB9CiAK
LXZvaWQgUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlUGxhY2Vob2xkZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUsIGNvbnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCkKK3ZvaWQgUmVuZGVyRnVs
bFNjcmVlbjo6Y3JlYXRlUGxhY2Vob2xkZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25z
dCBMYXlvdXRSZWN0JiBmcmFtZVJlY3QpCiB7CiAgICAgaWYgKHN0eWxlLmdldCgpLndpZHRoKCku
aXNBdXRvKCkpCiAgICAgICAgIHN0eWxlLmdldCgpLnNldFdpZHRoKExlbmd0aChmcmFtZVJlY3Qu
d2lkdGgoKSwgRml4ZWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGdWxsU2NyZWVuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNj
cmVlbi5oCmluZGV4IDliNmM4ZGIuLjcyOGZkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZ1bGxTY3JlZW4uaApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUmVuZGVyRnVsbFNjcmVlbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4
aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiwgUmVmPFJl
bmRlclN0eWxlPiYmKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGdWxsU2NyZWVuIjsgfQogCiAgICAgdm9pZCBz
ZXRQbGFjZWhvbGRlcihSZW5kZXJCbG9jayopOwogICAgIFJlbmRlckJsb2NrKiBwbGFjZWhvbGRl
cigpIHsgcmV0dXJuIG1fcGxhY2Vob2xkZXI7IH0KLSAgICB2b2lkIGNyZWF0ZVBsYWNlaG9sZGVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+LCBjb25zdCBMYXlvdXRSZWN0JiBmcmFtZVJlY3QpOworICAg
IHZvaWQgY3JlYXRlUGxhY2Vob2xkZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBMYXlvdXRS
ZWN0JiBmcmFtZVJlY3QpOwogCiAgICAgc3RhdGljIFJlbmRlckZ1bGxTY3JlZW4qIHdyYXBSZW5k
ZXJlcihSZW5kZXJPYmplY3QqLCBSZW5kZXJFbGVtZW50KiwgRG9jdW1lbnQmKTsKICAgICB2b2lk
IHVud3JhcFJlbmRlcmVyKGJvb2wmIHJlcXVpcmVzUmVuZGVyVHJlZVJlYnVpbGQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDAxMmJhYzYuLmMwYzIzNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTE4NSw3ICsxODUsNyBA
QCBwdWJsaWM6CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBncm93QWJvdmVNYXhCcmVhZHRoVHJhY2tJ
bmRleGVzOwogfTsKIAotUmVuZGVyR3JpZDo6UmVuZGVyR3JpZChFbGVtZW50JiBlbGVtZW50LCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckdyaWQ6OlJlbmRlckdyaWQoRWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2so
ZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fb3JkZXJJdGVyYXRvcigqdGhp
cykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IDU1NmRlYmUuLmM4
NDY0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtNDIsNyArNDIs
NyBAQCBjbGFzcyBHcmlkSXRlbVdpdGhTcGFuOwogCiBjbGFzcyBSZW5kZXJHcmlkIGZpbmFsIDog
cHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJHcmlkKEVsZW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyR3JpZChFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJHcmlkKCk7CiAKICAgICBFbGVtZW50JiBl
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255
bW91cygpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMu
Y3BwCmluZGV4IDYyMWNmMjguLmUyMTg1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySFRNTENhbnZhcy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJIVE1MQ2FudmFzOjpS
ZW5kZXJIVE1MQ2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRl
clN0eWxlPiBzdHlsZSkKK1JlbmRlckhUTUxDYW52YXM6OlJlbmRlckhUTUxDYW52YXMoSFRNTENh
bnZhc0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJl
bmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIGVsZW1lbnQuc2l6ZSgpKQog
ewogICAgIC8vIEFjdHVhbCBzaXplIGlzIG5vdCBrbm93biB5ZXQsIHJlcG9ydCB0aGUgZGVmYXVs
dCBpbnRyaW5zaWMgc2l6ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENh
bnZhcy5oCmluZGV4IGQyNWMxYzcuLjAzZTJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckhUTUxDYW52YXMuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBIVE1MQ2FudmFz
RWxlbWVudDsKIAogY2xhc3MgUmVuZGVySFRNTENhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJS
ZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySFRNTENhbnZhcyhIVE1MQ2FudmFzRWxlbWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJIVE1MQ2FudmFzKEhUTUxDYW52
YXNFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogICAgIEhUTUxDYW52YXNFbGVtZW50
JiBjYW52YXNFbGVtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklGcmFtZS5jcHAKaW5kZXggOTBjNjM1Ny4uM2EzOWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogICAgIAotUmVuZGVySUZyYW1lOjpS
ZW5kZXJJRnJhbWUoSFRNTElGcmFtZUVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVySUZyYW1lOjpSZW5kZXJJRnJhbWUoSFRNTElGcmFtZUVsZW1lbnQm
IGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckZyYW1lQmFz
ZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklGcmFtZS5oCmluZGV4IDQyMDk2NWIuLjdhMmUxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVuZGVyVmll
dzsKIAogY2xhc3MgUmVuZGVySUZyYW1lIGZpbmFsIDogcHVibGljIFJlbmRlckZyYW1lQmFzZSB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVySUZyYW1lKEhUTUxJRnJhbWVFbGVtZW50JiwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pOworICAgIFJlbmRlcklGcmFtZShIVE1MSUZyYW1lRWxlbWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4mJik7CiAKICAgICBIVE1MSUZyYW1lRWxlbWVudCYgaWZyYW1lRWxlbWVudCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBm
YTU3NDI0Li4xODk3OGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpjb2xsZWN0U2VsZWN0aW9u
UmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiByZWN0cywgdW5zaWduZWQsCiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFn
ZSwgY29uc3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQorUmVuZGVySW1hZ2U6OlJlbmRl
ckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgU3R5bGVJ
bWFnZSogc3R5bGVJbWFnZSwgY29uc3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogICAg
IDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQog
ICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX25lZWRzVG9TZXRTaXplRm9yQWx0VGV4
dChmYWxzZSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIFN0eWxlSW1hZwogICAg
ICAgICBtX2hhc1NoYWRvd0NvbnRyb2xzID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCkuaGFzU2hhZG93Q29udHJvbHMoKTsKIH0KIAotUmVuZGVySW1hZ2U6OlJlbmRlckltYWdl
KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIFN0eWxlSW1h
Z2UqIHN0eWxlSW1hZ2UpCitSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCiAg
ICAgOiBSZW5kZXJSZXBsYWNlZChkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgSW50U2l6ZSgp
KQogICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX25lZWRzVG9TZXRTaXplRm9yQWx0
VGV4dChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggNGE4
YzY5Zi4uYTEyZGNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAg
LTM1LDggKzM1LDggQEAgY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckltYWdl
IDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJbWFnZShFbGVt
ZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIFN0eWxlSW1hZ2UqID0gbnVsbHB0ciwgY29uc3Qg
ZmxvYXQgPSAxLjBmKTsKLSAgICBSZW5kZXJJbWFnZShEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+LCBTdHlsZUltYWdlKiA9IG51bGxwdHIpOworICAgIFJlbmRlckltYWdlKEVsZW1lbnQm
LCBSZWY8UmVuZGVyU3R5bGU+JiYsIFN0eWxlSW1hZ2UqID0gbnVsbHB0ciwgY29uc3QgZmxvYXQg
PSAxLjBmKTsKKyAgICBSZW5kZXJJbWFnZShEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwg
U3R5bGVJbWFnZSogPSBudWxscHRyKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJJbWFnZSgpOwogCiAg
ICAgUmVuZGVySW1hZ2VSZXNvdXJjZSYgaW1hZ2VSZXNvdXJjZSgpIHsgcmV0dXJuICptX2ltYWdl
UmVzb3VyY2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5k
ZXggNTM3NjAxNi4uNDAzY2UyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAKQEAgLTUxLDEzICs1MSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
bmRlcklubGluZTo6UmVuZGVySW5saW5lKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVySW5saW5lOjpSZW5kZXJJbmxpbmUoRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3Qo
ZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgUmVuZGVySW5saW5lRmxhZykKIHsKICAgICBzZXRD
aGlsZHJlbklubGluZSh0cnVlKTsKIH0KIAotUmVuZGVySW5saW5lOjpSZW5kZXJJbmxpbmUoRG9j
dW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlcklubGlu
ZTo6UmVuZGVySW5saW5lKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQogICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZG9jdW1lbnQsIFdURjo6bW92ZShzdHls
ZSksIFJlbmRlcklubGluZUZsYWcpCiB7CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggYzRiM2JiMS4uMTNjNTJl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMzQsOCArMzQs
OCBAQCBjbGFzcyBSZW5kZXJSZWdpb247CiAKIGNsYXNzIFJlbmRlcklubGluZSA6IHB1YmxpYyBS
ZW5kZXJCb3hNb2RlbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW5saW5lKEVsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVySW5saW5lKERvY3VtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlcklubGluZShFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmKTsKKyAgICBSZW5kZXJJbmxpbmUoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
JiYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQs
IFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZWUxMGIwZS4uOTAyNTU3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC02NjA3LDcgKzY2MDcsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpyZW1vdmVSZWZsZWN0aW9uKCkKICAgICBtX3JlZmxlY3Rpb24g
PSBudWxscHRyOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJMYXllcjo6Y3JlYXRl
UmVmbGVjdGlvblN0eWxlKCkKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyTGF5ZXI6OmNyZWF0ZVJl
ZmxlY3Rpb25TdHlsZSgpCiB7CiAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGUoKTsKICAgICBuZXdTdHlsZS5nZXQoKS5pbmhlcml0RnJvbSgmcmVuZGVyZXIoKS5zdHlsZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggZDE2YzdiZS4uMjI2
MzBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTExMjAsNyAr
MTEyMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVSZWZsZWN0aW9uKCk7CiAgICAgdm9p
ZCByZW1vdmVSZWZsZWN0aW9uKCk7CiAKLSAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVS
ZWZsZWN0aW9uU3R5bGUoKTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZVJlZmxlY3Rpb25T
dHlsZSgpOwogICAgIGJvb2wgcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb247IH0KICAgICB2b2lkIHNldFBhaW50aW5nSW5z
aWRlUmVmbGVjdGlvbihib29sIGIpIHsgbV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb24gPSBiOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcAppbmRleCA3MmVmZjliLi41ZjI4MjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC0zNSwxMiArMzUsMTIg
QEAgYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzX2hhZExheWVyID0gZmFsc2U7CiBib29s
IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNfaGFkVHJhbnNmb3JtID0gZmFsc2U7CiBib29sIFJl
bmRlckxheWVyTW9kZWxPYmplY3Q6OnNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcgPSBmYWxzZTsKIAot
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFn
cykKK1JlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCB1bnNpZ25lZCBiYXNlVHlwZUZs
YWdzKQogICAgIDogUmVuZGVyRWxlbWVudChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNl
VHlwZUZsYWdzIHwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWcpCiB7CiB9CiAKLVJlbmRlckxh
eWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRG9jdW1lbnQmIGRvY3VtZW50
LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKK1Jl
bmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3Mp
CiAgICAgOiBSZW5kZXJFbGVtZW50KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlw
ZUZsYWdzIHwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWcpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAppbmRleCBjMzY4NzBl
Li4zNGEzODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmgKQEAgLTUyLDggKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQm94KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVudCYsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKLSAgICBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVuc2lnbmVk
IGJhc2VUeXBlRmxhZ3MpOworICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4mJiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CisgICAgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwgdW5zaWduZWQgYmFz
ZVR5cGVGbGFncyk7CiAKICAgICB2b2lkIGNyZWF0ZUxheWVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggMTZlNjdlYy4uZDMwOWIxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgaW50IGludmFs
aWRMaW5lSGVpZ2h0ID0gLTE7CiAKLVJlbmRlckxpbmVCcmVhazo6UmVuZGVyTGluZUJyZWFrKEhU
TUxFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlckxp
bmVCcmVhazo6UmVuZGVyTGluZUJyZWFrKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChlbGVtZW50LCBXVEY6
Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9pbmxpbmVCb3hXcmFwcGVyKG51bGxwdHIpCiAgICAg
LCBtX2NhY2hlZExpbmVIZWlnaHQoaW52YWxpZExpbmVIZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKaW5kZXggZjVmOTY0My4uYzI2ZTE0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaApAQCAtMzIsNyArMzIsNyBA
QCBjbGFzcyBQb3NpdGlvbjsKIAogY2xhc3MgUmVuZGVyTGluZUJyZWFrIGZpbmFsIDogcHVibGlj
IFJlbmRlckJveE1vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaW5lQnJlYWsoSFRN
TEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTGluZUJyZWFrKEhU
TUxFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJMaW5l
QnJlYWsoKTsKIAogICAgIC8vIEZJWE1FOiBUaGUgbGllcyBoZXJlIGtlZXAgcmVuZGVyIHRyZWUg
ZHVtcCBiYXNlZCB0ZXN0IHJlc3VsdHMgdW5jaGFuZ2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDliMjBlMDQuLmEwNGFlYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29u
c3QgaW50IGRlZmF1bHRTaXplID0gNDsKIC8vIHdpZGdldCwgYnV0IEknbSBub3Qgc3VyZSB0aGlz
IGlzIHJpZ2h0IGZvciB0aGUgbmV3IGNvbnRyb2wuCiBjb25zdCBpbnQgYmFzZWxpbmVBZGp1c3Rt
ZW50ID0gNzsKIAotUmVuZGVyTGlzdEJveDo6UmVuZGVyTGlzdEJveChIVE1MU2VsZWN0RWxlbWVu
dCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJMaXN0Qm94OjpS
ZW5kZXJMaXN0Qm94KEhUTUxTZWxlY3RFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxl
KSkKICAgICAsIG1fb3B0aW9uc0NoYW5nZWQodHJ1ZSkKICAgICAsIG1fc2Nyb2xsVG9SZXZlYWxT
ZWxlY3Rpb25BZnRlckxheW91dChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5oCmluZGV4IDhhZTY5ZGIuLmM1ZGY2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBIVE1MU2VsZWN0RWxl
bWVudDsKIAogY2xhc3MgUmVuZGVyTGlzdEJveCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zs
b3csIHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTGlzdEJveChI
VE1MU2VsZWN0RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJMaXN0
Qm94KEhUTUxTZWxlY3RFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFs
IH5SZW5kZXJMaXN0Qm94KCk7CiAKICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0RWxlbWVu
dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAK
aW5kZXggOGM5OWNlMC4uZDJlN2Q0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEl0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyTGlzdEl0ZW06OlJlbmRlckxpc3RJ
dGVtKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
TGlzdEl0ZW06OlJlbmRlckxpc3RJdGVtKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpKQogICAgICwgbV9tYXJrZXIobnVsbHB0cikKICAgICAsIG1faGFzRXhwbGljaXRWYWx1ZShm
YWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRl
bS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKaW5kZXggOWE1
Yzk0MC4uNDQ1M2Y0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVt
LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgUmVuZGVyTGlzdE1hcmtlcjsKIAogY2xhc3MgUmVu
ZGVyTGlzdEl0ZW0gZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJMaXN0SXRlbShFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJl
bmRlckxpc3RJdGVtKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwg
flJlbmRlckxpc3RJdGVtKCk7CiAgICAgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDllYTc1MGQuLjE5
YmIyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHAKQEAgLTExMTcsNyArMTExNyw3IEBAIFN0cmluZyBsaXN0TWFya2VyVGV4dChFTGlzdFN0eWxl
VHlwZSB0eXBlLCBpbnQgdmFsdWUpCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0K
IAotUmVuZGVyTGlzdE1hcmtlcjo6UmVuZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSYgbGlz
dEl0ZW0sIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTGlzdE1hcmtlcjo6UmVu
ZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSYgbGlzdEl0ZW0sIFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKICAgICA6IFJlbmRlckJveChsaXN0SXRlbS5kb2N1bWVudCgpLCBXVEY6Om1vdmUo
c3R5bGUpLCAwKQogICAgICwgbV9saXN0SXRlbShsaXN0SXRlbSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCmluZGV4IDFhN2ZiNzAuLmMzNGM1ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApAQCAtMzUsNyAr
MzUsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoRUxpc3RTdHlsZVR5cGUsIGludCB2YWx1ZSk7
CiAvLyBUaGUgUmVuZGVyTGlzdE1hcmtlciBhbHdheXMgaGFzIHRvIGJlIGEgY2hpbGQgb2YgYSBS
ZW5kZXJMaXN0SXRlbS4KIGNsYXNzIFJlbmRlckxpc3RNYXJrZXIgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJiwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0
ZW0mLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlckxpc3RNYXJrZXIo
KTsKIAogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKaW5kZXggMDA1NDZhMC4uYWZl
YmM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCkBAIC0zNCwx
MyArMzQsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJNZWRpYTo6UmVuZGVy
TWVkaWEoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5
bGUpCitSZW5kZXJNZWRpYTo6UmVuZGVyTWVkaWEoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwg
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVySW1hZ2UoZWxlbWVudCwgV1RG
Ojptb3ZlKHN0eWxlKSkKIHsKICAgICBzZXRIYXNTaGFkb3dDb250cm9scyh0cnVlKTsKIH0KIAot
UmVuZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBJbnRTaXplJiBpbnRyaW5zaWNTaXplKQorUmVu
ZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgSW50U2l6ZSYgaW50cmluc2ljU2l6ZSkKICAgICA6IFJl
bmRlckltYWdlKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiAgICAgc2V0SW50cmluc2lj
U2l6ZShpbnRyaW5zaWNTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZWRpYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgK
aW5kZXggYzM2NjgwMC4uNTU4NDg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lZGlhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhLmgKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5k
ZXJNZWRpYSA6IHB1YmxpYyBSZW5kZXJJbWFnZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWVkaWEo
SFRNTE1lZGlhRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKLSAgICBSZW5kZXJNZWRp
YShIVE1MTWVkaWFFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIGNvbnN0IEludFNpemUm
IGludHJpbnNpY1NpemUpOworICAgIFJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+JiYpOworICAgIFJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+JiYsIGNvbnN0IEludFNpemUmIGludHJpbnNpY1NpemUpOwogICAgIHZpcnR1
YWwgflJlbmRlck1lZGlhKCk7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxIVE1MTWVkaWFFbGVtZW50Pihub2RlRm9yTm9uQW5v
bnltb3VzKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA5NWZmYzc4Li5iMmUxYjFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5k
ZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250
YWluZXIoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250
YWluZXIoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDog
UmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CkBAIC01OSw3
ICs1OSw3IEBAIHZvaWQgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OmxheW91dCgp
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVuZGVyTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXI6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKEVs
ZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWVkaWFD
b250cm9sVGltZWxpbmVDb250YWluZXI6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFp
bmVyKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJl
bmRlckZsZXhpYmxlQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CkBAIC04MSw3
ICs4MSw3IEBAIHZvaWQgUmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXI6OmxheW91
dCgpCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLVJlbmRlclRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQ6OlJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50OjpSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50
LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaAppbmRleCA3YTY1YzI5Li5hZjNhOGU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250
cm9sRWxlbWVudHMuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRl
ckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWlu
ZXIoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNZWRpYVZvbHVt
ZVNsaWRlckNvbnRhaW5lcihFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CkBAIC00OCw3ICs0OCw3IEBA
IHByaXZhdGU6CiAKIGNsYXNzIFJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyIGZp
bmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNZWRp
YUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lcihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4p
OworICAgIFJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyKEVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+JiYpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBv
dmVycmlkZTsKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgUmVuZGVyVGV4dFRy
YWNrQ29udGFpbmVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVi
bGljOgotICAgIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRWxlbWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KEVs
ZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCmluZGV4IDgxMzAxZDQuLmE3OWQ5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgc2l6ZV90
IHNlbGVjdGVkT3B0aW9uQ291bnQoY29uc3QgUmVuZGVyTWVudUxpc3QmIHJlbmRlck1lbnVMaXN0
KQogfQogI2VuZGlmCiAKLVJlbmRlck1lbnVMaXN0OjpSZW5kZXJNZW51TGlzdChIVE1MU2VsZWN0
RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNZW51
TGlzdDo6UmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpCiAgICAgLCBtX2J1dHRvblRleHQobnVsbHB0cikKICAgICAsIG1faW5uZXJC
bG9jayhudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApp
bmRleCAzZDliNWY0Li41NzFkMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSZW5kZXJUZXh0OwogY2xhc3MgUmVu
ZGVyTWVudUxpc3QgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3gsIHByaXZhdGUgUG9w
dXBNZW51Q2xpZW50IHsKIAogcHVibGljOgotICAgIFJlbmRlck1lbnVMaXN0KEhUTUxTZWxlY3RF
bGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1lbnVMaXN0KEhUTUxT
ZWxlY3RFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJN
ZW51TGlzdCgpOwogCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdEVsZW1lbnQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCmluZGV4IGQzYzQyOTEu
LjAxZjliNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcApAQCAt
MzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKLVJlbmRlck1ldGVyOjpSZW5kZXJNZXRlcihIVE1MRWxlbWVudCYgZWxlbWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNZXRlcjo6UmVuZGVyTWV0ZXIoSFRN
TEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRl
ckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaAppbmRleCBjNmUyNjBhLi5mOGNkMGFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBIVE1M
TWV0ZXJFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJNZXRlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJC
bG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlck1ldGVyKEhUTUxFbGVtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1ldGVyKEhUTUxFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJNZXRlcigpOwogCiAgICAgSFRNTE1ldGVy
RWxlbWVudCogbWV0ZXJFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCmluZGV4IDhkZjMz
MWQuLjI2NjgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogYm9vbCBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OmdTaGlmdGlu
Z1NwYW5uZXIgPSBmYWxzZTsKIAotUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpSZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0
eWxlPiBzdHlsZSkKK1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6UmVuZGVyTXVsdGlDb2x1
bW5GbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogICAgIDogUmVuZGVyRmxvd1RocmVhZChkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAg
ICAsIG1fbGFzdFNldFdvcmtlZE9uKG51bGxwdHIpCiAgICAgLCBtX2NvbHVtbkNvdW50KDEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkLmgKaW5kZXggZjk1NWZhMi4uMGEwOWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaApAQCAtMzgsNyAr
MzgsNyBAQCBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcjsKIAogY2xh
c3MgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkIGZpbmFsIDogcHVibGljIFJlbmRlckZsb3dU
aHJlYWQgewogcHVibGljOgotICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1bWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJl
YWQoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIH5SZW5kZXJNdWx0aUNvbHVt
bkZsb3dUaHJlYWQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGbG93Q2hpbGRJbmZvKFJl
bmRlck9iamVjdCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggMjlmYjZmYS4uMmNmZTRhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC0z
Niw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTXVsdGlDb2x1bW5T
ZXQ6OlJlbmRlck11bHRpQ29sdW1uU2V0KFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OlJlbmRlck11
bHRpQ29sdW1uU2V0KFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQsIFJlZjxSZW5kZXJTdHls
ZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlclJlZ2lvblNldChmbG93VGhyZWFkLmRvY3VtZW50KCks
IFdURjo6bW92ZShzdHlsZSksIGZsb3dUaHJlYWQpCiAgICAgLCBtX2NvbXB1dGVkQ29sdW1uQ291
bnQoMSkKICAgICAsIG1fY29tcHV0ZWRDb2x1bW5XaWR0aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAppbmRleCA4Y2FjMDUwLi45NjIxNjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5T
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQu
aApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBjb21lIGJlZm9yZSBh
bmQgYWZ0ZXIgdGhlIHNwYW4uCiBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtblNldCBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJSZWdpb25TZXQgewogcHVibGljOgotICAgIFJlbmRlck11bHRpQ29sdW1uU2V0
KFJlbmRlckZsb3dUaHJlYWQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTXVs
dGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAKICAg
ICBSZW5kZXJCbG9ja0Zsb3cqIG11bHRpQ29sdW1uQmxvY2tGbG93KCkgY29uc3QgeyByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihwYXJlbnQoKSk7IH0KICAgICBSZW5kZXJNdWx0aUNv
bHVtbkZsb3dUaHJlYWQqIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCo+KGZsb3dUaHJlYWQoKSk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNw
YW5uZXJQbGFjZWhvbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwCmluZGV4IGVhYTFmMzcuLjZkN2U5ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5u
ZXJQbGFjZWhvbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBSZW5kZXJN
dWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxh
Y2Vob2xkZXI6OmNyZWF0ZQogICAgIHJldHVybiBwbGFjZWhvbGRlcjsKIH0KIAotUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI6OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNl
aG9sZGVyKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCwgUmVuZGVyQm94
KiBzcGFubmVyLCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyOjpSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcihS
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQsIFJlbmRlckJveCogc3Bhbm5l
ciwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGZsb3dUaHJlYWQt
PmRvY3VtZW50KCksIFdURjo6bW92ZShzdHlsZSksIFJlbmRlckJveE1vZGVsT2JqZWN0RmxhZykK
ICAgICAsIG1fc3Bhbm5lcihzcGFubmVyKQogICAgICwgbV9mbG93VGhyZWFkKGZsb3dUaHJlYWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5T
cGFubmVyUGxhY2Vob2xkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oCmluZGV4IGNmOWQxYjMuLjYzODFlMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtblNwYW5uZXJQbGFjZWhvbGRlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBS
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBt
X2Zsb3dUaHJlYWQ7IH0KIAogcHJpdmF0ZToKLSAgICBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlcihSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqLCBSZW5kZXJCb3gqIHNwYW5u
ZXIsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlcihSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqLCBSZW5kZXJCb3gqIHNwYW5u
ZXIsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTXVsdGlD
b2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQuY3BwCmluZGV4IGY3OGIzYjIuLjczNWM1ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcApA
QCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50OjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlKQogICAgIDogUmVuZGVyUmVnaW9uKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBu
dWxscHRyKQogICAgICwgbV9oYXNDdXN0b21SZWdpb25TdHlsZShmYWxzZSkKICAgICAsIG1faGFz
QXV0b0xvZ2ljYWxIZWlnaHQoZmFsc2UpCkBAIC01Nyw3ICs1Nyw3IEBAIFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50Ojp+UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKQogewogfQogCi1QYXNzUmVmPFJl
bmRlclN0eWxlPiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y3JlYXRlU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHBhcmVudFN0eWxlKQorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudDo6Y3JlYXRlU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKQogewog
ICAgIGF1dG8gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheSgmcGFyZW50U3R5bGUsIEJMT0NLKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAppbmRleCAyYzI0NjlmLi45ZWI1NjJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQuaApAQCAtNDksMTAgKzQ5LDEwIEBAIGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJSZWdpb24gewogcHVibGlj
OgotICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwogCi0g
ICAgc3RhdGljIFBhc3NSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZVN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJiBwYXJlbnRTdHlsZSk7CisgICAgc3RhdGljIFJlZjxSZW5kZXJTdHlsZT4gY3JlYXRlU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAKaW5kZXggZjVlODgyNS4uOTc4MjI3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
OlJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlLCBQYXNzUmVmPFdlYktpdE5hbWVkRmxvdz4gbmFtZWRGbG93KQorUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIFJlZjxXZWJLaXROYW1lZEZsb3c+JiYgbmFtZWRG
bG93KQogICAgIDogUmVuZGVyRmxvd1RocmVhZChkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkK
ICAgICAsIG1faGFzUmVnaW9uc1dpdGhTdHlsaW5nKGZhbHNlKQogICAgICwgbV9kaXNwYXRjaFJl
Z2lvbk92ZXJzZXRDaGFuZ2VFdmVudChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAppbmRleCBiNWYxNjRiLi40MWFhYWY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCkBA
IC00Niw3ICs0Niw3IEBAIHR5cGVkZWYgTGlzdEhhc2hTZXQ8RWxlbWVudCo+IE5hbWVkRmxvd0Nv
bnRlbnRFbGVtZW50czsKIAogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGZpbmFsIDogcHVi
bGljIFJlbmRlckZsb3dUaHJlYWQsIHB1YmxpYyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4sIFBhc3NSZWY8V2ViS2l0TmFtZWRGbG93Pik7CisgICAgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCBSZWY8V2ViS2l0TmFtZWRGbG93PiYm
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJOYW1lZEZsb3dUaHJlYWQoKTsKIAogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZmxvd1RocmVhZE5hbWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCmluZGV4IGIyNWFhMDEuLmE0ZDA0OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcApAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclByb2dyZXNzOjpSZW5kZXJQcm9ncmVz
cyhIVE1MRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJQcm9ncmVzczo6UmVuZGVyUHJvZ3Jlc3MoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1v
dmUoc3R5bGUpKQogICAgICwgbV9wb3NpdGlvbihIVE1MUHJvZ3Jlc3NFbGVtZW50OjpJbnZhbGlk
UG9zaXRpb24pCiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0VGltZSgwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaAppbmRleCA3N2NiNDRjLi4zMmM1YTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaApAQCAtMjksNyArMjksNyBAQCBj
bGFzcyBIVE1MUHJvZ3Jlc3NFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJQcm9ncmVzcyBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclByb2dyZXNzKEhU
TUxFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclByb2dyZXNzKEhU
TUxFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJQcm9n
cmVzcygpOwogCiAgICAgZG91YmxlIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlv
bjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKaW5kZXggNTVmZjZm
ZC4uMWYwMmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1
b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwCkBA
IC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVuZGVyUXVvdGU6OlJlbmRlclF1b3RlKERvY3VtZW50JiBkb2N1bWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIFF1b3RlVHlwZSBxdW90ZSkKK1JlbmRlclF1
b3RlOjpSZW5kZXJRdW90ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBz
dHlsZSwgUXVvdGVUeXBlIHF1b3RlKQogICAgIDogUmVuZGVySW5saW5lKGRvY3VtZW50LCBXVEY6
Om1vdmUoc3R5bGUpKQogICAgICwgbV90eXBlKHF1b3RlKQogICAgICwgbV9kZXB0aCgtMSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKaW5kZXggM2JiNTBkZi4uMDY2MjVjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmgKQEAgLTI5LDcgKzI5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJRdW90ZSBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJJbmxpbmUgewogcHVibGljOgotICAgIFJlbmRlclF1b3RlKERvY3VtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4sIFF1b3RlVHlwZSk7CisgICAgUmVuZGVyUXVvdGUoRG9jdW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+JiYsIFF1b3RlVHlwZSk7CiAgICAgdmlydHVhbCB+UmVuZGVyUXVvdGUo
KTsKIAogICAgIHZvaWQgYXR0YWNoUXVvdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5jcHAKaW5kZXggYTU3NDExNC4uZDI5ZDY3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihFbGVtZW50JiBlbGVtZW50
LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVh
ZCkKK1JlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKICAgICA6IFJl
bmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9mbG93VGhy
ZWFkKGZsb3dUaHJlYWQpCiAgICAgLCBtX3BhcmVudE5hbWVkRmxvd1RocmVhZChudWxscHRyKQpA
QCAtNTYsNyArNTYsNyBAQCBSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVyRgogewogfQogCi1SZW5kZXJS
ZWdpb246OlJlbmRlclJlZ2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQorUmVuZGVyUmVnaW9uOjpS
ZW5kZXJSZWdpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUs
IFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9j
dW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkK
ICAgICAsIG1fcGFyZW50TmFtZWRGbG93VGhyZWFkKG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5kZXggYjNmMzFiOC4uY2FlMTJmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtMTI5LDggKzEyOSw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkc0ZvckJveEluUmVnaW9uKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCosIGNvbnN0IFJlbmRlckJveCosIGZsb2F0LCBmbG9hdCkgeyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBSZW5kZXJSZWdpb24oRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
LCBSZW5kZXJGbG93VGhyZWFkKik7Ci0gICAgUmVuZGVyUmVnaW9uKERvY3VtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4sIFJlbmRlckZsb3dUaHJlYWQqKTsKKyAgICBSZW5kZXJSZWdpb24oRWxl
bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwgUmVuZGVyRmxvd1RocmVhZCopOworICAgIFJlbmRl
clJlZ2lvbihEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwgUmVuZGVyRmxvd1RocmVhZCop
OwogCiAgICAgdm9pZCBlbnN1cmVPdmVyZmxvd0ZvckJveChjb25zdCBSZW5kZXJCb3gqLCBSZWZQ
dHI8UmVuZGVyT3ZlcmZsb3c+JiwgYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvblNldC5jcHAKaW5kZXggYWUwNzNiMS4uYTkxMTUyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJSZWdpb25TZXQ6OlJlbmRlclJlZ2lvblNl
dChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBSZW5kZXJG
bG93VGhyZWFkJiBmbG93VGhyZWFkKQorUmVuZGVyUmVnaW9uU2V0OjpSZW5kZXJSZWdpb25TZXQo
RG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIFJlbmRlckZsb3dU
aHJlYWQmIGZsb3dUaHJlYWQpCiAgICAgOiBSZW5kZXJSZWdpb24oZG9jdW1lbnQsIFdURjo6bW92
ZShzdHlsZSksICZmbG93VGhyZWFkKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvblNldC5oCmluZGV4IDkxNjliNjAuLjU1NTg3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZXhwYW5kVG9FbmNvbXBhc3NGbG93VGhyZWFkQ29udGVudHNJZk5lZWRlZCgpOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyUmVnaW9uU2V0KERvY3VtZW50JiwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4sIFJlbmRlckZsb3dUaHJlYWQmKTsKKyAgICBSZW5kZXJSZWdpb25TZXQoRG9jdW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYsIFJlbmRlckZsb3dUaHJlYWQmKTsKIAogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbEZsb3dUaHJlYWQoKSBvdmVycmlkZSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IGIyN2RmMmMu
LjA4NTMzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cApAQCAtNDYsMjEgKzQ2LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBjRGVm
YXVsdFdpZHRoID0gMzAwOwogY29uc3QgaW50IGNEZWZhdWx0SGVpZ2h0ID0gMTUwOwogCi1SZW5k
ZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYg
ZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94KGVsZW1l
bnQsIFdURjo6bW92ZShzdHlsZSksIFJlbmRlclJlcGxhY2VkRmxhZykKICAgICAsIG1faW50cmlu
c2ljU2l6ZShjRGVmYXVsdFdpZHRoLCBjRGVmYXVsdEhlaWdodCkKIHsKICAgICBzZXRSZXBsYWNl
ZCh0cnVlKTsKIH0KIAotUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKEVsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBMYXlvdXRTaXplJiBpbnRy
aW5zaWNTaXplKQorUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKEVsZW1lbnQmIGVsZW1l
bnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2lj
U2l6ZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBSZW5kZXJS
ZXBsYWNlZEZsYWcpCiAgICAgLCBtX2ludHJpbnNpY1NpemUoaW50cmluc2ljU2l6ZSkKIHsKICAg
ICBzZXRSZXBsYWNlZCh0cnVlKTsKIH0KIAotUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2Vk
KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIGNvbnN0IExh
eW91dFNpemUmIGludHJpbnNpY1NpemUpCitSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQo
RG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IExheW91
dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgOiBSZW5kZXJCb3goZG9jdW1lbnQsIFdURjo6bW92
ZShzdHlsZSksIFJlbmRlclJlcGxhY2VkRmxhZykKICAgICAsIG1faW50cmluc2ljU2l6ZShpbnRy
aW5zaWNTaXplKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApp
bmRleCA1NTAxY2QzLi40MDE3NDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuaApAQCAtMzksOSArMzksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNSZXBsYWNl
ZExvZ2ljYWxIZWlnaHQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclJlcGxhY2Vk
KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyUmVwbGFjZWQoRWxl
bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNT
aXplKTsKLSAgICBSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
LCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKTsKKyAgICBSZW5kZXJSZXBsYWNlZChF
bGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKKyAgICBSZW5kZXJSZXBsYWNlZChFbGVtZW50
JiwgUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKTsK
KyAgICBSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3Qg
TGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsaWNhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcApp
bmRleCAzNmFkOWQ1Li4zNzcyMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGljYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxpY2EuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVuZGVyUmVwbGljYTo6UmVuZGVyUmVwbGljYShEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUmVwbGljYTo6UmVuZGVyUmVwbGljYShEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJveChk
b2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKIHsKICAgICAvLyBUaGlzIGlzIGEgaGFjay4g
UmVwbGljYXMgYXJlIHN5bnRoZXRpYywgYW5kIGRvbid0IHBpY2sgdXAgdGhlIGF0dHJpYnV0ZXMg
b2YgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGlj
YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaAppbmRleCA1ZjRh
NWFlLi44NGEwYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGljYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmgK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJSZXBs
aWNhIGZpbmFsIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUmVwbGlj
YShEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSZXBsaWNhKERv
Y3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSZXBsaWNh
KCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyUmVwbGljYSI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5LmNwcAppbmRleCA0NDU2ZGJmLi42YWI3MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnkuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIGlubGluZSBSZW5k
ZXJSdWJ5UnVuJiBmaW5kUnVieVJ1blBhcmVudChSZW5kZXJPYmplY3QmIGNoaWxkKQogCiAvLz09
PSBydWJ5IGFzIGlubGluZSBvYmplY3QgPT09CiAKLVJlbmRlclJ1YnlBc0lubGluZTo6UmVuZGVy
UnVieUFzSW5saW5lKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyUnVieUFzSW5saW5lOjpSZW5kZXJSdWJ5QXNJbmxpbmUoRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVySW5saW5lKGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBSZW5kZXJS
dWJ5QXNJbmxpbmU6OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQpCiAKIC8vPT09IHJ1
YnkgYXMgYmxvY2sgb2JqZWN0ID09PQogCi1SZW5kZXJSdWJ5QXNCbG9jazo6UmVuZGVyUnVieUFz
QmxvY2soRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJSdWJ5QXNCbG9jazo6UmVuZGVyUnVieUFzQmxvY2soRWxlbWVudCYgZWxlbWVudCwgUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuaAppbmRl
eCBmM2E4NmQ3Li4wYjFiMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmgK
QEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gPHJ1Ynk+IHdoZW4gdXNl
ZCBhcyAnZGlzcGxheTppbmxpbmUnCiBjbGFzcyBSZW5kZXJSdWJ5QXNJbmxpbmUgZmluYWwgOiBw
dWJsaWMgUmVuZGVySW5saW5lIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5QXNJbmxpbmUoRWxl
bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5QXNJbmxpbmUoRWxl
bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUFzSW5s
aW5lKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwg
UmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwpAQCAtNzEsNyArNzEsNyBA
QCBwcml2YXRlOgogLy8gPHJ1Ynk+IHdoZW4gdXNlZCBhcyAnZGlzcGxheTpibG9jaycgb3IgJ2Rp
c3BsYXk6aW5saW5lLWJsb2NrJwogY2xhc3MgUmVuZGVyUnVieUFzQmxvY2sgZmluYWwgOiBwdWJs
aWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5QXNCbG9jayhFbGVt
ZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlBc0Jsb2NrKEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlBc0Jsb2Nr
KCk7CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxl
bWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5QmFzZS5jcHAKaW5kZXggMzEzMjk5OC4uOWE3ZjhlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUnVieUJhc2U6OlJlbmRlclJ1YnlCYXNlKERv
Y3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJSdWJ5
QmFzZTo6UmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURjo6bW92ZShzdHls
ZSkpCiB7CiAgICAgc2V0SW5saW5lKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnlCYXNlLmgKaW5kZXggZmI3NWI2My4uMmE2MmFmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgUmVuZGVy
UnVieVJ1bjsKIAogY2xhc3MgUmVuZGVyUnVieUJhc2UgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxv
Y2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5QmFzZShEb2N1bWVudCYsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJSdWJ5QmFzZShEb2N1bWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieUJhc2UoKTsKICAgICAKICAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyUnVieUJhc2UgKGFub255bW91cykiOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieVJ1bi5jcHAKaW5kZXggMjVkOTAwYy4uMjA1ZWI2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLVJlbmRlclJ1YnlSdW46OlJlbmRl
clJ1YnlSdW4oRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkK
K1JlbmRlclJ1YnlSdW46OlJlbmRlclJ1YnlSdW4oRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVu
ZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpCiB7CiAgICAgc2V0UmVwbGFjZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAppbmRleCAwOTY4NWI2Li5hNzczNGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3Mg
UmVuZGVyUnVieVRleHQ7CiAKIGNsYXNzIFJlbmRlclJ1YnlSdW4gZmluYWwgOiBwdWJsaWMgUmVu
ZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5UnVuKERvY3VtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclJ1YnlSdW4oRG9jdW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlSdW4oKTsKIAogICAgIGJvb2wg
aGFzUnVieVRleHQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eVRleHQuY3BwCmluZGV4IGRjNzZmNzcuLjg5N2JjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlbmRlclJ1YnlUZXh0OjpSZW5kZXJSdWJ5VGV4dChFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclJ1YnlUZXh0OjpSZW5kZXJS
dWJ5VGV4dChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgKaW5kZXggOGZkM2MyMy4uZWZlODE5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmgKQEAgLTM3LDcg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJSdWJ5VGV4dCBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlUZXh0
KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyUnVieVRleHQoRWxl
bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieVRleHQo
KTsKIAogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVt
ZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggNjZkZmQyZi4uNThlMjRjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcApA
QCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNjcm9sbGJh
clBhcnQ6OlJlbmRlclNjcm9sbGJhclBhcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSwgUmVuZGVyU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQgcGFydCkKK1JlbmRlclNjcm9sbGJhclBhcnQ6OlJlbmRlclNjcm9sbGJhclBhcnQoRG9jdW1l
bnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIFJlbmRlclNjcm9sbGJhciog
c2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiAgICAgOiBSZW5kZXJCbG9jayhkb2N1bWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fc2Nyb2xsYmFyKHNjcm9sbGJhcikKICAg
ICAsIG1fcGFydChwYXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclBhcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJQYXJ0LmgKaW5kZXggZWU2NDIyYi4uZTRiOGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNz
IFJlbmRlclNjcm9sbGJhcjsKIAogY2xhc3MgUmVuZGVyU2Nyb2xsYmFyUGFydCBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1
bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+LCBSZW5kZXJTY3JvbGxiYXIqID0gMCwgU2Nyb2xs
YmFyUGFydCA9IE5vUGFydCk7CisgICAgUmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4mJiwgUmVuZGVyU2Nyb2xsYmFyKiA9IDAsIFNjcm9sbGJhclBhcnQgPSBO
b1BhcnQpOwogICAgIAogICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclBhcnQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggZDgy
NDg2NS4uMjA4ZjczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNlYXJjaEZpZWxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Vh
cmNoRmllbGQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyU2VhcmNoRmllbGQ6OlJlbmRlclNlYXJj
aEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyU2VhcmNoRmllbGQ6OlJlbmRlclNlYXJjaEZpZWxkKEhUTUxJbnB1dEVsZW1l
bnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9zZWFy
Y2hQb3B1cElzVmlzaWJsZShmYWxzZSkKICAgICAsIG1fc2VhcmNoUG9wdXAoMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKaW5kZXggZjkzZTVmNS4uN2I1
ZjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgK
QEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51OwogCiBjbGFzcyBSZW5kZXJT
ZWFyY2hGaWVsZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUsIHBy
aXZhdGUgUG9wdXBNZW51Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTZWFyY2hGaWVsZChI
VE1MSW5wdXRFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNlYXJj
aEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1
YWwgflJlbmRlclNlYXJjaEZpZWxkKCk7CiAKICAgICB2b2lkIHVwZGF0ZUNhbmNlbEJ1dHRvblZp
c2liaWxpdHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5j
cHAKaW5kZXggMTA3OTc5ZS4uOGI2ZDQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNsaWRlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
b25zdCBpbnQgUmVuZGVyU2xpZGVyOjpkZWZhdWx0VHJhY2tMZW5ndGggPSAxMjk7CiAKLVJlbmRl
clNsaWRlcjo6UmVuZGVyU2xpZGVyKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU2xpZGVyOjpSZW5kZXJTbGlkZXIoSFRNTElucHV0
RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVy
RmxleGlibGVCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKICAgICAvLyBXZSBhc3N1
bWUgUmVuZGVyU2xpZGVyIHdvcmtzIG9ubHkgd2l0aCA8aW5wdXQgdHlwZT1yYW5nZT4uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgKaW5kZXggODZkYTIyNS4uMjgzMTkyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaApAQCAtMzMsNyArMzMsNyBA
QCBjbGFzcyBSZW5kZXJTbGlkZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRyYWNrTGVuZ3RoOwogCi0gICAg
UmVuZGVyU2xpZGVyKEhUTUxJbnB1dEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyU2xpZGVyKEhUTUxJbnB1dEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwog
ICAgIHZpcnR1YWwgflJlbmRlclNsaWRlcigpOwogCiAgICAgSFRNTElucHV0RWxlbWVudCYgZWxl
bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggNTY5NzIxMi4uNDU1ZmNlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBA
IC00OCw3ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQm
IGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIGVs
ZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckVtYmVkZGVkT2Jq
ZWN0KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3NuYXBzaG90UmVzb3VyY2Uo
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9pc1BvdGVu
dGlhbE1vdXNlQWN0aXZhdGlvbihmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgKaW5kZXggNjliNWE2MS4uMGI2YzNkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0lu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0lu
LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVudDsKIAogY2xh
c3MgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4gZmluYWwgOiBwdWJsaWMgUmVuZGVyRW1iZWRkZWRP
YmplY3QgewogcHVibGljOgotICAgIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAg
ICAgdmlydHVhbCB+UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oKTsKIAogICAgIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQmIHBsdWdJbkltYWdlRWxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggOTBlNDQ1MC4uOWU4NTVkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGFi
bGU6OlJlbmRlclRhYmxlKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShz
dHlsZSksIDApCiAgICAgLCBtX2hlYWQobnVsbHB0cikKICAgICAsIG1fZm9vdChudWxscHRyKQpA
QCAtNzMsNyArNzMsNyBAQCBSZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUoRWxlbWVudCYgZWxlbWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgbV9jb2x1bW5Qb3MuZmlsbCgwLCAx
KTsKIH0KIAotUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKERvY3VtZW50JiBkb2N1bWVudCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUoRG9jdW1l
bnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9j
ayhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faGVhZChudWxscHRyKQog
ICAgICwgbV9mb290KG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5o
CmluZGV4IDk0ZDFjYmQuLmUwMWY3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5oCkBAIC00NCw4ICs0NCw4IEBAIGVudW0gU2tpcEVtcHR5U2VjdGlvbnNWYWx1ZSB7IERv
Tm90U2tpcEVtcHR5U2VjdGlvbnMsIFNraXBFbXB0eVNlY3Rpb25zIH07CiAKIGNsYXNzIFJlbmRl
clRhYmxlIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZShF
bGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOwotICAgIFJlbmRlclRhYmxlKERvY3VtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlKEVsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+JiYpOworICAgIFJlbmRlclRhYmxlKERvY3VtZW50JiwgUmVmPFJlbmRlclN0
eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUYWJsZSgpOwogCiAgICAgLy8gUGVyIENTUyAz
IHdyaXRpbmctbW9kZTogIlRoZSBmaXJzdCBhbmQgc2Vjb25kIHZhbHVlcyBvZiB0aGUgJ2JvcmRl
ci1zcGFjaW5nJyBwcm9wZXJ0eSByZXByZXNlbnQgc3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5jcHAKaW5kZXgg
Y2UzMjQxYy4uNDQyOTQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2FwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2FwdGlvbi5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZW5kZXJUYWJsZUNhcHRpb246OlJlbmRlclRhYmxlQ2FwdGlvbihFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlQ2FwdGlvbjo6UmVu
ZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oCmluZGV4
IGE3NjNmODMuLjQ2NTA2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNhcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDYXB0aW9uLmgKQEAgLTI4LDcgKzI4LDcgQEAgY2xhc3MgUmVuZGVyVGFibGU7CiAKIGNs
YXNzIFJlbmRlclRhYmxlQ2FwdGlvbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewog
cHVibGljOgotICAgIFJlbmRlclRhYmxlQ2FwdGlvbihFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlclRhYmxlQ2FwdGlvbihFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxl
PiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUYWJsZUNhcHRpb24oKTsKIAogICAgIEVsZW1lbnQm
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5v
bnltb3VzKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwCmluZGV4IDEyODIwODkuLmViMzNkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFz
UmVuZGVyVGFibGVDZWxsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBDT01QSUxFX0FTU0VS
VChzaXplb2YoUmVuZGVyVGFibGVDZWxsKSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclRhYmxl
Q2VsbCksIFJlbmRlclRhYmxlQ2VsbF9zaG91bGRfc3RheV9zbWFsbCk7CiBDT01QSUxFX0FTU0VS
VChzaXplb2YoQ29sbGFwc2VkQm9yZGVyVmFsdWUpID09IDgsIENvbGxhcHNlZEJvcmRlclZhbHVl
X3Nob3VsZF9zdGF5X3NtYWxsKTsKIAotUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwo
RWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJs
ZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxl
KSkKICAgICAsIG1fY29sdW1uKHVuc2V0Q29sdW1uSW5kZXgpCiAgICAgLCBtX2NlbGxXaWR0aENo
YW5nZWQoZmFsc2UpCkBAIC02Niw3ICs2Niw3IEBAIFJlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFi
bGVDZWxsKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAg
IHVwZGF0ZUNvbEFuZFJvd1NwYW5GbGFncygpOwogfQogCi1SZW5kZXJUYWJsZUNlbGw6OlJlbmRl
clRhYmxlQ2VsbChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2NvbHVtbih1bnNldENvbHVtbkluZGV4KQogICAg
ICwgbV9jZWxsV2lkdGhDaGFuZ2VkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5oCmluZGV4IDY1MTMzNGMuLjljYjRjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTM4LDggKzM4LDggQEAgZW51bSBJbmNs
dWRlQm9yZGVyQ29sb3JPck5vdCB7IERvTm90SW5jbHVkZUJvcmRlckNvbG9yLCBJbmNsdWRlQm9y
ZGVyQ29sb3IgfTsKIAogY2xhc3MgUmVuZGVyVGFibGVDZWxsIGZpbmFsIDogcHVibGljIFJlbmRl
ckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVDZWxsKEVsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGVDZWxsKERvY3VtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlQ2VsbChFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmKTsKKyAgICBSZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5
bGU+JiYpOwogICAgIAogICAgIHVuc2lnbmVkIGNvbFNwYW4oKSBjb25zdAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCmluZGV4IGJjMTg0OTguLmY3
YTllZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNv
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLVJlbmRlclRhYmxlQ29sOjpSZW5kZXJUYWJsZUNvbChFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclRhYmxlQ29sOjpSZW5kZXJU
YWJsZUNvbChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fc3Bhbigx
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAppbmRleCAwZjNj
ZDk3Li5jNjFlMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wu
aApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJUYWJsZUNlbGw7CiAKIGNsYXNzIFJlbmRl
clRhYmxlQ29sIGZpbmFsIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
VGFibGVDb2woRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJUYWJs
ZUNvbChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICBFbGVtZW50JiBlbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygp
KTsgfQogCiAgICAgdm9pZCBjbGVhclByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eUJpdHMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCmluZGV4IDJkNTg5
ZDMuLmM0MjZhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmNwcApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KEVsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVSb3c6
OlJlbmRlclRhYmxlUm93KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKICAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwg
bV9yb3dJbmRleCh1bnNldFJvd0luZGV4KQogewogICAgIHNldElubGluZShmYWxzZSk7CiB9CiAK
LVJlbmRlclRhYmxlUm93OjpSZW5kZXJUYWJsZVJvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVy
Qm94KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9yb3dJbmRleCh1bnNl
dFJvd0luZGV4KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaApp
bmRleCA1ZDAxMTQ5OS4uZWYxN2ZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmgKQEAgLTM0LDggKzM0LDggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFJv
d0luZGV4ID0gMHg3RkZGRkZGRTsgLy8gMiwxNDcsNDgzLDY0NgogCiBjbGFzcyBSZW5kZXJUYWJs
ZVJvdyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgotICAgIFJlbmRlclRhYmxl
Um93KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGVSb3co
RG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyVGFibGVSb3coRWxl
bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CisgICAgUmVuZGVyVGFibGVSb3coRG9jdW1lbnQm
LCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAgUmVuZGVyVGFibGVSb3cqIG5leHRSb3coKSBj
b25zdDsKICAgICBSZW5kZXJUYWJsZVJvdyogcHJldmlvdXNSb3coKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggZGE0MzEw
NC4uMjZkZDQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUxv
Z2ljYWxIZWlnaHRGb3JDZWxsKFJlbmRlclRhYmxlU2VjdGlvbjo6Um93U3RydWN0JiByb3cKICAg
ICB9CiB9CiAKLVJlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQm
IGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGFibGVTZWN0aW9u
OjpSZW5kZXJUYWJsZVNlY3Rpb24oRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlKQogICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDApCiAg
ICAgLCBtX2NDb2woMCkKICAgICAsIG1fY1JvdygwKQpAQCAtOTYsNyArOTYsNyBAQCBSZW5kZXJU
YWJsZVNlY3Rpb246OlJlbmRlclRhYmxlU2VjdGlvbihFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdAogICAgIHNldElubGluZShmYWxzZSk7CiB9CiAKLVJlbmRlclRhYmxl
U2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxS
ZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUYWJsZVNlY3Rpb246OlJlbmRlclRhYmxlU2VjdGlv
bihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJl
bmRlckJveChkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fY0NvbCgwKQog
ICAgICwgbV9jUm93KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmgKaW5kZXggZWU4NTkyOS4uZTg4MDgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaApAQCAtNjQsOCArNjQsOCBAQCBjbGFzcyBSZW5k
ZXJUYWJsZVJvdzsKIAogY2xhc3MgUmVuZGVyVGFibGVTZWN0aW9uIGZpbmFsIDogcHVibGljIFJl
bmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyVGFibGVTZWN0aW9uKERvY3VtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRhYmxlU2VjdGlvbihFbGVtZW50JiwgUmVm
PFJlbmRlclN0eWxlPiYmKTsKKyAgICBSZW5kZXJUYWJsZVNlY3Rpb24oRG9jdW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclRhYmxlU2VjdGlvbigpOwogCiAg
ICAgUmVuZGVyVGFibGVSb3cqIGZpcnN0Um93KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRleCAxZDFiM2U1Li40ZjcxZWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJUZXh0Q29udHJv
bDo6UmVuZGVyVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIGVsZW1lbnQs
IFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRl
eHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3Zl
KHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmgKaW5kZXggZWFjNTVlNS4uMTI3Mzk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgflJlbmRlclRleHRDb250cm9sKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dEZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxSZW5k
ZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5
bGUpIGNvbnN0ID0gMDsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIGNhblNjcm9sbCgp
IGNvbnN0OwpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgot
ICAgIFJlbmRlclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogICAgIC8vIFRoaXMgY29udmVuaWVu
Y2UgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBtYWRlIHB1YmxpYyBiZWNhdXNlIGlubmVyVGV4dEVs
ZW1lbnQgbWF5IG91dGxpdmUgdGhlIHJlbmRlciB0cmVlLgogICAgIFRleHRDb250cm9sSW5uZXJU
ZXh0RWxlbWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0OwpAQCAtOTMsNyArOTMsNyBAQCBw
cml2YXRlOgogLy8gYW55bW9yZS4KIGNsYXNzIFJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWlu
ZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIGV4cGxp
Y2l0IFJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXIoRWxlbWVudCYgZWxlbWVudCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCisgICAgZXhwbGljaXQgUmVuZGVyVGV4dENvbnRyb2xJ
bm5lckNvbnRhaW5lcihFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiAgICAgICAgIDogUmVuZGVyRmxleGlibGVCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkK
ICAgICB7IH0KICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmNwcAppbmRleCA4MmZiMzViLi41NmJiMjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoSFRNTFRleHRBcmVhRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoSFRNTFRleHRBcmVhRWxl
bWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyVGV4
dENvbnRyb2woZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KQEAgLTg3LDcgKzg3LDcg
QEAgaW50IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wKICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNlbGlu
ZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlv
bk1vZGUpOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUp
IGNvbnN0CitSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpjcmVh
dGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QKIHsK
ICAgICBhdXRvIHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgIHRl
eHRCbG9ja1N0eWxlLmdldCgpLmluaGVyaXRGcm9tKHN0YXJ0U3R5bGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAppbmRl
eCAwNjc5YTBmLi4xOTJiNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaApAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBI
VE1MVGV4dEFyZWFFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSBm
aW5hbCA6IHB1YmxpYyBSZW5kZXJUZXh0Q29udHJvbCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUoSFRNTFRleHRBcmVhRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+KTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShIVE1MVGV4dEFyZWFFbGVtZW50
JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZSgpOwogCiAgICAgSFRNTFRleHRBcmVhRWxlbWVudCYgdGV4dEFyZWFFbGVtZW50KCkg
Y29uc3Q7CkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0
IGNvbXB1dGVDb250cm9sTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxpbmVIZWlnaHQsIExheW91
dFVuaXQgbm9uQ29udGVudEhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQg
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlu
bmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFJlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hp
bGRyZW4pIG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCBjZGVjYjMzLi4yYmQz
NWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoSFRNTElucHV0RWxlbWVudCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyVGV4dENvbnRyb2wo
ZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fc2hvdWxkRHJhd0NhcHNMb2NrSW5k
aWNhdG9yKGZhbHNlKQogICAgICwgbV9kZXNpcmVkSW5uZXJUZXh0TG9naWNhbEhlaWdodCgtMSkK
QEAgLTM2NCw3ICszNjQsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6Y29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbAogICAgIHJldHVybiBs
aW5lSGVpZ2h0ICsgbm9uQ29udGVudEhlaWdodDsKIH0KIAotUGFzc1JlZjxSZW5kZXJTdHlsZT4g
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHls
ZSogc3RhcnRTdHlsZSkgY29uc3QKIHsKICAgICBhdXRvIHRleHRCbG9ja1N0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZSgpOwogICAgIHRleHRCbG9ja1N0eWxlLmdldCgpLmluaGVyaXRGcm9tKHN0
YXJ0U3R5bGUpOwpAQCAtMzg3LDcgKzM4Nyw3IEBAIFBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuCiAg
ICAgcmV0dXJuIHRleHRCbG9ja1N0eWxlOwogfQogCi1QYXNzUmVmPFJlbmRlclN0eWxlPiBSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyQmxvY2tTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVJbm5lckJsb2NrU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUq
IHN0YXJ0U3R5bGUpIGNvbnN0CiB7CiAgICAgYXV0byBpbm5lckJsb2NrU3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlKCk7CiAgICAgaW5uZXJCbG9ja1N0eWxlLmdldCgpLmluaGVyaXRGcm9tKHN0
YXJ0U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5oCmluZGV4IDkwNjNjNDMuLmIzMzNiNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmgKQEAgLTMyLDExICszMiwxMSBAQCBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogCiBjbGFzcyBS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2wgewog
cHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShIVE1MSW5wdXRFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZShIVE1MSW5wdXRFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoKTsKICAgICAvLyBGSVhNRTogTW92ZSBjcmVhdGUq
U3R5bGUoKSB0byB0aGVpciBjbGFzc2VzLgotICAgIHZpcnR1YWwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNv
bnN0IG92ZXJyaWRlOwotICAgIFBhc3NSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyQmxvY2tT
dHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7CisgICAgdmlydHVhbCBS
ZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBz
dGFydFN0eWxlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlu
bmVyQmxvY2tTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7CiAKICAg
ICB2b2lkIGNhcHNMb2NrU3RhdGVNYXlIYXZlQ2hhbmdlZCgpOwogCkBAIC0xMDEsNyArMTAxLDcg
QEAgaW5saW5lIEhUTUxFbGVtZW50KiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmlubmVy
QmxvY2tFbGVtZW50KCkgY29uc3QKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2Nr
IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4
dENvbnRyb2xJbm5lckJsb2NrKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorICAgIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayhFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgICAgIDogUmVuZGVyQmxvY2tGbG93KGVs
ZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAKaW5kZXggZDQzZjk5Ni4uODdjYjFiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJWVFRDdWU6OlJlbmRlclZUVEN1ZShWVFRDdWVC
b3gmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyVlRUQ3VlOjpS
ZW5kZXJWVFRDdWUoVlRUQ3VlQm94JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAs
IG1fY3VlKGVsZW1lbnQuZ2V0Q3VlKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VlRUQ3VlLmgKaW5kZXggMzA2YjI1OC4uYTk5MTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWVFRDdWUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBWVFRDdWVCb3g7CiAKIGNs
YXNzIFJlbmRlclZUVEN1ZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogcHVibGlj
OgotICAgIFJlbmRlclZUVEN1ZShWVFRDdWVCb3gmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyVlRUQ3VlKFZUVEN1ZUJveCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXggZjdlY2ZjYS4uNTcwNDUxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVmlk
ZW86OlJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyVmlkZW86OlJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQm
IGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlck1lZGlhKGVs
ZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiAgICAgc2V0SW50cmluc2ljU2l6ZShjYWxjdWxh
dGVJbnRyaW5zaWNTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZGVvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaApp
bmRleCA3NDgyNGI3Li4wYmY5MTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlkZW8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlk
ZW8uaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogCiBjbGFzcyBS
ZW5kZXJWaWRlbyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNZWRpYSB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyVmlkZW8oSFRNTFZpZGVvRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2
aXJ0dWFsIH5SZW5kZXJWaWRlbygpOwogCiAgICAgSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVt
ZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXgg
M2RlODk2MS4uMmFhYjIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cApAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgU2VsZWN0aW9uSXRlcmF0b3IgewogICAgIH0KIH07
CiAKLVJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9j
dW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2ZyYW1lVmlldygqZG9jdW1lbnQudmll
dygpKQogICAgICwgbV9zZWxlY3Rpb25VbnNwbGl0U3RhcnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCmluZGV4IGU3NWM5ZTQuLjliMTUwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBSZW5kZXJRdW90ZTsK
IAogY2xhc3MgUmVuZGVyVmlldyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3csIHB1Ymxp
YyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVmlldyhEb2N1bWVu
dCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJWaWV3KERvY3VtZW50JiwgUmVm
PFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJWaWV3KCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IGY1
NDk5ZTkuLjAxZGFlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyB2b2lkIG1vdmVXaWRnZXRUb1BhcmVudFNvb24o
V2lkZ2V0KiBjaGlsZCwgRnJhbWVWaWV3KiBwYXJlbnQpCiAgICAgV2lkZ2V0SGllcmFyY2h5VXBk
YXRlc1N1c3BlbnNpb25TY29wZTo6c2NoZWR1bGVXaWRnZXRUb01vdmUoY2hpbGQsIHBhcmVudCk7
CiB9CiAKLVJlbmRlcldpZGdldDo6UmVuZGVyV2lkZ2V0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYg
ZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJXaWRnZXQ6OlJlbmRl
cldpZGdldChIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmgKaW5kZXggYTU1NTc4YS4uZTg0OGZjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJXaWRnZXQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgV2Vh
a1B0cjxSZW5kZXJXaWRnZXQ+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0
b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyV2lkZ2V0KEhU
TUxGcmFtZU93bmVyRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJX
aWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmNwcAppbmRleCAzZTlhNTQyLi5jNmMwYWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNw
cApAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIHVzaW5nIG5h
bWVzcGFjZSBNYXRoTUxOYW1lczsKICAgICAKLVJlbmRlck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRo
TUxCbG9jayhFbGVtZW50JiBjb250YWluZXIsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKEVsZW1lbnQmIGNvbnRhaW5lciwg
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyRmxleGlibGVCb3goY29udGFp
bmVyLCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQogCi1SZW5kZXJNYXRoTUxCbG9jazo6UmVuZGVy
TWF0aE1MQmxvY2soRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayhEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGRv
Y3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IGY4ZjEyYTguLmI0OTQw
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgUmVuZGVyTWF0aE1MT3BlcmF0b3I7
CiAKIGNsYXNzIFJlbmRlck1hdGhNTEJsb2NrIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxCbG9jayhFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOwotICAgIFJlbmRlck1hdGhNTEJsb2NrKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlck1hdGhNTEJsb2NrKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
JiYpOworICAgIFJlbmRlck1hdGhNTEJsb2NrKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYm
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3Qm
LCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIApAQCAtNzEsNyArNzEs
NyBAQCBwcml2YXRlOgogCiBjbGFzcyBSZW5kZXJNYXRoTUxUYWJsZSBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJUYWJsZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVuZGVyTWF0aE1MVGFibGUoRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCisgICAgZXhwbGljaXQg
UmVuZGVyTWF0aE1MVGFibGUoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQogICAgICAgICA6IFJlbmRlclRhYmxlKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAg
ICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRmVuY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRmVuY2VkLmNwcAppbmRleCBhODQ5MzVhLi4zNjNlM2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQu
Y3BwCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIHN0YXRp
YyBjb25zdCBjaGFyKiBnT3BlbmluZ0JyYWNlQ2hhciA9ICIoIjsKIHN0YXRpYyBjb25zdCBjaGFy
KiBnQ2xvc2luZ0JyYWNlQ2hhciA9ICIpIjsKIAotUmVuZGVyTWF0aE1MRmVuY2VkOjpSZW5kZXJN
YXRoTUxGZW5jZWQoTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxGZW5jZWQ6OlJlbmRlck1hdGhNTEZl
bmNlZChNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSkKICAgICAsIG1fY2xvc2VGZW5jZVJlbmRlcmVyKG51bGxwdHIpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAppbmRl
eCAzNzAzYTljLi4xNDlkMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MRmVuY2VkIGZpbmFsIDogcHVibGlj
IFJlbmRlck1hdGhNTFJvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MRmVuY2VkKE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVu
ZGVyTWF0aE1MRmVuY2VkKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBSZWY8UmVuZGVy
U3R5bGU+JiYpOwogICAgIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Jj4obm9kZUZv
ck5vbkFub255bW91cygpKTsgfQogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXgg
NWNkM2E2MC4uNTlmZmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3Rh
dGljIGNvbnN0IGZsb2F0IGdMaW5lTWVkaXVtID0gMS5mOwogc3RhdGljIGNvbnN0IGZsb2F0IGdM
aW5lVGhpY2sgPSAzLmY7CiBzdGF0aWMgY29uc3QgZmxvYXQgZ0ZyYWN0aW9uQmFyV2lkdGggPSAw
LjA1ZjsKIAotUmVuZGVyTWF0aE1MRnJhY3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlKQorUmVuZGVyTWF0aE1MRnJhY3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
ICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAg
LCBtX2xpbmVUaGlja25lc3MoZ0xpbmVNZWRpdW0pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKaW5kZXggOGYyYzcx
Ny4uMzZmNTQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFJlbmRlck1hdGhNTEZyYWN0aW9uIGZpbmFsIDogcHVibGljIFJlbmRl
ck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxGcmFjdGlvbihNYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRl
ck1hdGhNTEZyYWN0aW9uKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmLCBSZWY8UmVuZGVy
U3R5bGU+JiYpOwogCiAgICAgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCYgZWxlbWVudCgp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmPihub2Rl
Rm9yTm9uQW5vbnltb3VzKCkpOyB9CiAgICAgZmxvYXQgbGluZVRoaWNrbmVzcygpIGNvbnN0IHsg
cmV0dXJuIG1fbGluZVRoaWNrbmVzczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5jcHAKaW5kZXggNDdlMDBjMi4uMmQ4ZTE1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxN
YXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE1hdGguY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxNYXRoOjpSZW5kZXJNYXRoTUxN
YXRoKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
TWF0aE1MTWF0aDo6UmVuZGVyTWF0aE1MTWF0aChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RGOjptb3Zl
KHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MTWF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNYXRoLmgKaW5kZXggYzUxYmIwYi4uYzM0ZjE2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MTWF0
aCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgewogcHVibGljOgotICAgIFJlbmRlck1h
dGhNTE1hdGgoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRo
TUxNYXRoKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTE1hdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE1lbmNsb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MTWVuY2xvc2UuY3BwCmluZGV4IDZmYWQyMmUuLjE3NDY4YzEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xv
c2UuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxNZW5jbG9zZTo6UmVuZGVyTWF0aE1M
TWVuY2xvc2UoRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJNYXRoTUxNZW5jbG9zZTo6UmVuZGVyTWF0aE1MTWVuY2xvc2UoRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MUm93KGVsZW1l
bnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmgKaW5kZXggNzY5ODQ4OS4uZDQy
MzFlNSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxNZW5jbG9zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MTWVuY2xvc2UuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiBjbGFzcyBSZW5kZXJNYXRoTUxNZW5jbG9zZSBmaW5hbDogcHVibGljIFJlbmRlck1h
dGhNTFJvdyB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MTWVuY2xvc2UoRWxlbWVudCYsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxNZW5jbG9zZShFbGVtZW50Jiwg
UmVmPFJlbmRlclN0eWxlPiYmKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MTWVuY2xv
c2UiOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwCmluZGV4IDg1ZTFlZmUuLjgzOTc0YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuY3BwCkBAIC0xMTM1LDcgKzExMzUsNyBAQCBzdGF0aWMgY29uc3QgVUNoYXIgaG9yaXpvbnRh
bE9wZXJhdG9yc1tdID0gewogCiB9CiAKLVJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRo
TUxPcGVyYXRvcihNYXRoTUxFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihNYXRoTUxF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJN
YXRoTUxUb2tlbihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9zdHJldGNoSGVp
Z2h0QWJvdmVCYXNlbGluZSgwKQogICAgICwgbV9zdHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5lKDAp
CkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1M
T3BlcmF0b3IoTWF0aE1MRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZQogICAgIHVwZGF0
ZVRva2VuQ29udGVudCgpOwogfQogCi1SZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1M
T3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwg
Y29uc3QgU3RyaW5nJiBvcGVyYXRvclN0cmluZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpG
b3JtIGZvcm0sIHVuc2lnbmVkIHNob3J0IGZsYWdzKQorUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJl
bmRlck1hdGhNTE9wZXJhdG9yKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlLCBjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBNYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnk6OkZvcm0gZm9ybSwgdW5zaWduZWQgc2hvcnQgZmxhZ3MpCiAgICAgOiBSZW5kZXJNYXRo
TUxUb2tlbihkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fc3RyZXRjaEhlaWdo
dEFib3ZlQmFzZWxpbmUoMCkKICAgICAsIG1fc3RyZXRjaERlcHRoQmVsb3dCYXNlbGluZSgwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxP
cGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxP
cGVyYXRvci5oCmluZGV4IGU4NzFjZTAuLjM5ZTlkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTYwLDgg
KzYwLDggQEAgc3RydWN0IEVudHJ5IHsKIAogY2xhc3MgUmVuZGVyTWF0aE1MT3BlcmF0b3IgOiBw
dWJsaWMgUmVuZGVyTWF0aE1MVG9rZW4gewogcHVibGljOgotICAgIFJlbmRlck1hdGhNTE9wZXJh
dG9yKE1hdGhNTEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWF0
aE1MT3BlcmF0b3IoRG9jdW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgY29uc3QgU3RyaW5n
JiBvcGVyYXRvclN0cmluZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtLCB1bnNpZ25l
ZCBzaG9ydCBmbGFncyA9IDApOworICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKE1hdGhNTEVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOworICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKERvY3Vt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nLCBN
YXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0sIHVuc2lnbmVkIHNob3J0IGZsYWdzID0gMCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvKExheW91dFVuaXQgaGVpZ2h0QWJvdmVCYXNl
bGluZSwgTGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpOwogICAgIHZvaWQgc3RyZXRjaFRv
KExheW91dFVuaXQgd2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCmluZGV4IGI2
OGMyOTIuLmM5NDk1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAgY29uc3QgZmxvYXQgZ1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zID0gMC4wMmY7CiAv
LyBSYWRpY2FsIHRoaWNrIGxpbmUgdGhpY2tuZXNzIChlbSkKIGNvbnN0IGZsb2F0IGdSYWRpY2Fs
VGhpY2tMaW5lVGhpY2tuZXNzRW1zID0gMC4xZjsKIAotUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJh
dG9yOjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcjo6UmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MT3BlcmF0b3IoZG9jdW1lbnQsIFdURjo6
bW92ZShzdHlsZSksIFN0cmluZygmZ1JhZGljYWxDaGFyYWN0ZXIsIDEpLCBNYXRoTUxPcGVyYXRv
ckRpY3Rpb25hcnk6OlByZWZpeCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5oCmluZGV4
IDVhMmE3OWYuLmYyYjFkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuaApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1hdGhNTFJhZGljYWxP
cGVyYXRvciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxPcGVyYXRvciB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJT
dHlsZT4pOworICAgIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHN0cmV0Y2hUbyhMYXlvdXRVbml0IGhl
aWdodEFib3ZlQmFzZWxpbmUsIExheW91dFVuaXQgZGVwdGhCZWxvd0Jhc2VsaW5lKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBs
b2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRl
ZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggYWYyZDkwYS4uZTZiYTU2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwCkBAIC01NSwxMiArNTUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gSW4g
b3JkZXIgdG8gYWNjZXB0IGludmFsaWQgbWFya3VwIGFuZCB0byBoYW5kbGUgPG1yb290PiBhbmQg
PG1zcXJ0PiBjb25zaXN0ZW50bHksIHdlIHdpbGwgYWxsb3cgYW55IG51bWJlciBvZiBjaGlsZHJl
biBpbiB0aGUgQmFzZVdyYXBwZXIgb2YgPG1yb290PiB0b28uCiAvLyBXZSB3aWxsIGFsbG93IHRo
ZSBJbmRleFdyYXBwZXIgdG8gYmUgZW1wdHkgYW5kIGl0IHdpbGwgYWx3YXlzIGNvbnRhaW4gdGhl
IGxhc3QgY2hpbGQgb2YgdGhlIDxtcm9vdD4gaWYgdGhlcmUgYXJlIGF0IGxlYXN0IDIgZWxlbWVu
dHMuCiAKLVJlbmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhNTFJvb3QoRWxlbWVudCYgZWxlbWVu
dCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxSb290OjpSZW5kZXJN
YXRoTUxSb290KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAg
ICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CiAK
LVJlbmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhNTFJvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFJvb3Q6OlJlbmRlck1hdGhN
TFJvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJNYXRoTUxCbG9jayhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9v
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgK
aW5kZXggZWNhNTc1MS4uYWE0Yzg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKQEAgLTQyLDggKzQyLDggQEAgY2xhc3MgUmVu
ZGVyTWF0aE1MUm9vdCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBmcmllbmQgY2xhc3Mg
UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI7CiAKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb290
KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWF0aE1MUm9vdChE
b2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxSb290KEVs
ZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOworICAgIFJlbmRlck1hdGhNTFJvb3QoRG9jdW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJl
bmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwpAQCAtNzksNyArNzksNyBAQCBj
bGFzcyBSZW5kZXJNYXRoTUxSb290V3JhcHBlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxS
b3cgewogZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhNTFJvb3Q7CiAKIHB1YmxpYzoKLSAgICBSZW5k
ZXJNYXRoTUxSb290V3JhcHBlcihEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorICAgIFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgICAgICA6IFJlbmRlck1hdGhNTFJvdyhk
b2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKaW5kZXggY2Yw
NDlhZC4uNjY5M2Y2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxSb3c6
OlJlbmRlck1hdGhNTFJvdyhFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBz
dHlsZSkKK1JlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0aE1MUm93KEVsZW1lbnQmIGVsZW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1l
bnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CiAKLVJlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0
aE1MUm93KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJNYXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGRvY3VtZW50LCBX
VEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm93LmgKaW5kZXggYjg3ZDk2NC4uMDY0MDhiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCkBAIC0z
Niw4ICszNiw4IEBAIGNsYXNzIFJlbmRlck1hdGhNTFJvb3Q7CiAKIGNsYXNzIFJlbmRlck1hdGhN
TFJvdyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0
aE1MUm93KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Ci0gICAgUmVuZGVyTWF0aE1M
Um93KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlck1hdGhNTFJv
dyhFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKKyAgICBSZW5kZXJNYXRoTUxSb3coRG9j
dW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAgc3RhdGljIFJlbmRlclB0cjxSZW5k
ZXJNYXRoTUxSb3c+IGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihSZW5kZXJNYXRo
TUxSb290Jik7CiAgICAgdm9pZCB1cGRhdGVPcGVyYXRvclByb3BlcnRpZXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMu
Y3BwCmluZGV4IGI1YWRjMjMuLjA1NjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcApAQCAtNTUsNyArNTUs
NyBAQCBzdGF0aWMgYm9vbCBpc1ByZXNjcmlwdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9i
amVjdCkKICAgICByZXR1cm4gcmVuZGVyT2JqZWN0Lm5vZGUoKSAmJiByZW5kZXJPYmplY3Qubm9k
ZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptcHJlc2NyaXB0c1RhZyk7CiB9CiAKLVJlbmRl
ck1hdGhNTFNjcmlwdHM6OlJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYgZWxlbWVudCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZW5kZXJNYXRo
TUxTY3JpcHRzKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAg
ICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBt
X2Jhc2VXcmFwcGVyKDApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCmluZGV4IDE3OWM0YjIuLmE4NmYxN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2Ny
aXB0cy5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
Q2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgUmVuZGVyTWF0
aE1MU2NyaXB0c1dyYXBwZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSwgV3JhcHBlclR5cGUga2luZCkKKyAgICBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBl
cihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgV3JhcHBlclR5
cGUga2luZCkKICAgICAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhkb2N1bWVudCwgV1RGOjptb3Zl
KHN0eWxlKSkKICAgICAgICAgLCBtX2tpbmQoa2luZCkKICAgICB7CkBAIC03MSw3ICs3MSw3IEBA
IGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHMgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxv
Y2sgewogZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyOwogCiBwdWJsaWM6
Ci0gICAgUmVuZGVyTWF0aE1MU2NyaXB0cyhFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4p
OworICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7
CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
Q2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCmluZGV4IDI4NDRh
MDMuLmViYTY4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAotUmVuZGVyTWF0aE1M
U3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50LCBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRoTUxT
cGFjZShNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAg
ICAsIG1fd2lkdGgoMCkKICAgICAsIG1faGVpZ2h0KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKaW5kZXggY2RmYzU3MS4uNjRl
NDlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU3BhY2UuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
CiBjbGFzcyBSZW5kZXJNYXRoTUxTcGFjZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9j
ayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVsZW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0aE1MU3BhY2UoTWF0aE1MVGV4dEVs
ZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIE1hdGhNTFRleHRFbGVtZW50JiBlbGVt
ZW50KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MVGV4dEVsZW1lbnQmPihub2RlRm9yTm9u
QW5vbnltb3VzKCkpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcAppbmRleCA0YmU3
NjIwLi41MDdhZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAKQEAgLTM0LDEyICszNCwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1SZW5kZXJNYXRoTUxTcXVhcmVSb290OjpSZW5k
ZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyTWF0aE1MU3F1YXJlUm9vdDo6UmVuZGVyTWF0aE1MU3F1YXJlUm9vdChF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJN
YXRoTUxSb290KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CiAKLVJlbmRlck1hdGhN
TFNxdWFyZVJvb3Q6OlJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFNxdWFyZVJvb3Q6OlJlbmRl
ck1hdGhNTFNxdWFyZVJvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJNYXRoTUxSb290KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUp
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTcXVhcmVSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNxdWFyZVJvb3QuaAppbmRleCA2MTQwMDU4Li45ZTk1NTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFy
ZVJvb3QuaApAQCAtMzgsOCArMzgsOCBAQCBjbGFzcyBSZW5kZXJNYXRoTUxNZW5jbG9zZTsKIC8v
IFJlbmRlciBzcXJ0KGJhc2UpLCB1c2luZyByYWRpY2FsIG5vdGF0aW9uLgogY2xhc3MgUmVuZGVy
TWF0aE1MU3F1YXJlUm9vdCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb290IHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0
eWxlPik7Ci0gICAgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdChEb2N1bWVudCYsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJNYXRoTUxTcXVhcmVSb290KEVsZW1lbnQmLCBSZWY8UmVu
ZGVyU3R5bGU+JiYpOworICAgIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QoRG9jdW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+JiYpOwogICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MU3F1YXJl
Um9vdD4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKFJlbmRlck1hdGhNTE1lbmNs
b3NlJik7CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCA5OWE1ZWIxLi5kMjY3N2YwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFRva2VuLmNwcApAQCAtMzYsMTMgKzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCi1SZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0
aE1MVG9rZW4oRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0aE1MVG9rZW4oRWxlbWVudCYgZWxlbWVudCwgUmVm
PFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fY29udGFpbnNFbGVtZW50KGZhbHNlKQogewogfQog
Ci1SZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0aE1MVG9rZW4oRG9jdW1lbnQmIGRvY3VtZW50
LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlck1hdGhNTFRva2VuOjpSZW5kZXJN
YXRoTUxUb2tlbihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
ICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAg
ICwgbV9jb250YWluc0VsZW1lbnQoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKaW5kZXggMGE0ZDY0YS4uNGQ1NmIw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uaApAQCAtMzYsOCArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBj
bGFzcyBSZW5kZXJNYXRoTUxUb2tlbiA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyTWF0aE1MVG9rZW4oRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKLSAgICBSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
KTsKKyAgICBSZW5kZXJNYXRoTUxUb2tlbihFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsK
KyAgICBSZW5kZXJNYXRoTUxUb2tlbihEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAK
ICAgICBNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1h
dGhNTFRleHRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zl
ci5jcHAKaW5kZXggZGU0NjkzMS4uNzlhNzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcApAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxO
YW1lczsKICAgICAKLVJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJPdmVy
KEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyTWF0
aE1MVW5kZXJPdmVyOjpSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVudCYgZWxlbWVudCwgUmVm
PFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKIHsKICAgICAvLyBEZXRlcm1pbmUgd2hhdCBraW5kIG9mIHVuZGVy
L292ZXIgZXhwcmVzc2lvbiB3ZSBoYXZlIGJ5IGVsZW1lbnQgbmFtZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKaW5k
ZXggNmY2NTNkNS4uZDQ2OTRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFJlbmRlck1hdGhNTFVuZGVyT3ZlciBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1M
VW5kZXJPdmVyKEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyTWF0
aE1MVW5kZXJPdmVyKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIAogICAgIHZp
cnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cAppbmRleCA2Yzk4NTY4Li5iMzEyYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIEJhc2ljU2hh
cGVDaXJjbGU6OnBhdGgoUGF0aCYgcGF0aCwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkK
ICAgICApKTsKIH0KIAotUGFzc1JlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlQ2lyY2xlOjpibGVu
ZChjb25zdCBCYXNpY1NoYXBlJiBvdGhlciwgZG91YmxlIHByb2dyZXNzKSBjb25zdAorUmVmPEJh
c2ljU2hhcGU+IEJhc2ljU2hhcGVDaXJjbGU6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIG90aGVy
LCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHR5cGUoKSA9PSBvdGhlci50
eXBlKCkpOwogICAgIGNvbnN0IGF1dG8mIG90aGVyQ2lyY2xlID0gZG93bmNhc3Q8QmFzaWNTaGFw
ZUNpcmNsZT4ob3RoZXIpOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgQmFzaWNTaGFwZUVsbGlw
c2U6OnBhdGgoUGF0aCYgcGF0aCwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKICAgICAg
ICAgcmFkaXVzWSAqIDIpKTsKIH0KIAotUGFzc1JlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlRWxs
aXBzZTo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJsZSBwcm9ncmVzcykgY29u
c3QKK1JlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlRWxsaXBzZTo6YmxlbmQoY29uc3QgQmFzaWNT
aGFwZSYgb3RoZXIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKIHsKICAgICBBU1NFUlQodHlwZSgp
ID09IG90aGVyLnR5cGUoKSk7CiAgICAgY29uc3QgYXV0byYgb3RoZXJFbGxpcHNlID0gZG93bmNh
c3Q8QmFzaWNTaGFwZUVsbGlwc2U+KG90aGVyKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIEJh
c2ljU2hhcGVQb2x5Z29uOjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3gpCiAgICAgcGF0aC5jbG9zZVN1YnBhdGgoKTsKIH0KIAotUGFzc1JlZjxCYXNpY1NoYXBl
PiBCYXNpY1NoYXBlUG9seWdvbjo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJs
ZSBwcm9ncmVzcykgY29uc3QKK1JlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlUG9seWdvbjo6Ymxl
bmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKIHsKICAg
ICBBU1NFUlQodHlwZSgpID09IG90aGVyLnR5cGUoKSk7CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2
b2lkIEJhc2ljU2hhcGVJbnNldDo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94KQogICAgIHBhdGguYWRkUm91bmRlZFJlY3Qocik7CiB9CiAKLVBhc3NSZWY8QmFz
aWNTaGFwZT4gQmFzaWNTaGFwZUluc2V0OjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBvdGhlciwg
ZG91YmxlIHByb2dyZXNzKSBjb25zdAorUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVJbnNldDo6
YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKIHsK
ICAgICBBU1NFUlQodHlwZSgpID09IG90aGVyLnR5cGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKaW5kZXggNDk0OGRmMS4uODA3YTc0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0aCYsIGNvbnN0IEZs
b2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIFdpbmRSdWxlIHdpbmRSdWxlKCkgY29uc3QgeyBy
ZXR1cm4gUlVMRV9OT05aRVJPOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmPEJhc2ljU2hhcGU+IGJs
ZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlJiwgZG91YmxlKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKIH07CkBAIC0xNTksNyArMTU5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmFkaXVzKEJhc2ljU2hhcGVSYWRpdXMgcmFkaXVz
KSB7IG1fcmFkaXVzID0gV1RGOjptb3ZlKHJhZGl1cyk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBw
YXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYsIGRvdWJsZSkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFw
ZSYsIGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhc2ljU2hhcGVDaXJjbGVUeXBlOyB9CiBwcml2YXRlOgpA
QCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJhZGl1c1koQmFzaWNTaGFw
ZVJhZGl1cyByYWRpdXNZKSB7IG1fcmFkaXVzWSA9IFdURjo6bW92ZShyYWRpdXNZKTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0aCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgUGFzc1JlZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlJiwg
ZG91YmxlKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxCYXNpY1NoYXBlPiBibGVu
ZChjb25zdCBCYXNpY1NoYXBlJiwgZG91YmxlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFzaWNTaGFwZUVsbGlwc2VU
eXBlOyB9CiBwcml2YXRlOgpAQCAtMjEwLDcgKzIxMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFw
cGVuZFBvaW50KExlbmd0aCB4LCBMZW5ndGggeSkgeyBtX3ZhbHVlcy5hcHBlbmQoV1RGOjptb3Zl
KHgpKTsgbV92YWx1ZXMuYXBwZW5kKFdURjo6bW92ZSh5KSk7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBh
c3NSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYsIGRvdWJsZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNT
aGFwZSYsIGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFdpbmRSdWxlIHdp
bmRSdWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93aW5kUnVsZTsgfQogCkBAIC0yNDks
NyArMjQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Qm90dG9tTGVmdFJhZGl1cyhMZW5ndGhT
aXplIHJhZGl1cykgeyBtX2JvdHRvbUxlZnRSYWRpdXMgPSBXVEY6Om1vdmUocmFkaXVzKTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0aCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgUGFzc1JlZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBl
JiwgZG91YmxlKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxCYXNpY1NoYXBlPiBi
bGVuZChjb25zdCBCYXNpY1NoYXBlJiwgZG91YmxlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFzaWNTaGFwZUluc2V0
VHlwZTsgfQogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9EYXRhUmVmLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRGF0YVJlZi5o
CmluZGV4IDkyNDQ1MzcuLmZiOGZkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9EYXRhUmVmLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0RhdGFSZWYuaApAQCAtMjQsMTQgKzI0LDEzIEBACiAjaWZuZGVmIERhdGFSZWZfaAogI2RlZmlu
ZSBEYXRhUmVmX2gKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cyBEYXRhUmVmIHsKIHB1YmxpYzoKLSAgICBEYXRhUmVmKFBhc3NSZWY8VD4gZGF0YSkgOiBtX2Rh
dGEoV1RGOjptb3ZlKGRhdGEpKSB7IH0KKyAgICBEYXRhUmVmKFJlZjxUPiYmIGRhdGEpIDogbV9k
YXRhKFdURjo6bW92ZShkYXRhKSkgeyB9CiAgICAgRGF0YVJlZihjb25zdCBEYXRhUmVmJiBvdGhl
cikgOiBtX2RhdGEoY29uc3RfY2FzdDxUJj4ob3RoZXIubV9kYXRhLmdldCgpKSkgeyB9CiAgICAg
RGF0YVJlZiYgb3BlcmF0b3I9KGNvbnN0IERhdGFSZWYmIG90aGVyKSB7IG1fZGF0YSA9IGNvbnN0
X2Nhc3Q8VCY+KG90aGVyLm1fZGF0YS5nZXQoKSk7IHJldHVybiAqdGhpczsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcAppbmRleCAw
NDE0Yzc4Li41N2VjZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvTmluZVBpZWNlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9OaW5lUGllY2VJbWFnZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgaW5saW5lIE5pbmVQaWVjZUlt
YWdlRGF0YTo6TmluZVBpZWNlSW1hZ2VEYXRhKGNvbnN0IE5pbmVQaWVjZUltYWdlRGF0YSYgb3Ro
ZXIpCiB7CiB9CiAKLVBhc3NSZWY8TmluZVBpZWNlSW1hZ2VEYXRhPiBOaW5lUGllY2VJbWFnZURh
dGE6OmNvcHkoKSBjb25zdAorUmVmPE5pbmVQaWVjZUltYWdlRGF0YT4gTmluZVBpZWNlSW1hZ2VE
YXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOaW5lUGllY2VJ
bWFnZURhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L05pbmVQaWVjZUltYWdlLmgKaW5kZXggZDY4NjhmZi4uNWJhYjM2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmgKQEAgLTM3LDggKzM3LDgg
QEAgZW51bSBFTmluZVBpZWNlSW1hZ2VSdWxlIHsKIAogY2xhc3MgTmluZVBpZWNlSW1hZ2VEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8TmluZVBpZWNlSW1hZ2VEYXRhPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWY8TmluZVBpZWNlSW1hZ2VEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IE5pbmVQaWVjZUltYWdlRGF0YSk7IH0KLSAgICBQYXNzUmVmPE5pbmVQaWVjZUlt
YWdlRGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8TmluZVBpZWNlSW1hZ2VEYXRh
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE5pbmVQaWVjZUltYWdlRGF0YSk7IH0K
KyAgICBSZWY8TmluZVBpZWNlSW1hZ2VEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTmluZVBpZWNlSW1hZ2VEYXRhJikgY29uc3Q7CiAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IE5pbmVQaWVjZUltYWdlRGF0YSYgbykgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKaW5kZXggZjdiODlmYy4uNTZlY2RiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC04NiwxNyArODYsMTcgQEAgaW5saW5lIFJl
bmRlclN0eWxlJiBkZWZhdWx0U3R5bGUoKQogICAgIHJldHVybiBzdHlsZTsKIH0KIAotUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpCitSZWY8UmVuZGVyU3R5bGU+IFJl
bmRlclN0eWxlOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRlclN0
eWxlKGRlZmF1bHRTdHlsZSgpKSk7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclN0
eWxlOjpjcmVhdGVEZWZhdWx0U3R5bGUoKQorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6
Y3JlYXRlRGVmYXVsdFN0eWxlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJT
dHlsZSh0cnVlKSk7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSwgRURpc3BsYXkgZGlzcGxheSkKK1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
LCBFRGlzcGxheSBkaXNwbGF5KQogewogICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlKCk7CiAgICAgbmV3U3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwpA
QCAtMTA1LDEyICsxMDUsMTIgQEAgUGFzc1JlZjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3QKICAgICByZXR1cm4g
bmV3U3R5bGU7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjbG9uZShj
b25zdCBSZW5kZXJTdHlsZSogb3RoZXIpCitSZWY8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpj
bG9uZShjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVuZGVyU3R5bGUoKm90aGVyKSk7CiB9CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IFJlbmRl
clN0eWxlOjpjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmIHBzZXVkb1N0eWxlKQorUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y3JlYXRl
U3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwc2V1ZG9T
dHlsZSkKIHsKICAgICBBU1NFUlQocHNldWRvU3R5bGUuc3R5bGVUeXBlKCkgPT0gQkVGT1JFIHx8
IHBzZXVkb1N0eWxlLnN0eWxlVHlwZSgpID09IEFGVEVSKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA5YWE0MjU5Li43YzBjZWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNDgyLDEz
ICs0ODIsMTMgQEAgcHJpdmF0ZToKICAgICBBTFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJik7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxSZW5kZXJTdHls
ZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFBhc3NSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZURlZmF1
bHRTdHlsZSgpOwotICAgIHN0YXRpYyBQYXNzUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgRURpc3Bs
YXkpOwotICAgIHN0YXRpYyBQYXNzUmVmPFJlbmRlclN0eWxlPiBjbG9uZShjb25zdCBSZW5kZXJT
dHlsZSopOworICAgIHN0YXRpYyBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZSgpOworICAgIHN0YXRp
YyBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZURlZmF1bHRTdHlsZSgpOworICAgIHN0YXRpYyBSZWY8
UmVuZGVyU3R5bGU+IGNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlLCBFRGlzcGxheSk7CisgICAgc3RhdGljIFJlZjxSZW5kZXJTdHls
ZT4gY2xvbmUoY29uc3QgUmVuZGVyU3R5bGUqKTsKIAogICAgIC8vIENyZWF0ZSBhIFJlbmRlclN0
eWxlIGZvciBnZW5lcmF0ZWQgY29udGVudCBieSBpbmhlcml0aW5nIGZyb20gYSBwc2V1ZG8gc3R5
bGUuCi0gICAgc3RhdGljIFBhc3NSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZVN0eWxlSW5oZXJpdGlu
Z0Zyb21Qc2V1ZG9TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUpOworICAgIHN0
YXRpYyBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZVN0eWxlSW5oZXJpdGluZ0Zyb21Qc2V1ZG9TdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUpOwogCiAgICAgZW51bSBJc0F0U2hhZG93
Qm91bmRhcnkgewogICAgICAgICBBdFNoYWRvd0JvdW5kYXJ5LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAKaW5kZXggN2QyOWNhOC4uYTg2
NDkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBjb25zdCBTVkdSZW5kZXJTdHlsZSYg
ZGVmYXVsdFNWR1N0eWxlKCkKICAgICByZXR1cm4gKnN0eWxlLmdldCgpLmdldCgpOwogfQogCi1Q
YXNzUmVmPFNWR1JlbmRlclN0eWxlPiBTVkdSZW5kZXJTdHlsZTo6Y3JlYXRlRGVmYXVsdFN0eWxl
KCkKK1JlZjxTVkdSZW5kZXJTdHlsZT4gU1ZHUmVuZGVyU3R5bGU6OmNyZWF0ZURlZmF1bHRTdHls
ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUmVuZGVyU3R5bGUoQ3JlYXRlRGVm
YXVsdCkpOwogfQpAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgU1ZHUmVuZGVyU3R5bGU6OlNWR1Jl
bmRlclN0eWxlKGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvdGhlcikKIHsKIH0KIAotUGFzc1JlZjxT
VkdSZW5kZXJTdHlsZT4gU1ZHUmVuZGVyU3R5bGU6OmNvcHkoKSBjb25zdAorUmVmPFNWR1JlbmRl
clN0eWxlPiBTVkdSZW5kZXJTdHlsZTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU1ZHUmVuZGVyU3R5bGUoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKaW5kZXggMDE0MzJmZS4uYmRkYWZmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgK
QEAgLTQxLDkgKzQxLDkgQEAgY2xhc3MgUmVuZGVyT2JqZWN0OwogCiBjbGFzcyBTVkdSZW5kZXJT
dHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR1JlbmRlclN0eWxlPiB7ICAgIAogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmPFNWR1JlbmRlclN0eWxlPiBjcmVhdGVEZWZhdWx0U3R5bGUoKTsK
LSAgICBzdGF0aWMgUGFzc1JlZjxTVkdSZW5kZXJTdHlsZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdSZW5kZXJTdHlsZSk7IH0KLSAgICBQYXNzUmVmPFNWR1JlbmRlclN0eWxl
PiBjb3B5KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTVkdSZW5kZXJTdHlsZT4gY3JlYXRlRGVm
YXVsdFN0eWxlKCk7CisgICAgc3RhdGljIFJlZjxTVkdSZW5kZXJTdHlsZT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdSZW5kZXJTdHlsZSk7IH0KKyAgICBSZWY8U1ZHUmVuZGVy
U3R5bGU+IGNvcHkoKSBjb25zdDsKICAgICB+U1ZHUmVuZGVyU3R5bGUoKTsKIAogICAgIGJvb2wg
aW5oZXJpdGVkTm90RXF1YWwoY29uc3QgU1ZHUmVuZGVyU3R5bGUqKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAK
aW5kZXggN2RhNjBkOS4uM2QyMDRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgaW5s
aW5lIFN0eWxlRmlsbERhdGE6OlN0eWxlRmlsbERhdGEoY29uc3QgU3R5bGVGaWxsRGF0YSYgb3Ro
ZXIpCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVGaWxsRGF0YT4gU3R5bGVGaWxsRGF0YTo6Y29weSgp
IGNvbnN0CitSZWY8U3R5bGVGaWxsRGF0YT4gU3R5bGVGaWxsRGF0YTo6Y29weSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVGaWxsRGF0YSgqdGhpcykpOwogfQpAQCAt
MTA0LDcgKzEwNCw3IEBAIGlubGluZSBTdHlsZVN0cm9rZURhdGE6OlN0eWxlU3Ryb2tlRGF0YShj
b25zdCBTdHlsZVN0cm9rZURhdGEmIG90aGVyKQogewogfQogCi1QYXNzUmVmPFN0eWxlU3Ryb2tl
RGF0YT4gU3R5bGVTdHJva2VEYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZVN0cm9rZURhdGE+
IFN0eWxlU3Ryb2tlRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVTdHJva2VEYXRhKCp0aGlzKSk7CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgaW5saW5l
IFN0eWxlU3RvcERhdGE6OlN0eWxlU3RvcERhdGEoY29uc3QgU3R5bGVTdG9wRGF0YSYgb3RoZXIp
CiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVTdG9wRGF0YT4gU3R5bGVTdG9wRGF0YTo6Y29weSgpIGNv
bnN0CitSZWY8U3R5bGVTdG9wRGF0YT4gU3R5bGVTdG9wRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTdG9wRGF0YSgqdGhpcykpOwogfQpAQCAtMTU5
LDcgKzE1OSw3IEBAIGlubGluZSBTdHlsZVRleHREYXRhOjpTdHlsZVRleHREYXRhKGNvbnN0IFN0
eWxlVGV4dERhdGEmIG90aGVyKQogewogfQogCi1QYXNzUmVmPFN0eWxlVGV4dERhdGE+IFN0eWxl
VGV4dERhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlVGV4dERhdGE+IFN0eWxlVGV4dERhdGE6
OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlVGV4dERhdGEo
KnRoaXMpKTsKIH0KQEAgLTE4Niw3ICsxODYsNyBAQCBpbmxpbmUgU3R5bGVNaXNjRGF0YTo6U3R5
bGVNaXNjRGF0YShjb25zdCBTdHlsZU1pc2NEYXRhJiBvdGhlcikKIHsKIH0KIAotUGFzc1JlZjxT
dHlsZU1pc2NEYXRhPiBTdHlsZU1pc2NEYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZU1pc2NE
YXRhPiBTdHlsZU1pc2NEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZU1pc2NEYXRhKCp0aGlzKSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW5saW5l
IFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKGNvbnN0IFN0eWxlU2hhZG93
U1ZHRGF0YSYgb3RoZXIpCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVTaGFkb3dTVkdEYXRhPiBTdHls
ZVNoYWRvd1NWR0RhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlU2hhZG93U1ZHRGF0YT4gU3R5
bGVTaGFkb3dTVkdEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVNoYWRvd1NWR0RhdGEoKnRoaXMpKTsKIH0KQEAgLTIzOCw3ICsyMzgsNyBAQCBpbmxp
bmUgU3R5bGVSZXNvdXJjZURhdGE6OlN0eWxlUmVzb3VyY2VEYXRhKGNvbnN0IFN0eWxlUmVzb3Vy
Y2VEYXRhJiBvdGhlcikKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVJlc291cmNlRGF0YT4gU3R5bGVS
ZXNvdXJjZURhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlUmVzb3VyY2VEYXRhPiBTdHlsZVJl
c291cmNlRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVSZXNvdXJjZURhdGEoKnRoaXMpKTsKIH0KQEAgLTI2NSw3ICsyNjUsNyBAQCBpbmxpbmUgU3R5
bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE6OlN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhKGNvbnN0
IFN0eWxlSW5oZXJpdAogewogfQogCi1QYXNzUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRh
PiBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVJbmhl
cml0ZWRSZXNvdXJjZURhdGE+IFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhOjpjb3B5KCkgY29u
c3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0
YSgqdGhpcykpOwogfQpAQCAtMzAwLDcgKzMwMCw3IEBAIGlubGluZSBTdHlsZUxheW91dERhdGE6
OlN0eWxlTGF5b3V0RGF0YShjb25zdCBTdHlsZUxheW91dERhdGEmIG90aGVyKQogewogfQogCi1Q
YXNzUmVmPFN0eWxlTGF5b3V0RGF0YT4gU3R5bGVMYXlvdXREYXRhOjpjb3B5KCkgY29uc3QKK1Jl
ZjxTdHlsZUxheW91dERhdGE+IFN0eWxlTGF5b3V0RGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVMYXlvdXREYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmgKaW5k
ZXggMWU1MWVlMS4uNzZjMWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaApAQCAtMTE3LDggKzExNyw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAvLyBJbmhlcml0ZWQvTm9uLUluaGVyaXRlZCBTdHlsZSBEYXRhc3Ry
dWN0dXJlcwogICAgIGNsYXNzIFN0eWxlRmlsbERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHls
ZUZpbGxEYXRhPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZUZp
bGxEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsbERhdGEpOyB9
Ci0gICAgICAgIFBhc3NSZWY8U3R5bGVGaWxsRGF0YT4gY29weSgpIGNvbnN0OworICAgICAgICBz
dGF0aWMgUmVmPFN0eWxlRmlsbERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3R5bGVGaWxsRGF0YSk7IH0KKyAgICAgICAgUmVmPFN0eWxlRmlsbERhdGE+IGNvcHkoKSBjb25z
dDsKIAogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVGaWxsRGF0YSYpIGNvbnN0
OwogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVGaWxsRGF0YSYgb3RoZXIpIGNv
bnN0CkBAIC0xNDEsOCArMTQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3Mg
U3R5bGVTdHJva2VEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVTdHJva2VEYXRhPiB7CiAg
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVN0cm9rZURhdGE+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTdHJva2VEYXRhKTsgfQotICAgICAgICBQ
YXNzUmVmPFN0eWxlU3Ryb2tlRGF0YT4gY29weSgpIGNvbnN0OworICAgICAgICBzdGF0aWMgUmVm
PFN0eWxlU3Ryb2tlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVN0
cm9rZURhdGEpOyB9CisgICAgICAgIFJlZjxTdHlsZVN0cm9rZURhdGE+IGNvcHkoKSBjb25zdDsK
IAogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTdHJva2VEYXRhJikgY29uc3Q7
CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVN0cm9rZURhdGEmIG90aGVyKSBj
b25zdApAQCAtMTcxLDggKzE3MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IFN0eWxlU3RvcERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVN0b3BEYXRhPiB7CiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZVN0b3BEYXRhPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU3RvcERhdGEpOyB9Ci0gICAgICAgIFBhc3NSZWY8
U3R5bGVTdG9wRGF0YT4gY29weSgpIGNvbnN0OworICAgICAgICBzdGF0aWMgUmVmPFN0eWxlU3Rv
cERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTdG9wRGF0YSk7IH0K
KyAgICAgICAgUmVmPFN0eWxlU3RvcERhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTdG9wRGF0YSYpIGNvbnN0OwogICAgICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU3R5bGVTdG9wRGF0YSYgb3RoZXIpIGNvbnN0CkBAIC0xOTAsOCArMTkw
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU3R5bGVUZXh0RGF0YSA6IHB1
YmxpYyBSZWZDb3VudGVkPFN0eWxlVGV4dERhdGE+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmPFN0eWxlVGV4dERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVUZXh0RGF0YSk7IH0KLSAgICAgICAgUGFzc1JlZjxTdHlsZVRleHREYXRhPiBjb3B5
KCkgY29uc3Q7CisgICAgICAgIHN0YXRpYyBSZWY8U3R5bGVUZXh0RGF0YT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVRleHREYXRhKTsgfQorICAgICAgICBSZWY8U3R5bGVU
ZXh0RGF0YT4gY29weSgpIGNvbnN0OwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0eWxlVGV4dERhdGEmIG90aGVyKSBjb25zdDsKICAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFN0eWxlVGV4dERhdGEmIG90aGVyKSBjb25zdApAQCAtMjA5LDggKzIwOSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBOb3RlOiB0aGUgcnVsZSBmb3IgdGhpcyBjbGFz
cyBpcywgKm5vIGluaGVyaXRhbmNlKiBvZiB0aGVzZSBwcm9wcwogICAgIGNsYXNzIFN0eWxlTWlz
Y0RhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZU1pc2NEYXRhPiB7CiAgICAgcHVibGljOgot
ICAgICAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZU1pc2NEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlTWlzY0RhdGEpOyB9Ci0gICAgICAgIFBhc3NSZWY8U3R5bGVNaXNj
RGF0YT4gY29weSgpIGNvbnN0OworICAgICAgICBzdGF0aWMgUmVmPFN0eWxlTWlzY0RhdGE+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVNaXNjRGF0YSk7IH0KKyAgICAgICAg
UmVmPFN0eWxlTWlzY0RhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU3R5bGVNaXNjRGF0YSYpIGNvbnN0OwogICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU3R5bGVNaXNjRGF0YSYgb3RoZXIpIGNvbnN0CkBAIC0yMzIsOCArMjMyLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU3R5bGVTaGFkb3dTVkdEYXRhIDogcHVibGlj
IFJlZkNvdW50ZWQ8U3R5bGVTaGFkb3dTVkdEYXRhPiB7CiAgICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc1JlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVTaGFkb3dTVkdEYXRhKTsgfQotICAgICAgICBQYXNzUmVmPFN0eWxlU2hh
ZG93U1ZHRGF0YT4gY29weSgpIGNvbnN0OworICAgICAgICBzdGF0aWMgUmVmPFN0eWxlU2hhZG93
U1ZHRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVNoYWRvd1NWR0Rh
dGEpOyB9CisgICAgICAgIFJlZjxTdHlsZVNoYWRvd1NWR0RhdGE+IGNvcHkoKSBjb25zdDsKIAog
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRhJikgY29uc3Q7
CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVNoYWRvd1NWR0RhdGEmIG90aGVy
KSBjb25zdApAQCAtMjUxLDggKzI1MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBO
b24taW5oZXJpdGVkIHJlc291cmNlcwogICAgIGNsYXNzIFN0eWxlUmVzb3VyY2VEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8U3R5bGVSZXNvdXJjZURhdGE+IHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmPFN0eWxlUmVzb3VyY2VEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFN0eWxlUmVzb3VyY2VEYXRhKTsgfQotICAgICAgICBQYXNzUmVmPFN0eWxlUmVz
b3VyY2VEYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgICAgIHN0YXRpYyBSZWY8U3R5bGVSZXNvdXJj
ZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSZXNvdXJjZURhdGEp
OyB9CisgICAgICAgIFJlZjxTdHlsZVJlc291cmNlRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVJlc291cmNlRGF0YSYpIGNvbnN0OwogICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVSZXNvdXJjZURhdGEmIG90aGVyKSBjb25z
dApAQCAtMjcyLDggKzI3Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBJbmhlcml0
ZWQgcmVzb3VyY2VzCiAgICAgY2xhc3MgU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGEgOiBwdWJs
aWMgUmVmQ291bnRlZDxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gewogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFBhc3NSZWY8U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGEpOyB9
Ci0gICAgICAgIFBhc3NSZWY8U3R5bGVJbmhlcml0ZWRSZXNvdXJjZURhdGE+IGNvcHkoKSBjb25z
dDsKKyAgICAgICAgc3RhdGljIFJlZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSk7IH0K
KyAgICAgICAgUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRhPiBjb3B5KCkgY29uc3Q7CiAK
ICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VEYXRh
JikgY29uc3Q7CiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUluaGVyaXRlZFJl
c291cmNlRGF0YSYgb3RoZXIpIGNvbnN0CkBAIC0yOTMsOCArMjkzLDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIC8vIFBvc2l0aW9uaW5nIGFuZCBzaXppbmcgcHJvcGVydGllcy4KICAgICBj
bGFzcyBTdHlsZUxheW91dERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUxheW91dERhdGE+
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlTGF5b3V0RGF0YT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUxheW91dERhdGEpOyB9Ci0gICAg
ICAgIFBhc3NSZWY8U3R5bGVMYXlvdXREYXRhPiBjb3B5KCkgY29uc3Q7CisgICAgICAgIHN0YXRp
YyBSZWY8U3R5bGVMYXlvdXREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlTGF5b3V0RGF0YSk7IH0KKyAgICAgICAgUmVmPFN0eWxlTGF5b3V0RGF0YT4gY29weSgpIGNv
bnN0OwogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUxheW91dERhdGEmKSBj
b25zdDsKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTGF5b3V0RGF0YSYgb3Ro
ZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVCYWNrZ3JvdW5kRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVCYWNrZ3JvdW5kRGF0YS5jcHAKaW5kZXggYzUxYjgyNS4uMWJhMzZjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBpbmxpbmUgU3R5bGVCYWNrZ3JvdW5kRGF0YTo6U3R5bGVCYWNr
Z3JvdW5kRGF0YShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvKQogewogfQogCi1QYXNzUmVm
PFN0eWxlQmFja2dyb3VuZERhdGE+IFN0eWxlQmFja2dyb3VuZERhdGE6OmNvcHkoKSBjb25zdAor
UmVmPFN0eWxlQmFja2dyb3VuZERhdGE+IFN0eWxlQmFja2dyb3VuZERhdGE6OmNvcHkoKSBjb25z
dAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlQmFja2dyb3VuZERhdGEoKnRoaXMp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJh
Y2tncm91bmREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNr
Z3JvdW5kRGF0YS5oCmluZGV4IGIyOTk2ZGMuLjJlMWI2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaApAQCAtMzUsOCAr
MzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxlQmFja2dyb3VuZERhdGEg
OiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUJhY2tncm91bmREYXRhPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWY8U3R5bGVCYWNrZ3JvdW5kRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZUJhY2tncm91bmREYXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVCYWNr
Z3JvdW5kRGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8U3R5bGVCYWNrZ3JvdW5k
RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUJhY2tncm91bmREYXRh
KTsgfQorICAgIFJlZjxTdHlsZUJhY2tncm91bmREYXRhPiBjb3B5KCkgY29uc3Q7CiAgICAgflN0
eWxlQmFja2dyb3VuZERhdGEoKSB7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHls
ZUJhY2tncm91bmREYXRhJiBvKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQm94RGF0YS5jcHAKaW5kZXggYTExODdmZi4uMzkyNzA4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5jcHAKQEAgLTY3LDcg
KzY3LDcgQEAgaW5saW5lIFN0eWxlQm94RGF0YTo6U3R5bGVCb3hEYXRhKGNvbnN0IFN0eWxlQm94
RGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHlsZUJveERhdGE+IFN0eWxlQm94RGF0YTo6Y29w
eSgpIGNvbnN0CitSZWY8U3R5bGVCb3hEYXRhPiBTdHlsZUJveERhdGE6OmNvcHkoKSBjb25zdAog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlQm94RGF0YSgqdGhpcykpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5oCmluZGV4IDJjNmQw
MzMuLmVjMjU1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUJveERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVC
b3hEYXRhLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
dHlsZUJveERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUJveERhdGE+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZjxTdHlsZUJveERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVCb3hEYXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVCb3hEYXRhPiBjb3B5
KCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZUJveERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVCb3hEYXRhKTsgfQorICAgIFJlZjxTdHlsZUJveERhdGE+IGNv
cHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUJveERhdGEmIG8p
IGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUJveERhdGEmIG8pIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNh
dGVkRmxleGlibGVCb3hEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuY3BwCmluZGV4IDNjODM1OTIuLjMyZjc4MDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0
ZWRGbGV4aWJsZUJveERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuY3BwCkBAIC00OSw3ICs0OSw3IEBAIGlu
bGluZSBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OlN0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YShjb25zdCBTdHlsCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVEZXByZWNhdGVkRmxl
eGlibGVCb3hEYXRhPiBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE6OmNvcHkoKSBjb25z
dAorUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YT4gU3R5bGVEZXByZWNhdGVkRmxl
eGlibGVCb3hEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4
aWJsZUJveERhdGEuaAppbmRleCA2NGM5YzdmLi4yMGZlZThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhp
YmxlQm94RGF0YS5oCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5
bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWY8U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSk7IH0KLSAgICBQYXNzUmVm
PFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0YXRp
YyBSZWY8U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSk7IH0KKyAgICBSZWY8
U3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJikgY29uc3Q7
CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0
YSYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUZpbHRlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
RmlsdGVyRGF0YS5jcHAKaW5kZXggNzFjZmY2Mi4uYjBkM2JlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAgaW5saW5lIFN0eWxlRmlsdGVyRGF0YTo6U3R5bGVGaWx0ZXJEYXRhKGNvbnN0IFN0eWxl
RmlsdGVyRGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHlsZUZpbHRlckRhdGE+IFN0eWxlRmls
dGVyRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVGaWx0ZXJEYXRhPiBTdHlsZUZpbHRlckRh
dGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmlsdGVy
RGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlRmlsdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlRmlsdGVyRGF0YS5oCmluZGV4IGU5ODQ0NjEuLjIxMGQwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmgKQEAgLTM0LDggKzM0LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHlsZUZpbHRlckRhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxTdHlsZUZpbHRlckRhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZjxTdHlsZUZpbHRlckRhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVG
aWx0ZXJEYXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVGaWx0ZXJEYXRhPiBjb3B5KCkgY29uc3Q7
CisgICAgc3RhdGljIFJlZjxTdHlsZUZpbHRlckRhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVGaWx0ZXJEYXRhKTsgfQorICAgIFJlZjxTdHlsZUZpbHRlckRhdGE+IGNv
cHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUZpbHRlckRhdGEm
KSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVGaWx0ZXJEYXRhJiBvKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxl
eGlibGVCb3hEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZs
ZXhpYmxlQm94RGF0YS5jcHAKaW5kZXggNzc1ODg2Yi4uOTllNTVlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuY3Bw
CkBAIC00OSw3ICs0OSw3IEBAIGlubGluZSBTdHlsZUZsZXhpYmxlQm94RGF0YTo6U3R5bGVGbGV4
aWJsZUJveERhdGEoY29uc3QgU3R5bGVGbGV4aWJsZUJveERhdGEmIG8pCiB7CiB9CiAKLVBhc3NS
ZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IFN0eWxlRmxleGlibGVCb3hEYXRhOjpjb3B5KCkgY29u
c3QKK1JlZjxTdHlsZUZsZXhpYmxlQm94RGF0YT4gU3R5bGVGbGV4aWJsZUJveERhdGE6OmNvcHko
KSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmxleGlibGVCb3hEYXRh
KCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVGbGV4aWJsZUJveERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUZsZXhpYmxlQm94RGF0YS5oCmluZGV4IDBlMzM1MmMuLmQzMzJkZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5o
CkBAIC0zNSw4ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVGbGV4
aWJsZUJveERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUZsZXhpYmxlQm94RGF0YT4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlRmxleGlibGVCb3hEYXRhPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlRmxleGlibGVCb3hEYXRhKTsgfQotICAgIFBh
c3NSZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVm
PFN0eWxlRmxleGlibGVCb3hEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
eWxlRmxleGlibGVCb3hEYXRhKTsgfQorICAgIFJlZjxTdHlsZUZsZXhpYmxlQm94RGF0YT4gY29w
eSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmxleGlibGVCb3hE
YXRhJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlRmxleGlibGVCb3hE
YXRhJiBvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGFjMDdkNjYuLjIyMzcxZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFn
ZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotU3R5
bGVHZW5lcmF0ZWRJbWFnZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZShQYXNzUmVmPENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWU+IHZhbHVlKQorU3R5bGVHZW5lcmF0ZWRJbWFnZTo6U3R5bGVHZW5lcmF0ZWRJ
bWFnZShSZWY8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4mJiB2YWx1ZSkKICAgICA6IG1faW1hZ2VH
ZW5lcmF0b3JWYWx1ZShXVEY6Om1vdmUodmFsdWUpKQogICAgICwgbV9maXhlZFNpemUobV9pbWFn
ZUdlbmVyYXRvclZhbHVlLT5pc0ZpeGVkU2l6ZSgpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKaW5kZXggMzQxZGQ0Zi4u
OTc1YmJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVHZW5lcmF0ZWRJbWFnZS5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIENTU0ltYWdlR2VuZXJh
dG9yVmFsdWU7CiAKIGNsYXNzIFN0eWxlR2VuZXJhdGVkSW1hZ2UgZmluYWwgOiBwdWJsaWMgU3R5
bGVJbWFnZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVHZW5lcmF0ZWRJ
bWFnZT4gY3JlYXRlKFBhc3NSZWY8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4gdmFsdWUpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3R5bGVHZW5lcmF0ZWRJbWFnZT4gY3JlYXRlKFJlZjxDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlPiYmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHlsZUdlbmVyYXRlZEltYWdlKFdURjo6bW92ZSh2YWx1ZSkpKTsKICAgICB9CkBAIC01
Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFn
ZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KikgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICBTdHlsZUdlbmVyYXRlZEltYWdlKFBhc3NSZWY8Q1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZT4pOworICAgIGV4cGxpY2l0IFN0eWxlR2VuZXJhdGVkSW1hZ2UoUmVmPENTU0lt
YWdlR2VuZXJhdG9yVmFsdWU+JiYpOwogICAgIAogICAgIFJlZjxDU1NJbWFnZUdlbmVyYXRvclZh
bHVlPiBtX2ltYWdlR2VuZXJhdG9yVmFsdWU7CiAgICAgRmxvYXRTaXplIG1fY29udGFpbmVyU2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNw
cAppbmRleCAxYjE1ZGU0Li5iZGIzZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGlubGluZSBTdHls
ZUdyaWREYXRhOjpTdHlsZUdyaWREYXRhKGNvbnN0IFN0eWxlR3JpZERhdGEmIG8pCiB7CiB9CiAK
LVBhc3NSZWY8U3R5bGVHcmlkRGF0YT4gU3R5bGVHcmlkRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8
U3R5bGVHcmlkRGF0YT4gU3R5bGVHcmlkRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3R5bGVHcmlkRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKaW5kZXggYmViNGVmZi4uM2I5OWNm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5o
CkBAIC00Myw4ICs0Myw4IEBAIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgVmVjdG9yPFN0cmlu
Zz4sIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXCiAKIGNsYXNzIFN0eWxl
R3JpZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUdyaWREYXRhPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWY8U3R5bGVHcmlkRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZUdyaWREYXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVHcmlkRGF0YT4gY29w
eSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8U3R5bGVHcmlkRGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUdyaWREYXRhKTsgfQorICAgIFJlZjxTdHlsZUdyaWREYXRh
PiBjb3B5KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVHcmlkRGF0
YSYgbykgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmNwcAppbmRleCA4ZjVjOGViLi4xMDJiZTkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgaW5saW5lIFN0eWxlR3JpZEl0ZW1EYXRhOjpTdHlsZUdyaWRJ
dGVtRGF0YShjb25zdCBTdHlsZUdyaWRJdGVtRGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHls
ZUdyaWRJdGVtRGF0YT4gU3R5bGVHcmlkSXRlbURhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxl
R3JpZEl0ZW1EYXRhPiBTdHlsZUdyaWRJdGVtRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVHcmlkSXRlbURhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgKaW5kZXgg
YjE3NTQ2OS4uZDY2NzgxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgKQEAgLTQyLDggKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTdHlsZUdyaWRJdGVtRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxl
R3JpZEl0ZW1EYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U3R5bGVHcmlkSXRl
bURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVHcmlkSXRlbURhdGEp
OyB9Ci0gICAgUGFzc1JlZjxTdHlsZUdyaWRJdGVtRGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0
YXRpYyBSZWY8U3R5bGVHcmlkSXRlbURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3R5bGVHcmlkSXRlbURhdGEpOyB9CisgICAgUmVmPFN0eWxlR3JpZEl0ZW1EYXRhPiBjb3B5
KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVHcmlkSXRlbURhdGEm
IG8pIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcAppbmRleCA3ZjJlMWM1Li42MzNjYzUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRh
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBpbmxpbmUgU3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUlu
aGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKQogewogfQogCi1QYXNzUmVm
PFN0eWxlSW5oZXJpdGVkRGF0YT4gU3R5bGVJbmhlcml0ZWREYXRhOjpjb3B5KCkgY29uc3QKK1Jl
ZjxTdHlsZUluaGVyaXRlZERhdGE+IFN0eWxlSW5oZXJpdGVkRGF0YTo6Y29weSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVJbmhlcml0ZWREYXRhKCp0aGlzKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0
ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWRE
YXRhLmgKaW5kZXggYTY1YmVmZi4uZGVmMTQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaApAQCAtMzYsOCArMzYsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFN0eWxlSW5oZXJpdGVkRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHlsZUluaGVyaXRlZERhdGEpOyB9Ci0gICAgUGFzc1JlZjxTdHlsZUluaGVyaXRlZERhdGE+IGNv
cHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZUluaGVyaXRlZERhdGEpOyB9CisgICAgUmVmPFN0
eWxlSW5oZXJpdGVkRGF0YT4gY29weSgpIGNvbnN0OwogICAgIH5TdHlsZUluaGVyaXRlZERhdGEo
KTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG8pIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTWFy
cXVlZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTWFycXVl
ZURhdGEuY3BwCmluZGV4IDVlMjVlNDkuLjU5N2IzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5jcHAKQEAgLTQ1LDcgKzQ1LDcg
QEAgaW5saW5lIFN0eWxlTWFycXVlZURhdGE6OlN0eWxlTWFycXVlZURhdGEoY29uc3QgU3R5bGVN
YXJxdWVlRGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHlsZU1hcnF1ZWVEYXRhPiBTdHlsZU1h
cnF1ZWVEYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZU1hcnF1ZWVEYXRhPiBTdHlsZU1hcnF1
ZWVEYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZU1h
cnF1ZWVEYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlTWFycXVlZURhdGEuaAppbmRleCA2OWU5ZGNjLi5kZDExYTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRhLmgKQEAgLTM0
LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHlsZU1hcnF1ZWVEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVNYXJxdWVlRGF0YT4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmPFN0eWxlTWFycXVlZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVNYXJxdWVlRGF0YSk7IH0KLSAgICBQYXNzUmVmPFN0eWxlTWFycXVlZURhdGE+
IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxlTWFycXVlZURhdGE+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVNYXJxdWVlRGF0YSk7IH0KKyAgICBSZWY8U3R5
bGVNYXJxdWVlRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0eWxlTWFycXVlZURhdGEmIG8pIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZU1hcnF1ZWVEYXRhJiBvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAKaW5kZXggNjhiNjE3OC4uM2Y3NzI4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNv
bERhdGEuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGlubGluZSBTdHlsZU11bHRpQ29sRGF0YTo6U3R5
bGVNdWx0aUNvbERhdGEoY29uc3QgU3R5bGVNdWx0aUNvbERhdGEmIG8pCiB7CiB9CiAKLVBhc3NS
ZWY8U3R5bGVNdWx0aUNvbERhdGE+IFN0eWxlTXVsdGlDb2xEYXRhOjpjb3B5KCkgY29uc3QKK1Jl
ZjxTdHlsZU11bHRpQ29sRGF0YT4gU3R5bGVNdWx0aUNvbERhdGE6OmNvcHkoKSBjb25zdAogewog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTXVsdGlDb2xEYXRhKCp0aGlzKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5o
CmluZGV4IDBlNDJlNmYuLmYzNzU2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oCkBAIC0zNyw4ICszNyw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVNdWx0aUNvbERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdHlsZU11bHRpQ29sRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxl
TXVsdGlDb2xEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlTXVsdGlD
b2xEYXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVNdWx0aUNvbERhdGE+IGNvcHkoKSBjb25zdDsK
KyAgICBzdGF0aWMgUmVmPFN0eWxlTXVsdGlDb2xEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFN0eWxlTXVsdGlDb2xEYXRhKTsgfQorICAgIFJlZjxTdHlsZU11bHRpQ29sRGF0
YT4gY29weSgpIGNvbnN0OwogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU11
bHRpQ29sRGF0YSYgbykgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTXVs
dGlDb2xEYXRhICZvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IGFiNzlkNzYuLjEyNjcz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCBpbmxpbmUgU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJ
bmhlcml0ZWREYQogewogfQogCi1QYXNzUmVmPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+IFN0eWxl
UmFyZUluaGVyaXRlZERhdGE6OmNvcHkoKSBjb25zdAorUmVmPFN0eWxlUmFyZUluaGVyaXRlZERh
dGE+IFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0eWxlUmFyZUluaGVyaXRlZERhdGEoKnRoaXMpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5oCmluZGV4IDJmOWVmZjYuLmE1ZDI4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaApAQCAtNDcsOCArNDcs
OCBAQCBjbGFzcyBTdHlsZUltYWdlOwogLy8gYWN0dWFsbHkgdXNlcyBvbmUgb2YgdGhlc2UgcHJv
cGVydGllcy4KIGNsYXNzIFN0eWxlUmFyZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHlsZVJhcmVJbmhlcml0ZWREYXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVSYXJlSW5oZXJpdGVk
RGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8U3R5bGVSYXJlSW5oZXJpdGVkRGF0
YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJhcmVJbmhlcml0ZWREYXRh
KTsgfQorICAgIFJlZjxTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiBjb3B5KCkgY29uc3Q7CiAgICAg
flN0eWxlUmFyZUluaGVyaXRlZERhdGEoKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHlsZVJhcmVJbmhlcml0ZWREYXRhJiBvKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApp
bmRleCBjNTI0YTBhLi44ZTdiZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC0xOTIs
NyArMTkyLDcgQEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KIHsKIH0KIAotUGFzc1JlZjxTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhPiBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpjb3B5KCkg
Y29uc3QKK1JlZjxTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhPiBTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCBk
ZjBiZWI2Li45NGI4ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTgwLDggKzgwLDggQEAg
ZW51bSBQYWdlU2l6ZVR5cGUgewogLy8gYWN0dWFsbHkgdXNlcyBvbmUgb2YgdGhlc2UgcHJvcGVy
dGllcy4KIGNsYXNzIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWY8U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YT4gY29weSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8U3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhKTsgfQorICAgIFJlZjxTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
PiBjb3B5KCkgY29uc3Q7CiAgICAgflN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKTsKICAgICAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Ny
b2xsU25hcFBvaW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVT
Y3JvbGxTbmFwUG9pbnRzLmNwcAppbmRleCA5Yzg2ZGZmLi5hYzFmNTE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRz
LmNwcApAQCAtNjQsNyArNjQsNyBAQCBpbmxpbmUgU3R5bGVTY3JvbGxTbmFwUG9pbnRzOjpTdHls
ZVNjcm9sbFNuYXBQb2ludHMoY29uc3QgU3R5bGVTY3JvbGxTbmFwUG9pbnRzJgogewogfQogCi1Q
YXNzUmVmPFN0eWxlU2Nyb2xsU25hcFBvaW50cz4gU3R5bGVTY3JvbGxTbmFwUG9pbnRzOjpjb3B5
KCkgY29uc3QKK1JlZjxTdHlsZVNjcm9sbFNuYXBQb2ludHM+IFN0eWxlU2Nyb2xsU25hcFBvaW50
czo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVTY3JvbGxT
bmFwUG9pbnRzKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKaW5kZXggY2Y3ZDllYi4uNGVhY2UwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25h
cFBvaW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9s
bFNuYXBQb2ludHMuaApAQCAtNTAsOCArNTAsOCBAQCBMZW5ndGhTaXplIGRlZmF1bHRTY3JvbGxT
bmFwRGVzdGluYXRpb24oKTsKIAogY2xhc3MgU3R5bGVTY3JvbGxTbmFwUG9pbnRzIDogcHVibGlj
IFJlZkNvdW50ZWQ8U3R5bGVTY3JvbGxTbmFwUG9pbnRzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWY8U3R5bGVTY3JvbGxTbmFwUG9pbnRzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0eWxlU2Nyb2xsU25hcFBvaW50cyk7IH0KLSAgICBQYXNzUmVmPFN0eWxlU2Nyb2xs
U25hcFBvaW50cz4gY29weSgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8U3R5bGVTY3JvbGxTbmFw
UG9pbnRzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU2Nyb2xsU25hcFBv
aW50cyk7IH0KKyAgICBSZWY8U3R5bGVTY3JvbGxTbmFwUG9pbnRzPiBjb3B5KCkgY29uc3Q7CiAK
ICAgICBTY3JvbGxTbmFwUG9pbnRzIHhQb2ludHM7CiAgICAgU2Nyb2xsU25hcFBvaW50cyB5UG9p
bnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vy
cm91bmREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJv
dW5kRGF0YS5jcHAKaW5kZXggNzY2YTcwZi4uNWM5YmJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIGlubGluZSBTdHlsZVN1cnJvdW5kRGF0YTo6U3R5bGVTdXJyb3VuZERhdGEoY29uc3Qg
U3R5bGVTdXJyb3VuZERhdGEmIG8pCiB7CiB9CiAKLVBhc3NSZWY8U3R5bGVTdXJyb3VuZERhdGE+
IFN0eWxlU3Vycm91bmREYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZVN1cnJvdW5kRGF0YT4g
U3R5bGVTdXJyb3VuZERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFN0eWxlU3Vycm91bmREYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5oCmluZGV4IDBkY2UzMTguLjAwYmY1
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJv
dW5kRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJv
dW5kRGF0YS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U3R5bGVTdXJyb3VuZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVN1cnJvdW5kRGF0YT4g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlU3Vycm91bmREYXRhPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU3Vycm91bmREYXRhKTsgfQotICAgIFBhc3NS
ZWY8U3R5bGVTdXJyb3VuZERhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFN0eWxl
U3Vycm91bmREYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU3Vycm91
bmREYXRhKTsgfQorICAgIFJlZjxTdHlsZVN1cnJvdW5kRGF0YT4gY29weSgpIGNvbnN0OwogICAg
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVN1cnJvdW5kRGF0YSYgbykgY29uc3Q7
CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU3Vycm91bmREYXRhJiBvKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1E
YXRhLmNwcAppbmRleCBjM2Y5MWVhLi5lYWYzMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBpbmxpbmUgU3R5bGVUcmFuc2Zvcm1EYXRhOjpTdHlsZVRyYW5zZm9ybURhdGEoY29uc3Qg
U3R5bGVUcmFuc2Zvcm1EYXRhJiBvKQogewogfQogCi1QYXNzUmVmPFN0eWxlVHJhbnNmb3JtRGF0
YT4gU3R5bGVUcmFuc2Zvcm1EYXRhOjpjb3B5KCkgY29uc3QKK1JlZjxTdHlsZVRyYW5zZm9ybURh
dGE+IFN0eWxlVHJhbnNmb3JtRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVUcmFuc2Zvcm1EYXRhKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmgKaW5kZXggZTgyZWEy
MC4uNWE0NTI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlVHJhbnNmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVRyYW5zZm9ybURhdGEuaApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFN0eWxlVHJhbnNmb3JtRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlVHJh
bnNmb3JtRGF0YT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFN0eWxlVHJhbnNmb3Jt
RGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVRyYW5zZm9ybURhdGEp
OyB9Ci0gICAgUGFzc1JlZjxTdHlsZVRyYW5zZm9ybURhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBz
dGF0aWMgUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdHlsZVRyYW5zZm9ybURhdGEpOyB9CisgICAgUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4g
Y29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlVHJhbnNmb3Jt
RGF0YSYgbykgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlVHJhbnNmb3Jt
RGF0YSYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVZpc3VhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlVmlzdWFsRGF0YS5jcHAKaW5kZXggMjNlNmNkMi4uZDhmYjg4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgaW5saW5lIFN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKGNvbnN0IFN0
eWxlVmlzdWFsRGF0YSYgbykKIHsKIH0KIAotUGFzc1JlZjxTdHlsZVZpc3VhbERhdGE+IFN0eWxl
VmlzdWFsRGF0YTo6Y29weSgpIGNvbnN0CitSZWY8U3R5bGVWaXN1YWxEYXRhPiBTdHlsZVZpc3Vh
bERhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlVmlz
dWFsRGF0YSgqdGhpcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlVmlzdWFsRGF0YS5oCmluZGV4IDJiMmQ2MzAuLjViMjQ5NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKQEAgLTM0LDggKzM0
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHlsZVZpc3VhbERhdGEgOiBwdWJs
aWMgUmVmQ291bnRlZDxTdHlsZVZpc3VhbERhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZjxTdHlsZVZpc3VhbERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVWaXN1YWxEYXRhKTsgfQotICAgIFBhc3NSZWY8U3R5bGVWaXN1YWxEYXRhPiBjb3B5KCkgY29u
c3Q7CisgICAgc3RhdGljIFJlZjxTdHlsZVZpc3VhbERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3R5bGVWaXN1YWxEYXRhKTsgfQorICAgIFJlZjxTdHlsZVZpc3VhbERhdGE+
IGNvcHkoKSBjb25zdDsKICAgICB+U3R5bGVWaXN1YWxEYXRhKCk7CiAKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAppbmRleCBkY2RmOGU2Li4zMmY4ZTM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNw
cApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR0Js
b2NrOjpSZW5kZXJTVkdCbG9jayhTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHQmxvY2s6OlJlbmRlclNWR0Jsb2NrKFNWR0dy
YXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDog
UmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgKaW5kZXggZGRjNWI5Mi4u
NzYwZjczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxv
Y2suaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50JiBn
cmFwaGljc0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1l
bnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclNW
R0Jsb2NrKFNWR0dyYXBoaWNzRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJTVkdCbG9jayhTVkdHcmFwaGljc0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVy
LmNwcAppbmRleCA0NjI2MjBhLi44MjA3ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdDb250
YWluZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitS
ZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdNb2RlbE9iamVjdChl
bGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV9vYmplY3RCb3VuZGluZ0JveFZhbGlk
KGZhbHNlKQogICAgICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCmluZGV4IDExNmEz
NzEuLjExM2MzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc09i
amVjdEJvdW5kaW5nQm94VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94
VmFsaWQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdDb250YWluZXIiOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxs
aXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2Uu
Y3BwCmluZGV4IGYxNjZlMDAuLmNiNmQ5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR0VsbGlwc2U6OlJlbmRlclNWR0VsbGlwc2UoU1ZH
R3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1Jl
bmRlclNWR0VsbGlwc2U6OlJlbmRlclNWR0VsbGlwc2UoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdTaGFwZShlbGVt
ZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAgICwgbV91c2VQYXRoRmFsbGJhY2soZmFsc2UpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlw
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCmlu
ZGV4IDMwMjdmMTAuLmI1ODdkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHRWxsaXBzZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUmVuZGVyU1ZHRWxsaXBzZSBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdTaGFw
ZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQmLCBQ
YXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0Vs
ZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR0VsbGlw
c2UoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCmluZGV4IDRiOGM2MjMuLjhlNzA4MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3QoU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdDo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVu
ZGVyU1ZHQmxvY2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNUcmFu
c2Zvcm1VcGRhdGUodHJ1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKaW5kZXggODZhNTM0ZC4uNWRlY2EyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ7
CiAKIGNsYXNzIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZH
QmxvY2sgewogcHVibGljOgotICAgIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHRm9yZWln
bk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAg
ICAgdmlydHVhbCB+UmVuZGVyU1ZHRm9yZWlnbk9iamVjdCgpOwogCiAgICAgU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQmIGZvcmVpZ25PYmplY3RFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAKaW5k
ZXggMjgzY2ZiYi4uMDJlNmYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcApAQCAtMzEsNyArMzEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAKLVJlbmRl
clNWR0dyYWRpZW50U3RvcDo6UmVuZGVyU1ZHR3JhZGllbnRTdG9wKFNWR1N0b3BFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0dyYWRpZW50U3Rv
cDo6UmVuZGVyU1ZHR3JhZGllbnRTdG9wKFNWR1N0b3BFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVu
ZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJFbGVtZW50KGVsZW1lbnQsIFdURjo6bW92
ZShzdHlsZSksIDApCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAppbmRleCBhOWFiMjNkLi5kYTk1M2RkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9w
LmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgU1ZHR3JhZGllbnRFbGVtZW50OwogLy8gVGhpcyBj
bGFzcyBleGlzdHMgbW9zdGx5IHNvIHdlIGNhbiBoZWFyIGFib3V0IGdyYWRpZW50IHN0b3Agc3R5
bGUgY2hhbmdlcwogY2xhc3MgUmVuZGVyU1ZHR3JhZGllbnRTdG9wIGZpbmFsIDogcHVibGljIFJl
bmRlckVsZW1lbnQgewogcHVibGljOgotICAgIFJlbmRlclNWR0dyYWRpZW50U3RvcChTVkdTdG9w
RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdHcmFkaWVudFN0
b3AoU1ZHU3RvcEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJl
bmRlclNWR0dyYWRpZW50U3RvcCgpOwogCiAgICAgU1ZHU3RvcEVsZW1lbnQmIGVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdTdG9wRWxlbWVudD4oUmVuZGVyT2JqZWN0Ojpub2Rl
Rm9yTm9uQW5vbnltb3VzKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKaW5kZXggNmY0NzYyMy4uNzcy
MWRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6UmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyKFNWR0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoU1ZHRWxl
bWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZH
Q29udGFpbmVyKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaApp
bmRleCA5NDczNTE4Li5mNzBhYzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKQEAgLTMwLDcgKzMwLDcgQEAg
Y2xhc3MgU1ZHRWxlbWVudDsKIC8vIDxkZWZzPiwgPGxpbmVhckdyYWRpZW50PiwgPHJhZGlhbEdy
YWRpZW50PiBhcmUgYWxsIGdvb2QgZXhhbXBsZXMKIGNsYXNzIFJlbmRlclNWR0hpZGRlbkNvbnRh
aW5lciA6IHB1YmxpYyBSZW5kZXJTVkdDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNW
R0hpZGRlbkNvbnRhaW5lcihTVkdFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAg
IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYm
KTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXgg
NWUzNmViMi4uNGJhNDhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR0ltYWdlOjpSZW5kZXJT
VkdJbWFnZShTVkdJbWFnZUVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSh0cnVlKQogICAgICwgbV9uZWVkc1RyYW5z
Zm9ybVVwZGF0ZSh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5oCmluZGV4IDAxM2EwNGYuLmIzNmJkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgU1ZH
SW1hZ2VFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJTVkdJbWFnZSBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJTVkdNb2RlbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VF
bGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR0ltYWdlKFNWR0lt
YWdlRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZH
SW1hZ2UoKTsKIAogICAgIFNWR0ltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50KCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKaW5k
ZXggZTcwNzU5OC4uYWFjZmQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCi1SZW5kZXJTVkdJbmxpbmU6OlJlbmRlclNWR0lubGluZShTVkdHcmFwaGlj
c0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZH
SW5saW5lOjpSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJJbmxpbmUoZWxlbWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKIHsKICAgICBzZXRBbHdheXNDcmVhdGVMaW5lQm94ZXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCmluZGV4IGY3YTc3MzYu
LjgzMjIyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmUuaApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
bmRlclNWR0lubGluZSA6IHB1YmxpYyBSZW5kZXJJbmxpbmUgewogcHVibGljOgotICAgIFJlbmRl
clNWR0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7Cisg
ICAgUmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4m
Jik7CiAKICAgICBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygp
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
TW9kZWxPYmplY3QuY3BwCmluZGV4IDhlMmI1MDAuLjM1MDEzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0z
OSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHTW9kZWxPYmpl
Y3Q6OlJlbmRlclNWR01vZGVsT2JqZWN0KFNWR0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OlJlbmRlclNWR01vZGVsT2Jq
ZWN0KFNWR0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6
IFJlbmRlckVsZW1lbnQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faGFz
U1ZHU2hhZG93KGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IGI0NDU5NWQuLjA1MGRiMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgK
QEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIFNWR0VsZW1lbnQmIGVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxTVkdFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9
CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdFbGVtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR01vZGVsT2JqZWN0KFNWR0VsZW1lbnQm
LCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdQYXRoLmNwcAppbmRleCA2MjQ0NTcwLi40MTQ5NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdQYXRoOjpSZW5kZXJTVkdQYXRoKFNWR0dyYXBo
aWNzRWxlbWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJT
VkdQYXRoOjpSZW5kZXJTVkdQYXRoKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHU2hhcGUoZWxlbWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdQYXRoLmgKaW5kZXggZWE2ZWNjMi4uMDhkODkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdQYXRoIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1No
YXBlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdQYXRoKFNWR0dyYXBoaWNzRWxlbWVudCYsIFBh
c3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdQYXRoKFNWR0dyYXBoaWNzRWxlbWVu
dCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUGF0aCgpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVj
dC5jcHAKaW5kZXggZGE4NWZmYS4uMDNmYmJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVjdDo6UmVuZGVyU1ZHUmVjdChTVkdSZWN0RWxlbWVu
dCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdSZWN0OjpS
ZW5kZXJTVkdSZWN0KFNWR1JlY3RFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJTVkdTaGFwZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQog
ICAgICwgbV91c2VQYXRoRmFsbGJhY2soZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCmluZGV4IDRkYTFiM2IuLjk3MDMwMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHUmVjdCBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJTVkdTaGFwZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVjdChTVkdSZWN0
RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZWN0KFNWR1Jl
Y3RFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdS
ZWN0KCk7CiAKICAgICBTVkdSZWN0RWxlbWVudCYgcmVjdEVsZW1lbnQoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcAppbmRleCAxYWUwOTM0Li4wM2RkNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBA
IC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBhdGhFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlcjo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKFNWR0NsaXBQYXRoRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCmluZGV4
IDMxMTQxZjkuLmMwZmQzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaApAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyKFNWR0NsaXBQYXRoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZHQ2xpcFBhdGhFbGVtZW50JiwgUmVmPFJlbmRlclN0
eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoKTsKIAogICAg
IFNWR0NsaXBQYXRoRWxlbWVudCYgY2xpcFBhdGhFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8U1ZHQ2xpcFBhdGhFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXIuY3BwCmluZGV4IDc4ZDNjZTYuLjJiZjI4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHN0YXRpYyBpbmxpbmUgU1ZHRG9jdW1lbnRFeHRlbnNp
b25zJiBzdmdFeHRlbnNpb25zRnJvbUVsZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVuCiAgICAgcmV0
dXJuIGVsZW1lbnQuZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCk7CiB9CiAKLVJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihTVkdFbGVt
ZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdIaWRkZW5Db250
YWluZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1faWQoZWxlbWVudC5nZXRJ
ZEF0dHJpYnV0ZSgpKQogICAgICwgbV9yZWdpc3RlcmVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5o
CmluZGV4IDk3NzQ4ZmIuLjBiYWYxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQ2xpZW50UmVuZGVyTGF5ZXIoUmVuZGVyTGF5
ZXIqKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKFNWR0Vs
ZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXIoU1ZHRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAKICAgICBlbnVtIEludmFs
aWRhdGlvbk1vZGUgewogICAgICAgICBMYXlvdXRBbmRCb3VuZGFyaWVzSW52YWxpZGF0aW9uLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcAppbmRleCBlYzcyZTU3Li5lYWM2NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApA
QCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
OjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihl
bGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IDNkMzk3ODku
LmI1ZmI1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIoU1ZHRmlsdGVyRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcihTVkdGaWx0ZXJFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxl
PiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSZXNvdXJjZUZpbHRlcigpOwogCiAgICAgU1ZH
RmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNW
R0ZpbHRlckVsZW1lbnQ+KFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjplbGVtZW50KCkpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCmluZGV4IDU0Njg4YzIuLjQ3MzY0NTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcApAQCAtMzcsNyArMzcsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
OjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMmIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OlJlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cyYgZmlsdGVyUHJpbWl0aXZlRWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAg
IDogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKGZpbHRlclByaW1pdGl2ZUVsZW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKaW5kZXggZGY0
NzU5OC4uZWRlOTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM7CiAKIGNs
YXNzIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIGZpbmFsIDogcHVibGljIFJlbmRl
clNWR0hpZGRlbkNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiwgUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyYsIFJlZjxSZW5kZXJTdHlsZT4mJik7
CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiBmaWx0ZXJQcmltaXRp
dmVFbGVtZW50KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dC5jcHAKaW5kZXggMTdjNjhjYi4uM2EyMGY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0z
MCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmIG5v
ZGUsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dDo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudChTVkdHcmFkaWVudEVsZW1lbnQmIG5vZGUsIFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
KG5vZGUsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX3Nob3VsZENvbGxlY3RHcmFkaWVudEF0
dHJpYnV0ZXModHJ1ZSkKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCmluZGV4IGUzNzkxNTIu
Ljc4ZGE3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVj
dCYpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CiAKIHByb3RlY3RlZDoK
LSAgICBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KFNWR0dyYWRpZW50RWxlbWVudCYsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+KTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KFNWR0dyYWRp
ZW50RWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAKICAgICB2b2lkIGVsZW1lbnQoKSBj
b25zdCA9IGRlbGV0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAKaW5kZXggYWE2
ZjMyMC4uN2Q1N2MzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwCkBAIC0yNCw3
ICsyNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VMaW5l
YXJHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudChTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
U1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVu
dChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBz
dHlsZSkKICAgICA6IFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQoZWxlbWVudCwgV1RGOjptb3Zl
KHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKaW5kZXggMGZmODQ1OC4u
OTYzNDgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRp
ZW50IGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQgewogcHVibGljOgot
ICAgIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQoU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlTGluZWFy
R3JhZGllbnQoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KCk7CiAKICAgICBT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQmIGxpbmVhckdyYWRpZW50RWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PFNWR0xpbmVhckdyYWRpZW50RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudDo6Z3JhZGllbnRFbGVtZW50KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCmluZGV4IDNm
NzE4MjYuLjhjM2JkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OlJlbmRlclNWR1Jl
c291cmNlTWFya2VyKFNWR01hcmtlckVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OlJlbmRlclNWR1Jlc291cmNlTWFy
a2VyKFNWR01hcmtlckVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
ICAgICA6IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKGVsZW1lbnQsIFdURjo6bW92ZShzdHls
ZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTWFya2VyLmgKaW5kZXggMjdhOTBhOS4uOGI4NDY4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIu
aApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKIGNsYXNzIFJlbmRlclNW
R1Jlc291cmNlTWFya2VyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcihTVkdNYXJrZXJFbGVtZW50
JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlTWFya2VyKFNW
R01hcmtlckVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRl
clNWR1Jlc291cmNlTWFya2VyKCk7CiAKICAgICBTVkdNYXJrZXJFbGVtZW50JiBtYXJrZXJFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZHTWFya2VyRWxlbWVudD4oUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggMTBi
YzBhYi4uMDExODcxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6UmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIoU1ZHTWFza0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+
IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OlJlbmRlclNWR1Jlc291cmNlTWFza2Vy
KFNWR01hc2tFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5oCmluZGV4IDdjZDc0ZGMuLjE0OGJkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKQEAg
LTM3LDcgKzM3LDcgQEAgc3RydWN0IE1hc2tlckRhdGEgewogCiBjbGFzcyBSZW5kZXJTVkdSZXNv
dXJjZU1hc2tlciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoU1ZHTWFza0VsZW1lbnQmLCBQYXNz
UmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIoU1ZHTWFza0Vs
ZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291
cmNlTWFza2VyKCk7CiAKICAgICBTVkdNYXNrRWxlbWVudCYgbWFza0VsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxTVkdNYXNrRWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXI6OmVsZW1lbnQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCA3YzA2MTNjLi43YmI2ZWY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4oU1ZHUGF0dGVybkVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxl
KQorUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4oU1ZH
UGF0dGVybkVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAg
ICAgLCBtX3Nob3VsZENvbGxlY3RQYXR0ZXJuQXR0cmlidXRlcyh0cnVlKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmgKaW5kZXggNjE5MTg5Yi4uM2E2MzE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKIAogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuIGZpbmFsIDogcHVi
bGljIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm4oU1ZHUGF0dGVybkVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7
CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuKFNWR1BhdHRlcm5FbGVtZW50JiwgUmVmPFJl
bmRlclN0eWxlPiYmKTsKICAgICBTVkdQYXR0ZXJuRWxlbWVudCYgcGF0dGVybkVsZW1lbnQoKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wg
bWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxH
cmFkaWVudC5jcHAKaW5kZXggMWQ4OGQyYi4uOTQ2ZjBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFs
R3JhZGllbnQuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxH
cmFkaWVudChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6UmVuZGVyU1ZH
UmVzb3VyY2VSYWRpYWxHcmFkaWVudChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQmIGVsZW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRp
ZW50LmgKaW5kZXggMTY1YWMwMy4uZDFhYTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50
LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OwogCiBj
bGFzcyBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50IGZpbmFsIDogcHVibGljIFJlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQgewogcHVibGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlUmFk
aWFsR3JhZGllbnQoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQoU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdS
ZXNvdXJjZVJhZGlhbEdyYWRpZW50KCk7CiAKICAgICBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQm
IHJhZGlhbEdyYWRpZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR1JhZGlh
bEdyYWRpZW50RWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6Z3JhZGllbnRFbGVt
ZW50KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcAppbmRleCAyYjU3Njc1Li4xNmU1MmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZW5kZXJTVkdSb290OjpSZW5kZXJTVkdSb290KFNWR1NWR0VsZW1lbnQm
IGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyU1ZHUm9vdDo6UmVu
ZGVyU1ZHUm9vdChTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQogICAg
ICwgbV9vYmplY3RCb3VuZGluZ0JveFZhbGlkKGZhbHNlKQogICAgICwgbV9pc0xheW91dFNpemVD
aGFuZ2VkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuaAppbmRleCBjYmZlMDIxLi42YzZjNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTVkdTVkdFbGVt
ZW50OwogCiBjbGFzcyBSZW5kZXJTVkdSb290IGZpbmFsIDogcHVibGljIFJlbmRlclJlcGxhY2Vk
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSb290KFNWR1NWR0VsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHUm9vdChTVkdTVkdFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSb290KCk7CiAKICAgICBTVkdTVkdF
bGVtZW50JiBzdmdTVkdFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDlhNjFmZTMuLmVmM2NlYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVuZGVyU1ZHU2hhcGUmIG1fcmVuZGVy
ZXI7CiB9OwogCi1SZW5kZXJTVkdTaGFwZTo6UmVuZGVyU1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVt
ZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclNWR1NoYXBl
OjpSZW5kZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZShmYWxzZSkgLy8gRGVm
YXVsdCBpcyBmYWxzZSwgdGhlIGNhY2hlZCByZWN0cyBhcmUgZW1wdHkgZnJvbSB0aGUgYmVnaW5u
aW5nLgogICAgICwgbV9uZWVkc1NoYXBlVXBkYXRlKHRydWUpIC8vIERlZmF1bHQgaXMgdHJ1ZSwg
c28gd2UgZ3JhYiBhIFBhdGggb2JqZWN0IG9uY2UgZnJvbSBTVkdHcmFwaGljc0VsZW1lbnQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKaW5kZXggMTA4
Y2U0OC4uYWJjMGI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHU2hhcGUuaApAQCAtNDUsOCArNDUsOCBAQCBjbGFzcyBTVkdHcmFwaGljc0VsZW1lbnQ7CiAK
IGNsYXNzIFJlbmRlclNWR1NoYXBlIDogcHVibGljIFJlbmRlclNWR01vZGVsT2JqZWN0IHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJTVkdTaGFwZShTVkdHcmFwaGljc0VsZW1lbnQmLCBQYXNzUmVmPFJl
bmRlclN0eWxlPik7Ci0gICAgUmVuZGVyU1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4sIFBhdGgqLCBib29sKTsKKyAgICBSZW5kZXJTVkdTaGFwZShTVkdH
cmFwaGljc0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOworICAgIFJlbmRlclNWR1NoYXBl
KFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwgUGF0aCosIGJvb2wpOwog
ICAgIHZpcnR1YWwgflJlbmRlclNWR1NoYXBlKCk7CiAKICAgICBTVkdHcmFwaGljc0VsZW1lbnQm
IGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxl
bWVudD4oUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmVsZW1lbnQoKSk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAppbmRleCAzZmQ5Nzk3Li5iN2E3ODgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCkBA
IC0yOCw3ICsyOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJTVkdUU3Bh
biBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdJbmxpbmUgewogcHVibGljOgotICAgIGV4cGxpY2l0
IFJlbmRlclNWR1RTcGFuKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQmIGVsZW1lbnQsIFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIGV4cGxpY2l0IFJlbmRlclNWR1RTcGFuKFNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
ICAgICAgICAgOiBSZW5kZXJTVkdJbmxpbmUoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAg
ICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5jcHAKaW5kZXggYmFjZGQzYS4uYTc5MGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHVGV4dDo6UmVuZGVyU1ZHVGV4dChTVkdUZXh0RWxlbWVu
dCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdUZXh0OjpS
ZW5kZXJTVkdUZXh0KFNWR1RleHRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJTVkdCbG9jayhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQog
ICAgICwgbV9uZWVkc1Jlb3JkZXJpbmcoZmFsc2UpCiAgICAgLCBtX25lZWRzUG9zaXRpb25pbmdW
YWx1ZXNVcGRhdGUoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5oCmluZGV4IGZlZDEzY2MuLjliZjU4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFJlbmRl
clNWR0lubGluZVRleHQ7CiAKIGNsYXNzIFJlbmRlclNWR1RleHQgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyU1ZHQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlclNWR1RleHQoU1ZHVGV4dEVsZW1lbnQm
LCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVuZGVyU1ZHVGV4dChTVkdUZXh0RWxlbWVu
dCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHVGV4dCgpOwog
CiAgICAgU1ZHVGV4dEVsZW1lbnQmIHRleHRFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCmluZGV4IGEzNWQ2
YzYuLjk2NzFjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dFBhdGguY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQYXRoKFNWR1RleHRQYXRoRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdUZXh0
UGF0aDo6UmVuZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBhdGhFbGVtZW50JiBlbGVtZW50LCBSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdJbmxpbmUoZWxlbWVudCwgV1RG
Ojptb3ZlKHN0eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dFBhdGguaAppbmRleCA3MGE1ZmQ3Li4wMjE1NTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCkBAIC0yNyw3ICsy
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU1ZHVGV4dFBhdGggZmlu
YWwgOiBwdWJsaWMgUmVuZGVyU1ZHSW5saW5lIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdUZXh0
UGF0aChTVkdUZXh0UGF0aEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CisgICAgUmVu
ZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBhdGhFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsK
IAogICAgIFNWR1RleHRQYXRoRWxlbWVudCYgdGV4dFBhdGhFbGVtZW50KCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCmluZGV4IGYzNmE5MjAuLmVhNjRkM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcApAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCi1SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjpSZW5k
ZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBoaWNzRWxlbWVudCYg
ZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHQ29udGFp
bmVyKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBk
YXRlKHRydWUpCiAgICAgLCBtX2RpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZShmYWxzZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFu
c2Zvcm1hYmxlQ29udGFpbmVyLmgKaW5kZXggOWVkYWJlZS4uYjlmNmMxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgU1ZHR3JhcGhpY3NFbGVtZW50OwogY2xhc3MgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lciBmaW5hbCA6IHB1YmxpYyBSZW5kZXJTVkdDb250YWluZXIgewogcHVibGljOgotICAg
IFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIoU1ZHR3JhcGhpY3NFbGVtZW50JiwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4pOworICAgIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIo
U1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICBTVkdHcmFwaGlj
c0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNz
RWxlbWVudD4oUmVuZGVyU1ZHQ29udGFpbmVyOjplbGVtZW50KCkpOyB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAppbmRleCA4MDQzNmQ3Li41MjYwNzVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0
Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lcihTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKK1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
cihTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJTVkdDb250YWluZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAgICAsIG1f
ZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlKGZhbHNlKQogICAgICwgbV9pc0xheW91dFNpemVDaGFu
Z2VkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCmluZGV4IGY2MjRmNWYuLjU5NjlhZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
dGh1cyB3ZSBpbmhlcml0IGZyb20gUmVuZGVyU1ZHQ29udGFpbmVyIGluc3RlYWQgb2YgUmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcgogY2xhc3MgUmVuZGVyU1ZHVmlld3BvcnRDb250YWlu
ZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyU1ZHQ29udGFpbmVyIHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lcihTVkdTVkdFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHls
ZT4pOworICAgIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFNWR1NWR0VsZW1lbnQmLCBSZWY8
UmVuZGVyU3R5bGU+JiYpOwogCiAgICAgU1ZHU1ZHRWxlbWVudCYgc3ZnU1ZHRWxlbWVudCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRS
dW5SZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNTFiNDM0Yy4uNGZhZTJiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmlu
Z0NvbnRleHQuaApAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZTsKIAog
Y2xhc3MgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQgZmluYWwgOiBwdWJsaWMgVGV4dFJ1bjo6
UmVuZGVyaW5nQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWY8U1ZHVGV4dFJ1
blJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQorICAgIHN0
YXRpYyBSZWY8U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHVGV4dFJ1
blJlbmRlcmluZ0NvbnRleHQocmVuZGVyZXIpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKaW5kZXggZGQ4ZDYzNi4uODY5YTVm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBT
dHlsZSB7CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpCitSZWY8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JEb2N1bWVudChj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50Lmhhc0xpdmlu
Z1JlbmRlclRyZWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
UmVzb2x2ZUZvckRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVG
b3JEb2N1bWVudC5oCmluZGV4IGY3MjQ3M2IuLjNmMTMwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaApAQCAtMjYsNyArMjYsNyBAQAogI2lm
bmRlZiBTdHlsZVJlc29sdmVGb3JEb2N1bWVudF9oCiAjZGVmaW5lIFN0eWxlUmVzb2x2ZUZvckRv
Y3VtZW50X2gKIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVuZGVy
U3R5bGU7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLVBhc3NSZWY8UmVuZGVyU3R5bGU+IHJlc29s
dmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYpOworUmVmPFJlbmRlclN0eWxlPiByZXNvbHZl
Rm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKIAogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVUcmVlLmNwcAppbmRleCBkNTg4NjlhLi5iODhkN2YzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIHN0
YXRpYyBib29sIHNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFJlbmRlckVsZW1lbnQmIHBhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVy
U3R5bGUmIGluaGVyaXRlZFN0eWxlKQorc3RhdGljIFJlZjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JF
bGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiBpbmhlcml0ZWRTdHlsZSkKIHsK
ICAgICBpZiAoZWxlbWVudC5oYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSkgewogICAg
ICAgICBpZiAoUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IGVsZW1lbnQuY3VzdG9tU3R5bGVG
b3JSZW5kZXJlcihpbmhlcml0ZWRTdHlsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApp
bmRleCAxOTIzMWQwLi5iODVlY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKQEAg
LTEzOCw3ICsxMzgsNyBAQCB2b2lkIFNWR0FFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIH0KIH0KIAotUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR0FFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5k
ZXJTdHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQUVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgaWYg
KHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpICYmIGRvd25jYXN0
PFNWR0VsZW1lbnQ+KCpwYXJlbnROb2RlKCkpLmlzVGV4dENvbnRlbnQoKSkKICAgICAgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0lubGluZT4oKnRoaXMsIFdURjo6bW92ZShzdHls
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAppbmRleCAzYWFhOTc5Li5jN2Y1ZTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAppbmRleCA0
YWQwNjNkLi4zYmYxN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5
cGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50
LmNwcApAQCAtODIsNyArODIsNyBAQCBib29sIFNWR0FsdEdseXBoRWxlbWVudDo6Y2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdBbHRHbHlwaEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBTVkdBbHRHbHlwaEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNWR1RTcGFuPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgKaW5kZXggNmJlOWY3NS4uZjRhZmE4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFNWR0FsdEdseXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxk
Q3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQkVHSU5f
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0FsdEdseXBoRWxlbWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAppbmRleCAwODJmN2FiLi44ODc1NzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAg
dm9pZCBTVkdDaXJjbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1SZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R0NpcmNsZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0VsbGlwc2U+KCp0
aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDaXJjbGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVu
dC5oCmluZGV4IGVjMTgyZGIuLmEzNzc5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDaXJjbGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYp
IG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0Np
cmNsZUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKaW5kZXggOTYxY2ZkMS4uYjIy
M2Q0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKQEAgLTEx
Myw3ICsxMTMsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQo
KTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0NsaXBQYXRoRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKaW5kZXggOTM4Y2ZiNC4uYTcyMTZl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaApAQCAtNDgsNyArNDgs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NsaXBQYXRoRWxlbWVudCkKICAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihDbGlwUGF0aFVuaXRzLCBjbGlwUGF0aFVu
aXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaAppbmRleCAw
MDc1ZWRlLi5jNmMzNjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaApAQCAtMzksMjEgKzM5LDIxIEBA
IHB1YmxpYzoKICAgICAgICAgU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IgPSAzCiAgICAgfTsK
IAotICAgIHN0YXRpYyBQYXNzUmVmPFNWR0NvbG9yPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgcmdiQ29sb3IpCisgICAgc3RhdGljIFJlZjxTVkdDb2xvcj4gY3JlYXRlRnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHJnYkNvbG9yKQogICAgIHsKICAgICAgICAgYXV0byBjb2xvciA9IGFk
b3B0UmVmKCpuZXcgU1ZHQ29sb3IoU1ZHX0NPTE9SVFlQRV9SR0JDT0xPUikpOwogICAgICAgICBj
b2xvci5nZXQoKS5zZXRDb2xvcihjb2xvckZyb21SR0JDb2xvclN0cmluZyhyZ2JDb2xvcikpOwog
ICAgICAgICByZXR1cm4gY29sb3I7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHQ29s
b3I+IGNyZWF0ZUZyb21Db2xvcihjb25zdCBDb2xvciYgcmdiQ29sb3IpCisgICAgc3RhdGljIFJl
ZjxTVkdDb2xvcj4gY3JlYXRlRnJvbUNvbG9yKGNvbnN0IENvbG9yJiByZ2JDb2xvcikKICAgICB7
CiAgICAgICAgIGF1dG8gY29sb3IgPSBhZG9wdFJlZigqbmV3IFNWR0NvbG9yKFNWR19DT0xPUlRZ
UEVfUkdCQ09MT1IpKTsKICAgICAgICAgY29sb3IuZ2V0KCkuc2V0Q29sb3IocmdiQ29sb3IpOwog
ICAgICAgICByZXR1cm4gY29sb3I7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHQ29s
b3I+IGNyZWF0ZUN1cnJlbnRDb2xvcigpCisgICAgc3RhdGljIFJlZjxTVkdDb2xvcj4gY3JlYXRl
Q3VycmVudENvbG9yKCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0Nv
bG9yKFNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEZWZzRWxlbWVudC5jcHAKaW5kZXggOGM1MmFlNC4uMDE0Y2U3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRGVmc0VsZW1lbnQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgU1ZHRGVmc0VsZW1l
bnQ6OmlzVmFsaWQoKSBjb25zdAogICAgIHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOwogfQog
Ci1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRGVmc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHls
ZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
ZWZzRWxlbWVudC5oCmluZGV4IDIzZTIwYTguLjg4YmQ3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
ZWZzRWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAg
QkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0RlZnNFbGVtZW50KQogICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGxpcHNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1l
bnQuY3BwCmluZGV4IGZmMzhhMDAuLjViNDA2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
bGlwc2VFbGVtZW50LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgU1ZHRWxsaXBzZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBT
VkdFbGxpcHNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0VsbGlwc2VFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdFbGxpcHNlPigqdGhpcywgV1RGOjptb3ZlKHN0
eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCmluZGV4IDViOWY5
MmMuLjRiMDY4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCkBAIC00
NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZl
TGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH07CiAKLSAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxS
ZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwog
CiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0VsbGlwc2VFbGVtZW50
KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKaW5kZXggYjg3OTI0Mi4uNGY4Y2VhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQg
U1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFu
Z2UpCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdGaWx0
ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4o
KnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmgKaW5kZXggMTkzOWUzMS4uYjQ5ZjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNS
ZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuY3BwCmluZGV4IDNjN2RmN2EuLjUyODE2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
Y3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnNldFN0YW5kYXJkQXR0cmlidXRlcyhGaWx0ZXJFZmZlY3QqIGYKICAgICAgICAg
ZmlsdGVyRWZmZWN0LT5zZXRIYXNIZWlnaHQodHJ1ZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlPigqdGhpcywgV1RGOjpt
b3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKaW5kZXggNjZhYzNjMi4uNjlhZGJlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaApAQCAtNjcsNyArNjcsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRlckVmZmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlTmFt
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlTmFtZUVsZW1lbnQu
Y3BwCmluZGV4IDVkNjdiY2IuLmRmMDc0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZU5hbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VOYW1lRWxlbWVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1JlZlB0cjxTVkdG
b250RmFjZU5hbWVFbGVtZW50PiBTVkdGb250RmFjZU5hbWVFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUGFzc1JlZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBT
VkdGb250RmFjZU5hbWVFbGVtZW50OjpzcmNWYWx1ZSgpIGNvbnN0CitSZWY8Q1NTRm9udEZhY2VT
cmNWYWx1ZT4gU1ZHRm9udEZhY2VOYW1lRWxlbWVudDo6c3JjVmFsdWUoKSBjb25zdAogewogICAg
IHJldHVybiBDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGVMb2NhbChmYXN0R2V0QXR0cmlidXRl
KFNWR05hbWVzOjpuYW1lQXR0cikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvbnRGYWNlTmFtZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZU5hbWVFbGVtZW50LmgKaW5kZXggYzY4NWY4YS4uNWUwYTk3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlTmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIFNW
R0ZvbnRGYWNlTmFtZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRm9udEZhY2VOYW1lRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIAotICAgIFBhc3NSZWY8Q1NTRm9u
dEZhY2VTcmNWYWx1ZT4gc3JjVmFsdWUoKSBjb25zdDsKKyAgICBSZWY8Q1NTRm9udEZhY2VTcmNW
YWx1ZT4gc3JjVmFsdWUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTVkdGb250RmFjZU5hbWVF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAppbmRleCA0NWI5MDZkLi5kZmY3OGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcApAQCAtNTQs
NyArNTQsNyBAQCBTVkdGb250RmFjZVVyaUVsZW1lbnQ6On5TVkdGb250RmFjZVVyaUVsZW1lbnQo
KQogICAgICAgICBtX2NhY2hlZEZvbnQtPnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAotUGFzc1Jl
ZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OnNyY1ZhbHVlKCkg
Y29uc3QKK1JlZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OnNy
Y1ZhbHVlKCkgY29uc3QKIHsKICAgICBhdXRvIHNyYyA9IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNy
ZWF0ZShnZXRBdHRyaWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpKTsKICAgICBBdG9taWNTdHJp
bmcgdmFsdWUoZmFzdEdldEF0dHJpYnV0ZShmb3JtYXRBdHRyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmgKaW5kZXggMzUwZjFmZC4uZjhjMzlkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaApAQCAtMzUsNyArMzUsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5TVkdGb250RmFjZVVyaUVsZW1lbnQoKTsKIAotICAg
IFBhc3NSZWY8Q1NTRm9udEZhY2VTcmNWYWx1ZT4gc3JjVmFsdWUoKSBjb25zdDsKKyAgICBSZWY8
Q1NTRm9udEZhY2VTcmNWYWx1ZT4gc3JjVmFsdWUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBT
VkdGb250RmFjZVVyaUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAppbmRleCBi
YWY4MmJmLi5mZDdmNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudC5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdGb3JlaWduT2JqZWN0
PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b3JlaWduT2JqZWN0RWxlbWVudC5oCmluZGV4IGFiNGQxYWYuLjdlYjdmZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCkBAIC00NCw3ICs0NCw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCmluZGV4IDgyOWMzYWQuLjlk
N2JjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcApAQCAtODgsNyArODgsNyBAQCB2
b2lkIFNWR0dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBh
cmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiB9CiAKLVJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBTVkdHRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0dFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIC8v
IFNWRyAxLjEgdGVzdHN1aXRlIGV4cGxpY2l0ZWx5IHVzZXMgY29uc3RydWN0cyBsaWtlIDxnIGRp
c3BsYXk9Im5vbmUiPjxsaW5lYXJHcmFkaWVudD4KICAgICAvLyBXZSBzdGlsbCBoYXZlIHRvIGNy
ZWF0ZSByZW5kZXJlcnMgZm9yIHRoZSA8Zz4gJiA8bGluZWFyR3JhZGllbnQ+IGVsZW1lbnQsIHRo
b3VnaCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKaW5kZXggOGU3ZDM2OS4uZDM5ZGI2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBTVkdHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
IAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBhOTQzNWQwLi5jMGVlNjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIEZsb2F0
UmVjdCBTVkdHcmFwaGljc0VsZW1lbnQ6OmdldEJCb3goU3R5bGVVcGRhdGVTdHJhdGVneSBzdHls
ZVVwZGF0ZVN0cmF0ZWd5KQogICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRCQm94KHRo
aXMsIHN0eWxlVXBkYXRlU3RyYXRlZ3kpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
U1ZHR3JhcGhpY3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJT
dHlsZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHR3JhcGhpY3NFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAg
IC8vIEJ5IGRlZmF1bHQsIGFueSBzdWJjbGFzcyBpcyBleHBlY3RlZCB0byBkbyBwYXRoLWJhc2Vk
IGRyYXdpbmcKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUGF0aD4oKnRoaXMs
IFdURjo6bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dy
YXBoaWNzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5o
CmluZGV4IDYxMjY2NmYuLjExMGFkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFwaGljc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgLy8gImJhc2UgY2xhc3Mi
IG1ldGhvZHMgZm9yIGFsbCB0aGUgZWxlbWVudHMgd2hpY2ggcmVuZGVyIGFzIHBhdGhzCiAgICAg
dmlydHVhbCB2b2lkIHRvQ2xpcFBhdGgoUGF0aCYpOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoK
ICAgICBTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGJiODQ3NGUuLjdhY2Vm
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC0xNjMsNyArMTYz
LDcgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0ltYWdlPigq
dGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmgKaW5kZXggMTc2NzYxZC4uNWE5YjljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRh
Y2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlv
blJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aC5jcHAKaW5kZXggNDdlYjgzZS4uMWQxOGJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAK
QEAgLTMzNSw3ICszMzUsNyBAQCBTVkdMZW5ndGggU1ZHTGVuZ3RoOjpmcm9tQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQogICAgIHJldHVybiBsZW5ndGg7CiB9CiAK
LVBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IFNWR0xlbmd0aDo6dG9DU1NQcmltaXRpdmVWYWx1
ZShjb25zdCBTVkdMZW5ndGgmIGxlbmd0aCkKK1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gU1ZHTGVu
Z3RoOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aCYgbGVuZ3RoKQogewogICAg
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVU5LTk9XTjsKICAgICBzd2l0Y2ggKGxlbmd0aC51bml0VHlwZSgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGVuZ3RoLmgKaW5kZXggNDBjOGYyNS4uODU5YTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGgu
aApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIFNWR0xlbmd0
aCBmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUqKTsKLSAgICBzdGF0aWMg
UGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdG9DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBTVkdM
ZW5ndGgmKTsKKyAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB0b0NTU1ByaW1pdGl2
ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aCYpOwogICAgIHN0YXRpYyBTVkdMZW5ndGhNb2RlIGxlbmd0
aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAK
ICAgICBTVkdMZW5ndGggYmxlbmQoY29uc3QgU1ZHTGVuZ3RoJiBmcm9tLCBmbG9hdCBwcm9ncmVz
cykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5jcHAKaW5kZXggZTcyNWJkOS4uMTliM2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFNW
R0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZQogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAK
LVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ+KCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQu
aAppbmRleCA0NmQ5MmRlLi5lOTE0N2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCmluZGV4IDJkOWRkMzAuLmQ4Mzc4NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKQEAgLTIxMyw3ICsyMTMs
NyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQW5nbGUoY29uc3QgU1ZHQW5n
bGUmIGFuZ2xlKQogICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQob3JpZW50QW5nbGVQcm9wZXJ0eUlu
Zm8oKS0+YXR0cmlidXRlTmFtZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdN
YXJrZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4g
c3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI+KCp0aGlzLCBXVEY6Om1vdmUo
c3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCmluZGV4IDhhOWI0
NjYuLjgyOGY4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaApAQCAtMTMy
LDcgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJl
bmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZl
TGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAKaW5kZXggNmY2MjkxZS4uNzNmOGU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgICAgIG9iamVjdC0+c2V0TmVl
ZHNMYXlvdXQoKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hc2tFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IG1hc2tSZW5kZXJlciA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlTWFza2Vy
PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxl
bWVudC5oCmluZGV4IGQ0NmM3MDIuLjdhYmFiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXNrRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxl
bWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAKICAgICBIYXNoU2V0PFJlbmRlckxh
eWVyKj4gbV9jbGllbnRMYXllcnM7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhaW50LmgKaW5kZXggYWEzOWM3ZS4uN2RkMDQ4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
aW50LmgKQEAgLTQzLDQxICs0Myw0MSBAQCBwdWJsaWM6CiAgICAgICAgIFNWR19QQUlOVFRZUEVf
VVJJID0gMTA3CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVV
bmtub3duKCkKKyAgICBzdGF0aWMgUmVmPFNWR1BhaW50PiBjcmVhdGVVbmtub3duKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BhaW50KFNWR19QQUlOVFRZUEVfVU5L
Tk9XTikpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVOb25l
KCkKKyAgICBzdGF0aWMgUmVmPFNWR1BhaW50PiBjcmVhdGVOb25lKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BhaW50KFNWR19QQUlOVFRZUEVfTk9ORSkpOwogICAg
IH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVDdXJyZW50Q29sb3IoKQor
ICAgIHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZUN1cnJlbnRDb2xvcigpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQYWludChTVkdfUEFJTlRUWVBFX0NVUlJFTlRD
T0xPUikpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmPFNWR1BhaW50PiBjcmVhdGVDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCisgICAgc3RhdGljIFJlZjxTVkdQYWludD4gY3JlYXRlQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKICAgICAgICAgYXV0byBwYWludCA9IGFkb3B0
UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUikpOwogICAgICAgICBwYWlu
dC5nZXQoKS5zZXRDb2xvcihjb2xvcik7CiAgICAgICAgIHJldHVybiBwYWludDsKICAgICB9CiAK
LSAgICBzdGF0aWMgUGFzc1JlZjxTVkdQYWludD4gY3JlYXRlVVJJKGNvbnN0IFN0cmluZyYgdXJp
KQorICAgIHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVSSShjb25zdCBTdHJpbmcmIHVyaSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BhaW50KFNWR19QQUlOVFRZ
UEVfVVJJLCB1cmkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdQYWludD4gY3Jl
YXRlVVJJQW5kQ29sb3IoY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IENvbG9yJiBjb2xvcikKKyAg
ICBzdGF0aWMgUmVmPFNWR1BhaW50PiBjcmVhdGVVUklBbmRDb2xvcihjb25zdCBTdHJpbmcmIHVy
aSwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKICAgICAgICAgYXV0byBwYWludCA9IGFkb3B0
UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IsIHVyaSkpOwogICAg
ICAgICBwYWludC5nZXQoKS5zZXRDb2xvcihjb2xvcik7CiAgICAgICAgIHJldHVybiBwYWludDsK
ICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZjxTVkdQYWludD4gY3JlYXRlVVJJQW5kTm9uZShj
b25zdCBTdHJpbmcmIHVyaSkKKyAgICBzdGF0aWMgUmVmPFNWR1BhaW50PiBjcmVhdGVVUklBbmRO
b25lKGNvbnN0IFN0cmluZyYgdXJpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSwgdXJpKSk7CiAgICAgfQpAQCAtOTcs
NyArOTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOwogCi0gICAgc3RhdGljIFBhc3NSZWY8U1ZHUGFpbnQ+IGNyZWF0ZShjb25z
dCBTVkdQYWludFR5cGUmIHR5cGUsIGNvbnN0IFN0cmluZyYgdXJpLCBjb25zdCBDb2xvciYgY29s
b3IpCisgICAgc3RhdGljIFJlZjxTVkdQYWludD4gY3JlYXRlKGNvbnN0IFNWR1BhaW50VHlwZSYg
dHlwZSwgY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICB7CiAgICAg
ICAgIGF1dG8gcGFpbnQgPSBhZG9wdFJlZigqbmV3IFNWR1BhaW50KHR5cGUsIHVyaSkpOwogICAg
ICAgICBwYWludC5nZXQoKS5zZXRDb2xvcihjb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmNwcAppbmRleCBhMDU5ZDJhLi4zNGQ2MzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5jcHAKQEAgLTQwMyw3ICs0MDMsNyBAQCBGbG9hdFJlY3QgU1ZHUGF0aEVsZW1l
bnQ6OmdldEJCb3goU3R5bGVVcGRhdGVTdHJhdGVneSBzdHlsZVVwZGF0ZVN0cmF0ZWd5KQogICAg
IHJldHVybiByZW5kZXJlci0+cGF0aCgpLmJvdW5kaW5nUmVjdCgpOwogfQogCi1SZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdQYXRo
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IHsKICAgICAvLyBCeSBkZWZhdWx0LCBhbnkgc3ViY2xhc3MgaXMgZXhwZWN0ZWQgdG8gZG8gcGF0
aC1iYXNlZCBkcmF3aW5nCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1BhdGg+
KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgK
aW5kZXggNzViMTZhMC4uMmVkMzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgK
QEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JP
T0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKICAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKLSAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50
byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9t
KENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuY3BwCmluZGV4IDliM2M3YWYuLjgzOWJmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgU1ZHUGF0dGVybkVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgICAg
ICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4+KCp0aGlzLCBX
VEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgK
aW5kZXggNDkyY2Q2OC4uYzJiNDA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDgyMTE3ZjEuLmUzOTRhMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC0x
MjksNyArMTI5LDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKICAgICAgICAgb2JqZWN0LT5z
ZXROZWVkc0xheW91dCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4gc3R5bGUpCitSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewog
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50
PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmgKaW5kZXggMTJiZjRlZC4uMjkzZTUxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaApAQCAtNDIsNyArNDIs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCmluZGV4
IGQ4MGQ4MWEuLmJjM2FlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcApA
QCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdSZWN0RWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IFNWR1JlY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdSZWN0PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0
RWxlbWVudC5oCmluZGV4IDNjZWU4ZDkuLjJmMzQwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0
RWxlbWVudC5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
Jikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZH
UmVjdEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggMTJmZWQ3ZS4uOTJhMjAyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIGJvb2wgU1ZH
U1ZHRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAg
ICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1S
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUpCiB7CiAgICAgaWYgKGlzT3V0ZXJtb3N0U1ZHU1ZHRWxlbWVudCgpKQogICAgICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUm9vdD4oKnRoaXMsIFdURjo6bW92ZShzdHls
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKaW5kZXggMjc4MjI3Mi4uZGQzMTljZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5k
ZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250
YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRh
aW5lck5vZGUmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dG9wRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCmlu
ZGV4IDE0MDVkNGUuLjJkNGRlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dG9wRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNw
cApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFNWR1N0b3BFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdTdG9wRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
U1ZHR3JhZGllbnRTdG9wPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdG9wRWxlbWVudC5oCmluZGV4IDdkYTM3YzYuLjZmZGJmNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdG9wRWxlbWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNHcmFkaWVudFN0b3AoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHU3RvcEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3dpdGNoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5j
cHAKaW5kZXggZmMzZTJmMy4uMGNmYzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N3aXRjaEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hF
bGVtZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIFNWR1N3aXRjaEVsZW1lbnQ6OmNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU3dpdGNoRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFNWR1N3aXRjaEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCmluZGV4IGNlNjNmOTkuLmIz
NjAwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaApAQCAtMzgsNyArMzgs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCiAgICAgdmlydHVhbCBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNz
UmVmPFJlbmRlclN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJp
ZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3dpdGNoRWxl
bWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3ltYm9sRWxlbWVudC5jcHAKaW5kZXggODEwOTAxMy4uYWM5Y2U5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgU1ZHU3lt
Ym9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CiAgICAgcmV0dXJuIGhh
c0F0dHJpYnV0ZShTVkdOYW1lczo6dmlld0JveEF0dHIpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1N5bWJvbEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcj4oKnRo
aXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N5bWJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50
LmgKaW5kZXggMzE0NjVhYy4uMTg1NTVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N5bWJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxl
bWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVm
PFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVs
YXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwCmluZGV4IGIwMTI0OGMuLjdjODFlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCBQYXNzUmVmUHRyPFNWR1RSZWZFbGVtZW50
PiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsCiAK
IGNsYXNzIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyIDogcHVibGljIEV2ZW50TGlzdGVuZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmPFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVy
PiBjcmVhdGUoU1ZHVFJlZkVsZW1lbnQmIHRyZWZFbGVtZW50KQorICAgIHN0YXRpYyBSZWY8U1ZH
VFJlZlRhcmdldEV2ZW50TGlzdGVuZXI+IGNyZWF0ZShTVkdUUmVmRWxlbWVudCYgdHJlZkVsZW1l
bnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUUmVmVGFyZ2V0RXZl
bnRMaXN0ZW5lcih0cmVmRWxlbWVudCkpOwogICAgIH0KQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lk
IFNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1SZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gU1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUUmVmRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsK
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSW5saW5lPigqdGhpcywgV1RGOjpt
b3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCmluZGV4IDk4N2Zj
NjYuLmMwOWU1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCkBAIC00Niw3ICs0
Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUU3BhbkVsZW1lbnQuY3BwCmluZGV4IGQzNDRmMGUuLmIxZDQwOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFBhc3NSZWZQdHI8U1ZH
VFNwYW5FbGVtZW50PiBTVkdUU3BhbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdUU3BhbkVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RTcGFuRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQor
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RTcGFuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyU1ZHVFNwYW4+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAppbmRleCA1ZWQ4YjEyLi5iNmYxNDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU1ZHVFNwYW5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogICAgICAgICAgICAgCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAppbmRleCBlMDllMmRmLi5iZWY1MTQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAg
QWZmaW5lVHJhbnNmb3JtIFNWR1RleHRFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkg
Y29uc3QKICAgICByZXR1cm4gbWF0cml4OwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
U1ZHVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUZXh0RWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVGV4dD4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAppbmRleCA0MzA4NGQ1Li5kMTU1YzNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFNWR1RleHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCmluZGV4IGNkYjk5NWIuLjE0MGI3YTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCkBAIC0xMjYsNyArMTI2LDcg
QEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAotUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IFNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVGV4
dFBhdGg+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0UGF0aEVsZW1lbnQuaAppbmRleCBmMjQ0YmMzLi5lMDFkNjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRl
clN0eWxlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRl
eCA0MmJjOGYxLi43Y2UzYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBA
IC01MjMsNyArNTIzLDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFNoYWRvd0FuZEluc3Rh
bmNlVHJlZShTVkdFbGVtZW50KiB0YXJnZXQpCiAjZW5kaWYKIH0KIAotUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR1VzZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdVc2VFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyPigq
dGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaApp
bmRleCAyZjBiYzA1Li42MTk3MGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKQEAg
LTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQXR0YWNoUmVu
ZGVyZXJzKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB0b0NsaXBQ
YXRoKFBhdGgmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCBiZmVkZDE1Li45YWIxNmFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMTItMTIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgUGFzc1JlZiB3aXRoIFJlZi9SZWYmJiBhY3Jvc3Mg
dGhlIGJvYXJkLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTM5NTg3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRB
cHBseVN0eWxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3Jl
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5tbToKKyAg
ICAgICAgKFdlYlZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSk6CisKIDIwMTQtMTItMTEgIERhbiBC
ZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYSBsZWFrIGludHJvZHVj
ZWQgaW4gcjE3NzE5OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCAwYjgwMjJiLi4xMWNlOWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC0y
NTUsNyArMjU1LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZCgpCiAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxl
KFN0eWxlUHJvcGVydGllcyogc3R5bGUsIFJhbmdlKiByYW5nZSkKIHsKLSAgICBSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gbXV0YWJsZVN0eWxlKHN0eWxlLT5pc011dGFibGUoKSA/IHN0YXRp
Y19jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXMmPigqc3R5bGUpIDogc3R5bGUtPm11dGFibGVD
b3B5KCkpOworICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxlU3R5bGUoc3R5
bGUtPmlzTXV0YWJsZSgpID8gUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+KHN0YXRpY19jYXN0
PE11dGFibGVTdHlsZVByb3BlcnRpZXMmPigqc3R5bGUpKSA6IHN0eWxlLT5tdXRhYmxlQ29weSgp
KTsKICAgICByZXR1cm4gW1ttX3dlYlZpZXcgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2Vi
VmlldzptX3dlYlZpZXcKICAgICAgICAgc2hvdWxkQXBwbHlTdHlsZTpraXQobXV0YWJsZVN0eWxl
LT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkpIHRvRWxlbWVudHNJbkRPTVJhbmdlOmtpdChy
YW5nZSldOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViVmlzaXRlZExpbmtTdG9yZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4IGFkMWIyMWYuLjRjYmEyZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3Jl
LmgKQEAgLTI4LDExICsyOCwxMSBAQAogCiAjaW1wb3J0IDxXZWJDb3JlL0xpbmtIYXNoLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Zpc2l0ZWRMaW5rU3RvcmUuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzUmVm
Lmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+CiAKIGNsYXNzIFdlYlZpc2l0ZWRMaW5rU3RvcmUgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9yZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWY8V2ViVmlzaXRlZExpbmtTdG9yZT4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJl
ZjxXZWJWaXNpdGVkTGlua1N0b3JlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5XZWJWaXNpdGVk
TGlua1N0b3JlKCk7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5r
cyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlZpc2l0ZWRMaW5rU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpdGVkTGlua1N0b3JlLm1tCmluZGV4IDZjYjhlNmIuLmEwMGZjMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9y
ZS5tbQpAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgSGFzaFNldDxXZWJWaXNpdGVkTGlua1N0b3Jl
Kj4mIHZpc2l0ZWRMaW5rU3RvcmVzKCkKIH0KIAogCi1QYXNzUmVmPFdlYlZpc2l0ZWRMaW5rU3Rv
cmU+IFdlYlZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpCitSZWY8V2ViVmlzaXRlZExpbmtTdG9y
ZT4gV2ViVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJWaXNpdGVkTGlua1N0b3JlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlZmIzMjJlLi5kYmM0
Y2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE0LTEyLTEyICBBbmRyZWFzIEts
aW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFBhc3NSZWYgd2l0aCBS
ZWYvUmVmJiYgYWNyb3NzIHRoZSBib2FyZC4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzEzOTU4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRMaXN0OjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5
TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmF0dGVyeU1hbmFnZXJQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmF0dGVyeU1hbmFnZXJQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlR3JvdXA6OmNyZWF0ZU5vbk51bGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlR3JvdXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0JhdHRlcnlQcm92aWRlci5jcHA6
CisgICAgICAgIChCYXR0ZXJ5UHJvdmlkZXI6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9CYXR0ZXJ5UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJNZWRpYUNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Vmlld1VwZGF0ZURpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmg6CisKIDIwMTQtMTItMTIgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgaHR0cC90ZXN0
cy9sb2FkaW5nLzMwNy1hZnRlci0zMDMtYWZ0ZXItcG9zdC5odG1sIGlzIGZsYWt5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5kZXggMGVlYmIyNi4u
YjU1Yzc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExp
c3QuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lmIFVTRShDRikKQEAgLTQy
LDcgKzQyLDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdFN0YXRlOwogCiBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3QgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
YWNrRm9yd2FyZExpc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZjxXZWJCYWNrRm9y
d2FyZExpc3Q+IGNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgc3RhdGljIFJlZjxXZWJC
YWNrRm9yd2FyZExpc3Q+IGNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJCYWNrRm9yd2FyZExpc3QocGFnZSkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclByb3h5
LmNwcAppbmRleCBkZDZmYmFiLi40ZGU0YTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQmF0dGVyeU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkJhdHRlcnlNYW5hZ2VyUHJveHkuY3BwCkBAIC0zOSw3ICszOSw3IEBAIGNv
bnN0IGNoYXIqIFdlYkJhdHRlcnlNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKICAgICBy
ZXR1cm4gIldlYkJhdHRlcnlNYW5hZ2VyUHJveHkiOwogfQogCi1QYXNzUmVmPFdlYkJhdHRlcnlN
YW5hZ2VyUHJveHk+IFdlYkJhdHRlcnlNYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJDb250ZXh0KiBj
b250ZXh0KQorUmVmPFdlYkJhdHRlcnlNYW5hZ2VyUHJveHk+IFdlYkJhdHRlcnlNYW5hZ2VyUHJv
eHk6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkJhdHRlcnlNYW5hZ2VyUHJveHkoY29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhdHRlcnlNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclByb3h5LmgKaW5kZXggMmI4MjA5YS4u
MjllMTQ2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0ZXJ5
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhdHRlcnlN
YW5hZ2VyUHJveHkuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBXZWJCYXR0ZXJ5TWFuYWdlclBy
b3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmF0dGVyeQog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAg
c3RhdGljIFBhc3NSZWY8V2ViQmF0dGVyeU1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYkNvbnRleHQq
KTsKKyAgICBzdGF0aWMgUmVmPFdlYkJhdHRlcnlNYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJDb250
ZXh0Kik7CiAgICAgdmlydHVhbCB+V2ViQmF0dGVyeU1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9p
ZCBpbml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tCYXR0ZXJ5UHJvdmlkZXJCYXNlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCmluZGV4IGJiNDBjZDIuLjE2Zjdj
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCkBAIC01NSw3
ICs1NSw3IEBAIFBhc3NSZWZQdHI8V2ViUGFnZUdyb3VwPiBXZWJQYWdlR3JvdXA6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlzCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJQYWdlR3JvdXAoaWRlbnRpZmllciwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIHZpc2li
bGVUb0hpc3RvcnlDbGllbnQpKTsKIH0KIAotUGFzc1JlZjxXZWJQYWdlR3JvdXA+IFdlYlBhZ2VH
cm91cDo6Y3JlYXRlTm9uTnVsbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlzaWJs
ZVRvSW5qZWN0ZWRCdW5kbGUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCkKK1JlZjxXZWJQ
YWdlR3JvdXA+IFdlYlBhZ2VHcm91cDo6Y3JlYXRlTm9uTnVsbChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIGJvb2wgdmlzaWJsZVRvSGlzdG9y
eUNsaWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQYWdlR3JvdXAoaWRlbnRp
ZmllciwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIHZpc2libGVUb0hpc3RvcnlDbGllbnQpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaAppbmRleCAwYjUyNDdiLi4x
MDhhYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3Vw
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oCkBAIC00Miw3
ICs0Miw3IEBAIGNsYXNzIFdlYlBhZ2VHcm91cCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJ
OjpPYmplY3Q6OlR5cGU6OlBhZ2VHcm91cD4gewogcHVibGljOgogICAgIFdlYlBhZ2VHcm91cChj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIgPSBTdHJpbmcoKSwgYm9vbCB2aXNpYmxlVG9JbmplY3Rl
ZEJ1bmRsZSA9IHRydWUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCA9IHRydWUpOwogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciA9IFN0cmluZygpLCBib29sIHZpc2libGVUb0luamVjdGVkQnVuZGxlID0gdHJ1ZSwg
Ym9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50ID0gdHJ1ZSk7Ci0gICAgc3RhdGljIFBhc3NSZWY8
V2ViUGFnZUdyb3VwPiBjcmVhdGVOb25OdWxsKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA9IFN0
cmluZygpLCBib29sIHZpc2libGVUb0luamVjdGVkQnVuZGxlID0gdHJ1ZSwgYm9vbCB2aXNpYmxl
VG9IaXN0b3J5Q2xpZW50ID0gdHJ1ZSk7CisgICAgc3RhdGljIFJlZjxXZWJQYWdlR3JvdXA+IGNy
ZWF0ZU5vbk51bGwoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyID0gU3RyaW5nKCksIGJvb2wgdmlz
aWJsZVRvSW5qZWN0ZWRCdW5kbGUgPSB0cnVlLCBib29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQg
PSB0cnVlKTsKICAgICBzdGF0aWMgV2ViUGFnZUdyb3VwKiBnZXQodWludDY0X3QgcGFnZUdyb3Vw
SUQpOwogCiAgICAgdmlydHVhbCB+V2ViUGFnZUdyb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0JhdHRlcnlQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL0JhdHRlcnlQcm92aWRlci5jcHAKaW5kZXggNjQ1MDU3Ny4uMDU1OGRl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9CYXR0ZXJ5UHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQmF0dGVyeVByb3ZpZGVy
LmNwcApAQCAtNTcsNyArNTcsNyBAQCBCYXR0ZXJ5UHJvdmlkZXI6On5CYXR0ZXJ5UHJvdmlkZXIo
KQogICAgIFdLQmF0dGVyeU1hbmFnZXJTZXRQcm92aWRlcihtX2JhdHRlcnlNYW5hZ2VyLmdldCgp
LCAwKTsKIH0KIAotUGFzc1JlZjxCYXR0ZXJ5UHJvdmlkZXI+IEJhdHRlcnlQcm92aWRlcjo6Y3Jl
YXRlKFdLQ29udGV4dFJlZiBjb250ZXh0KQorUmVmPEJhdHRlcnlQcm92aWRlcj4gQmF0dGVyeVBy
b3ZpZGVyOjpjcmVhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNvbnRl
eHQpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhdHRlcnlQcm92aWRlcihjb250ZXh0KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0JhdHRlcnlQcm92aWRl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9CYXR0ZXJ5UHJvdmlkZXIuaAppbmRl
eCBiYTg4NmM5Li44ZDI5NzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL0JhdHRlcnlQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
QmF0dGVyeVByb3ZpZGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBCYXR0ZXJ5UHJvdmlkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxCYXR0ZXJ5UHJvdmlkZXI+
LCBwdWJsaWMgV2ViQ29yZTo6QmF0dGVyeVByb3ZpZGVyRWZsQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5CYXR0ZXJ5UHJvdmlkZXIoKTsKLSAgICBzdGF0aWMgUGFzc1JlZjxCYXR0ZXJ5
UHJvdmlkZXI+IGNyZWF0ZShXS0NvbnRleHRSZWYpOworICAgIHN0YXRpYyBSZWY8QmF0dGVyeVBy
b3ZpZGVyPiBjcmVhdGUoV0tDb250ZXh0UmVmKTsKIAogICAgIHZvaWQgc3RhcnRVcGRhdGluZygp
OwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBlODg0MjBhLi4wYzNiNmUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAgLTIzLDcgKzIzLDcgQEAK
IAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlck1lZGlhUmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAppbmRleCAxNWZkZDZmLi41MjZhYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZENo
YW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2UqIGZyb21SYW5nZSwgUmFuZ2UqIHRvUmFuZ2UKICAgICAK
IGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKFN0eWxlUHJvcGVydGllcyog
c3R5bGUsIFJhbmdlKiByYW5nZSkKIHsKLSAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
bXV0YWJsZVN0eWxlKHN0eWxlLT5pc011dGFibGUoKSA/IHN0YXRpY19jYXN0PE11dGFibGVTdHls
ZVByb3BlcnRpZXMmPigqc3R5bGUpIDogc3R5bGUtPm11dGFibGVDb3B5KCkpOworICAgIFJlZjxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxlU3R5bGUoc3R5bGUtPmlzTXV0YWJsZSgpID8g
UmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+KHN0YXRpY19jYXN0PE11dGFibGVTdHlsZVByb3Bl
cnRpZXMmPigqc3R5bGUpKSA6IHN0eWxlLT5tdXRhYmxlQ29weSgpKTsKICAgICBib29sIHJlc3Vs
dCA9IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5zaG91bGRBcHBseVN0eWxl
KG1fcGFnZSwgbXV0YWJsZVN0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCksIHJhbmdl
KTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVz
ZXJNZWRpYUNsaWVudC5jcHAKaW5kZXggODBkZDI2My4uYjIyNDE2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNl
ck1lZGlhQ2xpZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCB2b2lkIFdlYlVzZXJNZWRpYUNsaWVu
dDo6cGFnZURlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViVXNlck1l
ZGlhQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IHBy
UmVxdWVzdCkKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihSZWY8
VXNlck1lZGlhUmVxdWVzdD4mJiBwclJlcXVlc3QpCiB7CiAgICAgVXNlck1lZGlhUmVxdWVzdCYg
cmVxdWVzdCA9IHByUmVxdWVzdC5sZWFrUmVmKCk7CiAgICAgbV9wYWdlLnVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcigpLnN0YXJ0UmVxdWVzdChyZXF1ZXN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJN
ZWRpYUNsaWVudC5oCmluZGV4IGY1NzE2NjQuLmVkNmRjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFD
bGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oUGFzc1JlZjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Pikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFJlZjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0
PiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdChXZWJDb3JlOjpV
c2VyTWVkaWFSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAKICAgICBXZWJQYWdlJiBtX3BhZ2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3Bh
dGNoZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVE
aXNwYXRjaGVyLmNwcAppbmRleCAxZDViZTA0Li4wNzYzMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWY8Vmll
d1VwZGF0ZURpc3BhdGNoZXI+IFZpZXdVcGRhdGVEaXNwYXRjaGVyOjpjcmVhdGUoKQorUmVmPFZp
ZXdVcGRhdGVEaXNwYXRjaGVyPiBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6Y3JlYXRlKCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWV3VXBkYXRlRGlzcGF0Y2hlcik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNo
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0
Y2hlci5oCmluZGV4IGI1MzhiYmIuLjk3MGRmOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuaApAQCAtMzAs
MTQgKzMwLDE0IEBACiAKICNpbmNsdWRlICJWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVENTcGluTG9jay5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgVmlld1VwZGF0ZURpc3BhdGNoZXIgOiBwdWJsaWMgSVBDOjpD
b25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmPFZpZXdVcGRhdGVEaXNwYXRjaGVyPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVm
PFZpZXdVcGRhdGVEaXNwYXRjaGVyPiBjcmVhdGUoKTsKICAgICB+Vmlld1VwZGF0ZURpc3BhdGNo
ZXIoKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKik7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2U4
NDRlMC4uMmIzOGU4MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE0LTEyLTEyICBBbmRyZWFzIEtsaW5nICA8YWts
aW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFBhc3NSZWYgd2l0aCBSZWYvUmVmJiYg
YWNyb3NzIHRoZSBib2FyZC4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzOTU4Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1JlZi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwYXNz
V2l0aFJlZik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnBhc3NXaXRoUGFzc1JlZik6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y3JlYXRlVGVzdFZhbHVlKToKKwogMjAxNC0xMi0xMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgVGVzdCBodHRwL3Rlc3RzL2xvYWRpbmcvMzA3
LWFmdGVyLTMwMy1hZnRlci1wb3N0Lmh0bWwgaXMgZmxha3kKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9SZWYuY3BwCmluZGV4IGMzMDA5YTQuLjAyMjdiNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUmVmLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
CiAjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWYuaD4KICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC05OCw5ICs5Nyw5
IEBAIFRFU1QoV1RGX1JlZiwgQXNzaWdubWVudCkKICAgICBBU1NFUlRfU1RSRVEoInJlZihhKSB8
IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQogCi1zdGF0
aWMgUGFzc1JlZjxSZWZMb2dnZXI+IHBhc3NXaXRoUGFzc1JlZihQYXNzUmVmPFJlZkxvZ2dlcj4g
cmVmZXJlbmNlKQorc3RhdGljIFJlZjxSZWZMb2dnZXI+IHBhc3NXaXRoUmVmKFJlZjxSZWZMb2dn
ZXI+JiYgcmVmZXJlbmNlKQogewotICAgIHJldHVybiByZWZlcmVuY2U7CisgICAgcmV0dXJuIFdU
Rjo6bW92ZShyZWZlcmVuY2UpOwogfQogCiBzdGF0aWMgUmVmUHRyPFJlZkxvZ2dlcj4gcGFzc1dp
dGhQYXNzUmVmUHRyKFBhc3NSZWZQdHI8UmVmTG9nZ2VyPiByZWZlcmVuY2UpCkBAIC0xMTUsNyAr
MTE0LDcgQEAgVEVTVChXVEZfUmVmLCBSZXR1cm5WYWx1ZSkKICAgICBEZXJpdmVkUmVmTG9nZ2Vy
IGMoImMiKTsKIAogICAgIHsKLSAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUGFz
c1JlZihhKSk7CisgICAgICAgIFJlZjxSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFJlZihSZWY8UmVm
TG9nZ2VyPihhKSkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5wdHIoKSk7CiAgICAgfQog
ICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKQEAgLTEyNCwyMCArMTIzLDIwIEBAIFRFU1QoV1RGX1JlZiwgUmV0dXJuVmFsdWUpCiAgICAg
ICAgIFJlZjxSZWZMb2dnZXI+IHB0cihhKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIucHRy
KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwotICAgICAgICBwdHIgPSBwYXNzV2l0aFBhc3NS
ZWYoYik7CisgICAgICAgIHB0ciA9IHBhc3NXaXRoUmVmKGIpOwogICAgICAgICBBU1NFUlRfRVEo
JmIsIHB0ci5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgfQogICAgIEFTU0VS
VF9TVFJFUSgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIocGFz
c1dpdGhQYXNzUmVmKGEpKTsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRo
UmVmKGEpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBB
U1NFUlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAK
ICAgICB7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFBhc3NSZWZQdHIo
cGFzc1dpdGhQYXNzUmVmKGEpKSk7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cihwYXNz
V2l0aFBhc3NSZWZQdHIocGFzc1dpdGhSZWYoYSkpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBw
dHIuZ2V0KCkpOwogICAgIH0KICAgICBBU1NFUlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CkBAIC0xNTIsNyArMTUxLDcgQEAgVEVTVChXVEZfUmVmLCBS
ZXR1cm5WYWx1ZSkKIAogICAgIHsKICAgICAgICAgUmVmPERlcml2ZWRSZWZMb2dnZXI+IGRlcml2
ZWRSZWZlcmVuY2UoYSk7Ci0gICAgICAgIFJlZjxSZWZMb2dnZXI+IGJhc2VSZWZlcmVuY2UocGFz
c1dpdGhQYXNzUmVmKGRlcml2ZWRSZWZlcmVuY2UpKTsKKyAgICAgICAgUmVmPFJlZkxvZ2dlcj4g
YmFzZVJlZmVyZW5jZShwYXNzV2l0aFJlZihSZWY8UmVmTG9nZ2VyPihkZXJpdmVkUmVmZXJlbmNl
KSkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIGRlcml2ZWRSZWZlcmVuY2UucHRyKCkpOwogICAg
ICAgICBBU1NFUlRfRVEoJmEsIGJhc2VSZWZlcmVuY2UucHRyKCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKaW5kZXggZTBlMWEyNS4uMDE4
ZDdiOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRl
ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgVEVTVChXVEYsIFJlZkNvdW50ZXIpCiAgICAgLy8KICAgICAvLyAx
KSBSZWZDb3VudGVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CiAgICAgLy8gMikgflJlZkNvdW50
ZXIoKTsKLSAgICAvLyAzKSBQYXNzUmVmPENvdW50PiBjb3VudCgpIGNvbnN0OworICAgIC8vIDMp
IFJlZjxDb3VudD4gY291bnQoKSBjb25zdDsKICAgICAvLyA0KSB1bnNpZ25lZCB2YWx1ZSgpIGNv
bnN0OwogICAgIC8vCiAgICAgLy8gV2UnbGwgdGVzdDoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9SZWZQdHIuY3BwCmluZGV4IDI0YWU5NGQuLmZjOTIyNDYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIFRFU1QoV1RGX1Jl
ZlB0ciwgQXNzaWduUGFzc1JlZlRvUmVmUHRyKQogewogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgi
YSIpOwogICAgIHsKLSAgICAgICAgUGFzc1JlZjxSZWZMb2dnZXI+IHBhc3NSZWYoYSk7CisgICAg
ICAgIFJlZjxSZWZMb2dnZXI+IHBhc3NSZWYoYSk7CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+
IHB0ciA9IFdURjo6bW92ZShwYXNzUmVmKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0
KCkpOwogICAgICAgICBwdHIucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDBhZTg1ZDcuLjc2
MDM4NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxj
dWxhdGlvblZhbHVlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDYWxjRXhwcmVzc2lvbk5vZGUmKSBjb25zdCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIH07CiAKLXN0YXRpYyBQYXNzUmVmPFdlYkNvcmU6
OkNhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZVRlc3RWYWx1ZSgpCitzdGF0aWMgUmVmPFdlYkNvcmU6
OkNhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZVRlc3RWYWx1ZSgpCiB7CiAgICAgYXV0byBub2RlID0g
c3RkOjptYWtlX3VuaXF1ZTxDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGU+KCk7CiAgICAgcmV0
dXJuIFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEY6Om1vdmUobm9kZSksIFdl
YkNvcmU6OkNhbGN1bGF0aW9uUmFuZ2VBbGwpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>